* When an admin has marked your camera 'red' for you, the Explicit button at the
top of the page now will require *two* clicks if the user wants to set their
camera back to blue:
On first click, they will get a red ChatClient message explaining that their
cam was most-recently marked red due to a server action (such as a moderator
flagging their cam for them). If they really mean to mark their camera blue,
they are instructed to click it a second time to confirm.
* This behavior only occurs when the most recent NSFW setting was dictated by
the server (e.g. a 'me' event disagreed with the page's local NSFW setting).
The flag is cleared any time the user themself toggles the flag, or when the
first ChatClient warning after a server event is shown.
* The explicit camera settings in the broadcast modal have been rearranged and
reworded.
* Add an 'advanced' webcam feature to automatically broadcast in the future on
page load. The option is only available in the Chat Settings 'Camera' tab
after you are already broadcasting (or rather: when a list of video devices
have become available to the page, indicating the user has possibly granted
permission already).
* WebRTC functionality is now 100% working as intended for Safari and
iPad browsers!
* The legacy WebRTC API had properties like offerToReceiveVideo
available on createOffer(), to set up a receive-only channel, but the
modern WebRTC API had removed these and Safari only supports the
modern API.
* The modern solution for the same feature is to add a recvonly
transceiver to the connection in place of offering a local video/audio
stream to share.
* Try a new strategy to get Apple (iPad/iPhone) webcams to connect.
* "Apple compatibility mode" setting: on by default if iPad/iPhone is
detected or can be opted into in the chat settings Misc tab.
* In Apple compat mode: when you open someone else's webcam, you always
attach your local video on the WebRTC offer. This would normally make
your video auto-open on the remote side, but the previous commit
updates the chat page to ignore offered video if you did not opt-in to
auto-open your viewer's camera.
* This should satisfy the two-way video call limitation in Safari: the
iPad always shares its video and gets video from the person they are
watching.
* If the person they are watching did not auto-open your video: they
ignore the attached video on your offer and don't display it.
Move some chat modals into external components:
* LoginModal
* ExplicitOpenModal
* ReportModal
* The Photo Modal was hoisted into the main index.html page, because it is not
a Vue component and relied on global onclick handlers and the DOM.
Spin off some external JS modules:
* isAppleWebkit moved to lib/browsers.js
* Local Storage management centralized and moved to lib/LocalStorage.js