v1.7.6/auto leave and leave message

This commit is contained in:
2020-09-16 11:45:34 -04:00
parent e18a2271d8
commit ca73853408
4 changed files with 78 additions and 32 deletions
+43 -5
View File
@@ -41,10 +41,13 @@ const firebaseConfig = {
}; };
firebase.initializeApp(firebaseConfig); firebase.initializeApp(firebaseConfig);
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL);
const isAuthed = () => true && firebase.auth().currentUser; const isAuthed = () => true && firebase.auth().currentUser;
const doAuth = () => firebase.auth().signInAnonymously(); const doAuth = () =>
firebase
.auth()
.setPersistence(firebase.auth.Auth.Persistence.LOCAL)
.then(() => firebase.auth().signInAnonymously());
if (!isAuthed()) doAuth(); if (!isAuthed()) doAuth();
else currentUser = firebase.auth().currentUser; else currentUser = firebase.auth().currentUser;
@@ -91,12 +94,44 @@ const fetcher = async (request, sendResponse) => {
); );
}; };
const getActiveParties = () =>
window.localStorage.getItem('activeParties')
? JSON.parse(window.localStorage.getItem('activeParties'))
: {};
const updateActiveParties = (partyName, doDelete = false) => {
var activeParties = getActiveParties();
if (activeParties[partyName] && doDelete === true) {
if (new Date().getTime() - activeParties[partyName].activeAt > 60000) {
fetcher(
{
url: `https://api.chromewatchparty.com/leave/${partyName}/users/${activeParties[partyName].uid}`,
method: 'DELETE',
},
(v) => console.info('[AUTO-LEAVE]', v)
);
delete activeParties[partyName];
}
} else {
if (partyName) {
activeParties[partyName] = {
activeAt: new Date().getTime(),
uid: currentUser.uid,
};
}
}
window.localStorage.setItem('activeParties', JSON.stringify(activeParties));
};
const waitAndLeaveParty = (partyName) => {
setTimeout(() => updateActiveParties(partyName, true), 90000);
};
CHROME_OR_BROWSER.runtime.onInstalled.addListener((details) => { CHROME_OR_BROWSER.runtime.onInstalled.addListener((details) => {
if (details.reason) { if (details.reason) {
if (details.reason === 'install') { if (details.reason === 'install') {
if (window.localStorage.getItem('watchPartyVersion')) { if (window.localStorage.getItem('watchPartyVersion')) {
if (window.localStorage.getItem('watchPartyVersion') !== APP_VERSION) { if (window.localStorage.getItem('watchPartyVersion') !== APP_VERSION) {
if (window.localStorage.getItem('showChangelog') === true) { if (window.localStorage.getItem('showChangelog') === 'true') {
CHROME_OR_BROWSER.tabs.create({ CHROME_OR_BROWSER.tabs.create({
url: `http://www.${BASE_URL}.com/changes/v${APP_VERSION}`, url: `http://www.${BASE_URL}.com/changes/v${APP_VERSION}`,
active: true, active: true,
@@ -114,7 +149,7 @@ CHROME_OR_BROWSER.runtime.onInstalled.addListener((details) => {
} else if (details.reason === 'update') { } else if (details.reason === 'update') {
if (window.localStorage.getItem('watchPartyVersion')) { if (window.localStorage.getItem('watchPartyVersion')) {
if (window.localStorage.getItem('watchPartyVersion') !== APP_VERSION) { if (window.localStorage.getItem('watchPartyVersion') !== APP_VERSION) {
if (window.localStorage.getItem('showChangelog') === true) { if (window.localStorage.getItem('showChangelog') === 'true') {
CHROME_OR_BROWSER.tabs.create({ CHROME_OR_BROWSER.tabs.create({
url: `http://www.${BASE_URL}.com/changes/v${APP_VERSION}`, url: `http://www.${BASE_URL}.com/changes/v${APP_VERSION}`,
active: true, active: true,
@@ -123,7 +158,7 @@ CHROME_OR_BROWSER.runtime.onInstalled.addListener((details) => {
window.localStorage.setItem('watchPartyVersion', APP_VERSION); window.localStorage.setItem('watchPartyVersion', APP_VERSION);
} }
} else { } else {
if (window.localStorage.getItem('showChangelog') === true) { if (window.localStorage.getItem('showChangelog') === 'true') {
CHROME_OR_BROWSER.tabs.create({ CHROME_OR_BROWSER.tabs.create({
url: `http://www.${BASE_URL}.com/changes/v${APP_VERSION}`, url: `http://www.${BASE_URL}.com/changes/v${APP_VERSION}`,
active: true, active: true,
@@ -184,10 +219,13 @@ CHROME_OR_BROWSER.runtime.onConnect.addListener((port) => {
port.userListener && port.userListener(); port.userListener && port.userListener();
port.statusListener && port.statusListener(); port.statusListener && port.statusListener();
port.messageListener && port.messageListener(); port.messageListener && port.messageListener();
waitAndLeaveParty(port.partyName, port.uid);
}); });
port.onMessage.addListener((request) => { port.onMessage.addListener((request) => {
const { type, roomId, roomPin } = request; const { type, roomId, roomPin } = request;
if (type === 'INIT') { if (type === 'INIT') {
port.partyName = roomId;
updateActiveParties(roomId);
port.roomListener = firebase port.roomListener = firebase
.firestore() .firestore()
.collection('rooms') .collection('rooms')
+19
View File
@@ -2,6 +2,14 @@ const admin = require('firebase-admin');
module.exports = async (req, res) => { module.exports = async (req, res) => {
console.log('Requested Leave - UID - ', req.params.uid, '\n\tRoom - ', req.params.rid); console.log('Requested Leave - UID - ', req.params.uid, '\n\tRoom - ', req.params.rid);
const userName = await admin
.firestore()
.collection('rooms')
.doc(req.params.rid)
.collection('users')
.doc(req.params.uid)
.get()
.then((userSnap) => userSnap.data().name);
await admin await admin
.firestore() .firestore()
.collection('rooms') .collection('rooms')
@@ -15,5 +23,16 @@ module.exports = async (req, res) => {
err err
) )
); );
admin
.firestore()
.collection('rooms')
.doc(req.params.rid)
.collection('messages')
.add({
uid: '<system>',
time: new Date(),
name: '',
text: `${userName} left the party.`,
});
res.status(200).send({ message: 'Left the party' }); res.status(200).send({ message: 'Left the party' });
}; };
-11
View File
@@ -120,17 +120,6 @@ COPIED, EDITED, OR REPRODUCED WITHOUT PERMISSION.
</a> </a>
</div> </div>
<div class="overlap"> <div class="overlap">
<div class="info">
<div class="info-card" data-font="sans-bold">🌐</div>
<div class="info-text">
<h4 class="sub-title" data-font="sans-bold">FIREFOX</h4>
<p class="body" data-font="sans">
If you're here for the Firefox Add-On, it will be available soon. It's pending approval
from Mozilla.
</p>
<a href="/" class="underlink" data-font="sans-bold">GO HOME</a>
</div>
</div>
<div class="info"> <div class="info">
<div class="info-card" data-font="sans-bold">404</div> <div class="info-card" data-font="sans-bold">404</div>
<div class="info-text"> <div class="info-text">
+16 -16
View File
@@ -179,22 +179,22 @@ COPIED, EDITED, OR REPRODUCED WITHOUT PERMISSION.
</div> </div>
</div> </div>
<div class="versions card-grid"> <div class="versions card-grid">
<a href="/changes//v1.5.2/" data-font="sans-bold" class="support-card">v1.5.2</a> <a href="/changes/v1.5.2/" data-font="sans-bold" class="support-card">v1.5.2</a>
<a href="/changes//v1.6.0/" data-font="sans-bold" class="support-card">v1.6.0</a> <a href="/changes/v1.6.0/" data-font="sans-bold" class="support-card">v1.6.0</a>
<a href="/changes//v1.6.1/" data-font="sans-bold" class="support-card">v1.6.1</a> <a href="/changes/v1.6.1/" data-font="sans-bold" class="support-card">v1.6.1</a>
<a href="/changes//v1.6.2/" data-font="sans-bold" class="support-card">v1.6.2</a> <a href="/changes/v1.6.2/" data-font="sans-bold" class="support-card">v1.6.2</a>
<a href="/changes//v1.6.3/" data-font="sans-bold" class="support-card">v1.6.3</a> <a href="/changes/v1.6.3/" data-font="sans-bold" class="support-card">v1.6.3</a>
<a href="/changes//v1.6.4/" data-font="sans-bold" class="support-card">v1.6.4</a> <a href="/changes/v1.6.4/" data-font="sans-bold" class="support-card">v1.6.4</a>
<a href="/changes//v1.6.5/" data-font="sans-bold" class="support-card">v1.6.5</a> <a href="/changes/v1.6.5/" data-font="sans-bold" class="support-card">v1.6.5</a>
<a href="/changes//v1.6.6/" data-font="sans-bold" class="support-card">v1.6.6</a> <a href="/changes/v1.6.6/" data-font="sans-bold" class="support-card">v1.6.6</a>
<a href="/changes//v1.6.7/" data-font="sans-bold" class="support-card">v1.6.7</a> <a href="/changes/v1.6.7/" data-font="sans-bold" class="support-card">v1.6.7</a>
<a href="/changes//v1.7.0/" data-font="sans-bold" class="support-card">v1.7.0</a> <a href="/changes/v1.7.0/" data-font="sans-bold" class="support-card">v1.7.0</a>
<a href="/changes//v1.7.1/" data-font="sans-bold" class="support-card">v1.7.1</a> <a href="/changes/v1.7.1/" data-font="sans-bold" class="support-card">v1.7.1</a>
<a href="/changes//v1.7.2/" data-font="sans-bold" class="support-card">v1.7.2</a> <a href="/changes/v1.7.2/" data-font="sans-bold" class="support-card">v1.7.2</a>
<a href="/changes//v1.7.3/" data-font="sans-bold" class="support-card">v1.7.3</a> <a href="/changes/v1.7.3/" data-font="sans-bold" class="support-card">v1.7.3</a>
<a href="/changes//v1.7.4/" data-font="sans-bold" class="support-card">v1.7.4</a> <a href="/changes/v1.7.4/" data-font="sans-bold" class="support-card">v1.7.4</a>
<a href="/changes//v1.7.5/" data-font="sans-bold" class="support-card">v1.7.5</a> <a href="/changes/v1.7.5/" data-font="sans-bold" class="support-card">v1.7.5</a>
<a href="/changes//v1.7.6/" data-font="sans-bold" class="support-card">v1.7.6</a> <a href="/changes/v1.7.6/" data-font="sans-bold" class="support-card">v1.7.6</a>
</div> </div>
<footer> <footer>