v1.7.6/auto leave and leave message
This commit is contained in:
@@ -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')
|
||||||
|
|||||||
@@ -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' });
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user