248 lines
6.5 KiB
JavaScript
248 lines
6.5 KiB
JavaScript
/************************************************************************
|
|
Copyright (C) Ayushya Amitabh - All Rights Reserved
|
|
Unauthorized copying of this file, via any medium is strictly prohibited
|
|
Proprietary and confidential
|
|
Written by Ayushya Amitabh <admin@chromewatchparty.com>, 2020
|
|
https://www.chromewatchparty.com/copyright
|
|
=========================================================================
|
|
ALL CONTENT ON WATCH PARTY'S WEBSITE OR IN WATCH PARTY'S CHROME EXTENSION APP, UNLESS OTHERWISE
|
|
CITED ARE THE SOLE INTELECTUAL PROPERTY OF AYUSHYA AMITABH, AND MAY NOT BE
|
|
COPIED, EDITED, OR REPRODUCED WITHOUT PERMISSION.
|
|
************************************************************************/
|
|
/*global chrome*/
|
|
|
|
const API_HOST = 'https://api.chromewatchparty.com';
|
|
|
|
export const PLAYER_STATUS = {
|
|
PLAYING: 'PLAYING',
|
|
PAUSED: 'PAUSED',
|
|
NOT_PLAYING: 'NOT_PLAYING',
|
|
};
|
|
|
|
export const PLAYER_SOURCE = {
|
|
NETFLIX: 'netflix.',
|
|
AMAZON: 'amazon.',
|
|
PRIMEVIDEO: 'primevideo.',
|
|
HULU: 'hulu.',
|
|
DISNEY: 'disneyplus.',
|
|
YOUTUBE: 'youtube.',
|
|
HBONOW: 'hbonow.',
|
|
HBOMAX: 'hbomax.',
|
|
PEACOCK: 'peacocktv.',
|
|
GOOGLEPLAY: 'play.google.',
|
|
CRUNCHYROLL: 'crunchyroll.',
|
|
APPLE: 'tv.apple.',
|
|
VIKI: 'viki.',
|
|
FUNIMATION: 'funimation.',
|
|
ROOSTERTEETH: 'roosterteeth.',
|
|
LOCAL: 'localhost',
|
|
};
|
|
|
|
export const getPlayerSource = () => {
|
|
const HREF = window.location.href;
|
|
if (HREF.includes(PLAYER_SOURCE.NETFLIX)) return PLAYER_SOURCE.NETFLIX;
|
|
if (HREF.includes(PLAYER_SOURCE.HULU)) return PLAYER_SOURCE.HULU;
|
|
if (HREF.includes(PLAYER_SOURCE.AMAZON)) return PLAYER_SOURCE.AMAZON;
|
|
if (HREF.includes(PLAYER_SOURCE.PRIMEVIDEO)) return PLAYER_SOURCE.AMAZON;
|
|
if (HREF.includes(PLAYER_SOURCE.DISNEY)) return PLAYER_SOURCE.DISNEY;
|
|
if (HREF.includes(PLAYER_SOURCE.YOUTUBE)) return PLAYER_SOURCE.YOUTUBE;
|
|
if (HREF.includes(PLAYER_SOURCE.HBONOW)) return PLAYER_SOURCE.HBONOW;
|
|
if (HREF.includes(PLAYER_SOURCE.HBOMAX)) return PLAYER_SOURCE.HBOMAX;
|
|
if (HREF.includes(PLAYER_SOURCE.PEACOCK)) return PLAYER_SOURCE.PEACOCK;
|
|
if (HREF.includes(PLAYER_SOURCE.GOOGLEPLAY)) return PLAYER_SOURCE.GOOGLEPLAY;
|
|
if (HREF.includes(PLAYER_SOURCE.CRUNCHYROLL)) return PLAYER_SOURCE.CRUNCHYROLL;
|
|
if (HREF.includes(PLAYER_SOURCE.APPLE)) return PLAYER_SOURCE.APPLE;
|
|
if (HREF.includes(PLAYER_SOURCE.VIKI)) return PLAYER_SOURCE.VIKI;
|
|
if (HREF.includes(PLAYER_SOURCE.FUNIMATION)) return PLAYER_SOURCE.FUNIMATION;
|
|
if (HREF.includes(PLAYER_SOURCE.ROOSTERTEETH)) return PLAYER_SOURCE.ROOSTERTEETH;
|
|
if (HREF.includes(PLAYER_SOURCE.LOCAL)) return PLAYER_SOURCE.LOCAL;
|
|
};
|
|
|
|
export const getShowWPButton = () =>
|
|
new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage(
|
|
{
|
|
type: 'IS_HIDDEN',
|
|
},
|
|
(response) => {
|
|
resolve(response);
|
|
}
|
|
);
|
|
});
|
|
|
|
export const getTutorialStatus = () =>
|
|
new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage(
|
|
{
|
|
type: 'GET_TUTORIAL',
|
|
},
|
|
(response) => {
|
|
resolve(response);
|
|
}
|
|
);
|
|
});
|
|
|
|
export const setTutorialStatus = (status) =>
|
|
new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage(
|
|
{
|
|
type: 'SET_TUTORIAL',
|
|
status,
|
|
},
|
|
(response) => {
|
|
resolve(response);
|
|
}
|
|
);
|
|
});
|
|
|
|
export const LocalData = () => {
|
|
return window.localStorage.getItem('WatchParty')
|
|
? JSON.parse(window.localStorage.getItem('WatchParty'))
|
|
: {};
|
|
};
|
|
|
|
export const updateLocalData = (data) => {
|
|
window.localStorage.setItem('WatchParty', JSON.stringify(Object.assign({}, LocalData(), data)));
|
|
};
|
|
|
|
export const removeLocalData = (key) => {
|
|
var data = LocalData();
|
|
delete data[key];
|
|
window.localStorage.setItem('WatchParty', JSON.stringify(data));
|
|
};
|
|
|
|
export const emptyLocalData = () => {
|
|
window.localStorage.removeItem('WatchParty');
|
|
};
|
|
|
|
export const scrollThread = () => {
|
|
setTimeout(function () {
|
|
const pcc = document.querySelector('.thread-wrapper');
|
|
if (pcc) pcc.scrollTop = pcc.scrollHeight;
|
|
}, 250);
|
|
};
|
|
|
|
export const getUserUid = async () =>
|
|
new Promise((resolve, reject) => {
|
|
chrome.runtime.sendMessage(
|
|
{
|
|
type: 'GET_AUTH',
|
|
},
|
|
(response) => {
|
|
const { uid } = response;
|
|
updateLocalData({ userUid: uid });
|
|
resolve(uid);
|
|
}
|
|
);
|
|
});
|
|
|
|
export const fetcher = async ({ endpoint, method, ...args }) => {
|
|
const url = `${API_HOST}/${endpoint}`;
|
|
return new Promise((resolve, reject) =>
|
|
chrome.runtime.sendMessage(
|
|
{
|
|
type: 'API_CALL',
|
|
url,
|
|
method,
|
|
...args,
|
|
},
|
|
(response) => {
|
|
if (response.status > 299) reject(response);
|
|
else resolve({ json: () => response });
|
|
}
|
|
)
|
|
);
|
|
};
|
|
|
|
export const webhookFetcher = async ({ endpoint, ...args }) => {
|
|
return new Promise((resolve, reject) =>
|
|
chrome.runtime.sendMessage(
|
|
{
|
|
type: 'API_CALL',
|
|
url: endpoint,
|
|
method: 'POST',
|
|
...args,
|
|
},
|
|
(response) => {
|
|
if (response.status > 299) reject(response);
|
|
else resolve({ json: () => response });
|
|
}
|
|
)
|
|
);
|
|
};
|
|
|
|
export const CreateRoomApi = async (data) => {
|
|
return fetcher({
|
|
endpoint: 'create',
|
|
method: 'POST',
|
|
body: JSON.stringify(data),
|
|
});
|
|
};
|
|
|
|
export const JoinRoomApi = async (data) => {
|
|
return fetcher({
|
|
endpoint: 'join',
|
|
method: 'POST',
|
|
body: JSON.stringify(data),
|
|
});
|
|
};
|
|
|
|
export const SendMessageApi = async (data) => {
|
|
return fetcher({
|
|
endpoint: 'message',
|
|
method: 'POST',
|
|
body: JSON.stringify(data),
|
|
});
|
|
};
|
|
|
|
export const LeaveRoomApi = async (data) => {
|
|
return fetcher({
|
|
endpoint: `leave/${data.partyName}/users/${data.userUid}`,
|
|
method: 'DELETE',
|
|
});
|
|
};
|
|
|
|
export const DeleteRoomApi = async (data) => {
|
|
return fetcher({
|
|
endpoint: `delete/${data.partyName}`,
|
|
method: 'DELETE',
|
|
});
|
|
};
|
|
|
|
export const UpdatePlayerApi = async (data) => {
|
|
return fetcher({
|
|
endpoint: 'updatePlayer',
|
|
method: 'POST',
|
|
body: JSON.stringify(data),
|
|
});
|
|
};
|
|
|
|
export const GetVoxeetTokenApi = async (data) => {
|
|
return fetcher({
|
|
endpoint: `validator/${data.partyName}`,
|
|
method: 'GET',
|
|
});
|
|
};
|
|
|
|
export const GetRefreshedVoxeetTokenApi = async (data) => {
|
|
return fetcher({
|
|
endpoint: `refresher/${data.token}`,
|
|
method: 'GET',
|
|
});
|
|
};
|
|
|
|
export const UpdateVoxeetApi = async (data) => {
|
|
return fetcher({
|
|
endpoint: 'updateVoxeet',
|
|
method: 'POST',
|
|
body: JSON.stringify(data),
|
|
});
|
|
};
|
|
|
|
export const UpdateAdminOnly = async (data) => {
|
|
return fetcher({
|
|
endpoint: `updateAdminOnly/${data.partyName}/${data.adminOnly}`,
|
|
method: 'PUT',
|
|
});
|
|
};
|