v1.7.8/release

- Video Listener Optimizations
- Auto Leave Fix
- Edge support
- Admin Dashboard Update
- Vimeo & Dailymotion
This commit is contained in:
2020-11-16 23:06:44 -05:00
parent cfe42bd4aa
commit 16a11f7163
66 changed files with 2559 additions and 1114 deletions
+118 -112
View File
@@ -15,29 +15,29 @@ COPIED, EDITED, OR REPRODUCED WITHOUT PERMISSION.
let CHROME_OR_BROWSER = chrome || browser;
let currentUser;
let BASE_URL = 'chromewatchparty';
let BASE_URL = "chromewatchparty";
try {
if (browser) {
BASE_URL = 'firefoxwatchparty';
console.info('FIREFOX ENV');
BASE_URL = "firefoxwatchparty";
console.info("FIREFOX ENV");
}
} catch (err) {
console.info('CHROME ENV');
console.info("CHROME ENV");
}
const APP_VERSION = '1.7.8';
const APP_VERSION_STRING = APP_VERSION.replace(/\./g, '');
const APP_VERSION = "1.7.8";
const APP_VERSION_STRING = APP_VERSION.replace(/\./g, "");
const firebaseConfig = {
apiKey: 'AIzaSyCJLuYpzXLDRmu2ttzFuSGmYcpFxqToWFU',
authDomain: 'watch-party-crx.firebaseapp.com',
databaseURL: 'https://watch-party-crx.firebaseio.com',
projectId: 'watch-party-crx',
storageBucket: 'watch-party-crx.appspot.com',
messagingSenderId: '712242707190',
appId: '1:712242707190:web:65fa7f772e30da364b0ad7',
measurementId: 'G-EZS4PEVG4T',
apiKey: "AIzaSyCJLuYpzXLDRmu2ttzFuSGmYcpFxqToWFU",
authDomain: "watch-party-crx.firebaseapp.com",
databaseURL: "https://watch-party-crx.firebaseio.com",
projectId: "watch-party-crx",
storageBucket: "watch-party-crx.appspot.com",
messagingSenderId: "712242707190",
appId: "1:712242707190:web:65fa7f772e30da364b0ad7",
measurementId: "G-EZS4PEVG4T",
};
firebase.initializeApp(firebaseConfig);
@@ -72,8 +72,8 @@ const fetcher = async (request, sendResponse) => {
method,
headers: {
Authorization: `Token ${idToken}:${firebase.auth().currentUser.uid}`,
'Access-Control-Allow-Origin': '*',
'Keep-Alive': true,
"Access-Control-Allow-Origin": "*",
"Keep-Alive": true,
},
...request,
})
@@ -95,141 +95,145 @@ const fetcher = async (request, sendResponse) => {
};
const getActiveParties = () =>
window.localStorage.getItem('activeParties')
? JSON.parse(window.localStorage.getItem('activeParties'))
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,
};
if (partyName !== "WATCH_PARTY_STATUS") {
var activeParties = getActiveParties();
if (activeParties[partyName] && doDelete === true) {
if (
Math.round(performance.now() - 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: performance.now(),
uid: currentUser.uid,
};
}
}
window.localStorage.setItem("activeParties", JSON.stringify(activeParties));
}
window.localStorage.setItem('activeParties', JSON.stringify(activeParties));
};
const waitAndLeaveParty = (partyName) => {
updateActiveParties(partyName);
setTimeout(() => updateActiveParties(partyName, true), 90000);
};
CHROME_OR_BROWSER.runtime.onInstalled.addListener((details) => {
if (details.reason) {
if (details.reason === 'install') {
if (window.localStorage.getItem('watchPartyVersion')) {
if (window.localStorage.getItem('watchPartyVersion') !== APP_VERSION) {
if (window.localStorage.getItem('showChangelog') === 'true') {
if (details.reason === "install") {
if (window.localStorage.getItem("watchPartyVersion")) {
if (window.localStorage.getItem("watchPartyVersion") !== APP_VERSION) {
if (window.localStorage.getItem("showChangelog") === "true") {
CHROME_OR_BROWSER.tabs.create({
url: `http://www.${BASE_URL}.com/changes/v${APP_VERSION}`,
active: true,
});
}
window.localStorage.setItem('watchPartyVersion', APP_VERSION);
window.localStorage.setItem("watchPartyVersion", APP_VERSION);
}
} else {
CHROME_OR_BROWSER.tabs.create({
url: `https://www.${BASE_URL}.com/welcome`,
active: true,
});
window.localStorage.setItem('watchPartyVersion', APP_VERSION);
window.localStorage.setItem("watchPartyVersion", APP_VERSION);
}
} else if (details.reason === 'update') {
if (window.localStorage.getItem('watchPartyVersion')) {
if (window.localStorage.getItem('watchPartyVersion') !== APP_VERSION) {
if (window.localStorage.getItem('showChangelog') === 'true') {
} else if (details.reason === "update") {
if (window.localStorage.getItem("watchPartyVersion")) {
if (window.localStorage.getItem("watchPartyVersion") !== APP_VERSION) {
if (window.localStorage.getItem("showChangelog") === "true") {
CHROME_OR_BROWSER.tabs.create({
url: `http://www.${BASE_URL}.com/changes/v${APP_VERSION}`,
active: true,
});
}
window.localStorage.setItem('watchPartyVersion', APP_VERSION);
window.localStorage.setItem("watchPartyVersion", APP_VERSION);
}
} else {
if (window.localStorage.getItem('showChangelog') === 'true') {
if (window.localStorage.getItem("showChangelog") === "true") {
CHROME_OR_BROWSER.tabs.create({
url: `http://www.${BASE_URL}.com/changes/v${APP_VERSION}`,
active: true,
});
}
window.localStorage.setItem('watchPartyVersion', APP_VERSION);
window.localStorage.setItem("watchPartyVersion", APP_VERSION);
}
}
}
});
CHROME_OR_BROWSER.runtime.onMessage.addListener((request, sender, sendResponse) => {
const { type } = request;
switch (type) {
case 'API_CALL':
fetcher(request, sendResponse);
break;
case 'GET_AUTH':
sendResponse({ uid: currentUser.uid });
break;
case 'GET_PARTIES':
sendResponse(
window.localStorage.getItem('parties')
? JSON.parse(window.localStorage.getItem('parties'))
: []
);
break;
case 'EMPTY_PARTIES':
window.localStorage.removeItem('parties');
break;
case 'IS_HIDDEN':
sendResponse(
window.localStorage.getItem('showWPButton')
? JSON.parse(window.localStorage.getItem('showWPButton'))
: true
);
break;
case 'GET_TUTORIAL':
sendResponse(
window.localStorage.getItem('tutorialComplete')
? JSON.parse(window.localStorage.getItem('tutorialComplete'))
: false
);
break;
case 'SET_TUTORIAL':
window.localStorage.setItem('tutorialComplete', request.status);
break;
default:
console.warn('Unknown message type: <', type, '>');
break;
CHROME_OR_BROWSER.runtime.onMessage.addListener(
(request, sender, sendResponse) => {
const { type } = request;
switch (type) {
case "API_CALL":
fetcher(request, sendResponse);
break;
case "GET_AUTH":
sendResponse({ uid: currentUser.uid });
break;
case "GET_PARTIES":
sendResponse(
window.localStorage.getItem("parties")
? JSON.parse(window.localStorage.getItem("parties"))
: []
);
break;
case "EMPTY_PARTIES":
window.localStorage.removeItem("parties");
break;
case "IS_HIDDEN":
sendResponse(
window.localStorage.getItem("showWPButton")
? JSON.parse(window.localStorage.getItem("showWPButton"))
: true
);
break;
case "GET_TUTORIAL":
sendResponse(
window.localStorage.getItem("tutorialComplete")
? JSON.parse(window.localStorage.getItem("tutorialComplete"))
: false
);
break;
case "SET_TUTORIAL":
window.localStorage.setItem("tutorialComplete", request.status);
break;
default:
console.warn("Unknown message type: <", type, ">");
break;
}
return true;
}
return true;
});
);
CHROME_OR_BROWSER.runtime.onConnect.addListener((port) => {
port.onDisconnect.addListener(() => {
updateActiveParties(port.name);
port.roomListener && port.roomListener();
port.userListener && port.userListener();
port.statusListener && port.statusListener();
port.messageListener && port.messageListener();
waitAndLeaveParty(port.partyName, port.uid);
setTimeout(() => updateActiveParties(port.name, true), 60000);
});
updateActiveParties(port.name);
port.onMessage.addListener((request) => {
const { type, roomId, roomPin } = request;
if (type === 'INIT') {
if (type === "INIT") {
port.partyName = roomId;
updateActiveParties(roomId);
port.roomListener = firebase
.firestore()
.collection('rooms')
.collection("rooms")
.doc(roomId)
.onSnapshot(
(snap) => {
@@ -243,14 +247,16 @@ CHROME_OR_BROWSER.runtime.onConnect.addListener((port) => {
);
port.userListener = firebase
.firestore()
.collection('rooms')
.collection("rooms")
.doc(roomId)
.collection('users')
.collection("users")
.onSnapshot(
(snap) => {
if (snap) {
const isAdmin = snap.docs
.filter((user) => user.id === firebase.auth().currentUser.uid)[0]
.filter(
(user) => user.id === firebase.auth().currentUser.uid
)[0]
.data().admin;
const users = snap.docs.map((userSnap) => userSnap.data().name);
port.postMessage({ admin: isAdmin, users });
@@ -262,10 +268,10 @@ CHROME_OR_BROWSER.runtime.onConnect.addListener((port) => {
);
port.messageListener = firebase
.firestore()
.collection('rooms')
.collection("rooms")
.doc(roomId)
.collection('messages')
.orderBy('time')
.collection("messages")
.orderBy("time")
.onSnapshot(
(snap) => {
if (snap) {
@@ -279,18 +285,18 @@ CHROME_OR_BROWSER.runtime.onConnect.addListener((port) => {
port.postMessage({ isError: true, ...err });
}
);
if (window.localStorage.getItem('parties')) {
var existing = JSON.parse(window.localStorage.getItem('parties'));
if (window.localStorage.getItem("parties")) {
var existing = JSON.parse(window.localStorage.getItem("parties"));
if (!(existing.filter((i) => i.name === roomId).length > 0)) {
existing.push({
name: roomId,
pin: roomPin,
});
window.localStorage.setItem('parties', JSON.stringify(existing));
window.localStorage.setItem("parties", JSON.stringify(existing));
}
} else {
window.localStorage.setItem(
'parties',
"parties",
JSON.stringify([
{
name: roomId,
@@ -299,11 +305,11 @@ CHROME_OR_BROWSER.runtime.onConnect.addListener((port) => {
])
);
}
} else if (type === 'STATUS') {
} else if (type === "STATUS") {
port.statusListener = firebase
.firestore()
.collection('server')
.doc('status')
.collection("server")
.doc("status")
.onSnapshot(
(statusSnap) => {
port.postMessage({