* The /ban command doesn't require the target user to be online at the
time of the ban.
* Update the presence messages so they will generally only go to the
primary (first) public channel, and also to another public channel if
the user is currently looking at one of the others.
* Re-set user's status if they disconnect and reconnect
* Remove "(offline)" text next to ChatServer/ChatClient messages
* Make names and pictures in presence messages clickable to open profile
cards
* If a user expressly closes a webcam (by clicking the 'X' button),
record this intent so that the webcam will not auto-open in case the
"auto-open my viewer's camera" happens again. Only clear the expressly
close intent when the user expressly clicks the video button on the
Who List to open someone's camera back up.
* Fix some bugs around booting and muting from cameras:
* If you boot someone off your camera, you can not open THEIR camera
anymore (similar to muting them)
* When opening a user who auto-opens your camera back: do not attach
your local video if you are an Admin and you have previously
muted/booted that user from your camera.
* Draw the slash mark over videos that you can not re-open because you
had booted that user off your camera.
* Add profile modal popups and Webhook support to get more detailed user
info from your website.
* Add "unboot" command, available in the profile modal.
* In place of the Help and Settings buttons, add a hamburger menu
dropdown and place the links under there.
* Also in the dropdown is Close All Cameras and Mute All Cameras (if you
have any cams open; the links are hidden if not)
* Also in the dropdown add a Logout button that just links to a new
/logout route in order to unload the page and align with some users'
expectations (not knowing closing out of the chat page was enough to
log out of the room before)
* Bring back "(offline)" indicators when a user is no longer in the
room.
Changes to the chat server:
* Blocking will not apply to admin user accounts (operators)
* Users who block an admin will instead mute them, but the admin can
still DM them if required
* Messages to VIP channels are broadcast to admins even if they are not
VIPs, e.g. so moderator chatbots can see
* On the Who List: VIP-only cameras to highlight with the VIP background
color on those buttons
Spin out components for:
* MessageBox: draw a chat message in the chat history panel as well as reused
in the Report Modal.
* WhoListRow: provides a consistent UX for the Who List and Watching tab. On
the Watching tab, the video button is replaced with the boot from video.
Other changes:
* Move VideoFlag into its own separate ES module.
* Emoji available reactions are moved into MessageBox.
* On WhoListRow: usernames are clickable to also open their profile page.
* On WhoListRow: the Watching tab is now sortable and follows the user's
sort selection like the Online tab does.
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