added check for browser extension

optimize-reads
Simon Huang 5 years ago
parent b4f33944a6
commit b8c051f53f

@ -36,6 +36,6 @@ chrome.webRequest.onHeadersReceived.addListener(
responseHeaders: details.responseHeaders.filter((header) => !IFRAME_HEADERS.includes(header.name.toLowerCase())), responseHeaders: details.responseHeaders.filter((header) => !IFRAME_HEADERS.includes(header.name.toLowerCase())),
}; };
}, },
{ urls: ['<all_urls>'] }, { urls: ['https://www.netflix.com/*', 'http://localhost/*', 'https://turtletv.app/*'] },
isFirefox ? ['blocking', 'responseHeaders'] : ['blocking', 'responseHeaders', 'extraHeaders'] isFirefox ? ['blocking', 'responseHeaders'] : ['blocking', 'responseHeaders', 'extraHeaders']
); );

@ -18,8 +18,14 @@
} }
], ],
"web_accessible_resources": ["netflix.js"], "web_accessible_resources": ["netflix.js"],
"permissions": ["webRequest", "webRequestBlocking", "<all_urls>"], "permissions": [
"version": "1.0", "webRequest",
"webRequestBlocking",
"https://www.netflix.com/",
"http://localhost/*",
"https://turtletv.app/"
],
"version": "1.1",
"icons": { "icons": {
"48": "icon_48.png" "48": "icon_48.png"
} }

@ -8,12 +8,11 @@ window.parent.postMessage('video ready', '*');
player.addEventListener('play', (ev) => { player.addEventListener('play', (ev) => {
window.parent.postMessage({ type: 'play', time: player.currentTime }, '*'); window.parent.postMessage({ type: 'play', time: player.currentTime }, '*');
}); });
player.addEventListener('pause', (ev) => { player.addEventListener('pause', (ev) => {
window.parent.postMessage({ type: 'pause', time: player.currentTime }, '*'); window.parent.postMessage({ type: 'pause', time: player.currentTime }, '*');
}); });
// Subscribe listener for syncing requests // Listen for syncing requests
window.addEventListener('message', (ev) => { window.addEventListener('message', (ev) => {
let type = ev.data.type; let type = ev.data.type;

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

@ -7,7 +7,7 @@
font-size: 20px; font-size: 20px;
} }
.firefox-link { .ext-link {
display: inline-block; display: inline-block;
} }
@ -16,3 +16,9 @@
width: 172px; width: 172px;
padding-left: 10px; padding-left: 10px;
} }
.chrome-ext-img {
height: 62px;
width: 220px;
padding-left: 10px;
}

@ -1,19 +1,19 @@
import { IonContent, IonImg, IonListHeader, IonRouterLink } from '@ionic/react'; import { IonContent, IonImg, IonListHeader, IonRouterLink } from '@ionic/react';
import React from 'react'; import React from 'react';
import firefox from '../../assets/get-firefox-addon.png'; import firefox from '../../assets/get-firefox-addon.png';
import chrome from '../../assets/get-chrome-ext.png';
import './GetExtension.css'; import './GetExtension.css';
const GetExtension: React.FC = () => { const GetExtension: React.FC = () => {
return ( return (
<IonContent class="extension-content"> <IonContent class="extension-content">
<IonListHeader>Browser extension installation is required.</IonListHeader> <IonListHeader>Browser extension installation is required.</IonListHeader>
<IonRouterLink <IonRouterLink href="https://addons.mozilla.org/en-US/firefox/addon/turtletv/" target="_blank" class="ext-link">
href="https://addons.mozilla.org/en-US/firefox/addon/turtletv/"
target="_blank"
class="firefox-link"
>
<IonImg src={firefox} alt="Get the extension for Firefox" class="firefox-ext-img"></IonImg> <IonImg src={firefox} alt="Get the extension for Firefox" class="firefox-ext-img"></IonImg>
</IonRouterLink> </IonRouterLink>
<IonRouterLink target="_blank" class="ext-link">
<IonImg src={chrome} alt="Get the extension for Chrome" class="chrome-ext-img"></IonImg>
</IonRouterLink>
</IonContent> </IonContent>
); );
}; };

@ -23,7 +23,6 @@ const SubscriptionFrame: React.FC<SubscriptionFrameProps> = ({ ownerId, userId,
if (data.error) { if (data.error) {
reject(false); reject(false);
} else { } else {
console.log(data.version);
resolve(true); resolve(true);
} }
}; };
@ -87,7 +86,7 @@ const SubscriptionFrame: React.FC<SubscriptionFrameProps> = ({ ownerId, userId,
}); });
}; };
// Subscribe listener for updateState requests from Firebase (owner only) // Listen for updateState requests from Firebase (owner only)
useEffect(() => { useEffect(() => {
if (ownerId === userId) { if (ownerId === userId) {
const roomRef = db.collection('rooms').doc(roomId); const roomRef = db.collection('rooms').doc(roomId);
@ -151,7 +150,7 @@ const SubscriptionFrame: React.FC<SubscriptionFrameProps> = ({ ownerId, userId,
frameRef.current?.contentWindow?.postMessage({ type: 'playing', playing: isPlaying }, '*'); frameRef.current?.contentWindow?.postMessage({ type: 'playing', playing: isPlaying }, '*');
}; };
// listen to 'states' collection for video state changes from owner // Listen to 'states' collection for video state changes from owner
const stateUnsubscribe = stateRef.onSnapshot(async (docSnapshot) => { const stateUnsubscribe = stateRef.onSnapshot(async (docSnapshot) => {
const actual = docSnapshot.data(); const actual = docSnapshot.data();
if (allowUpdate) { if (allowUpdate) {

@ -52,7 +52,7 @@ ion-title {
} }
.paste-input { .paste-input {
margin-left: 2px; margin-left: 4px;
text-align: left; text-align: left;
font-size: 14px; font-size: 14px;
border: 1px solid var(--ion-color-secondary); border: 1px solid var(--ion-color-secondary);

@ -89,7 +89,7 @@ const Room: React.FC<RouteComponentProps<{ roomId: string }>> = ({ match }) => {
try { try {
await roomRef.update({ userCount: increment }); await roomRef.update({ userCount: increment });
roomRef.onDisconnect().update({ userCount: decrement }); roomRef.onDisconnect().update({ userCount: decrement });
availableRef.child(roomId).set({ name: 'Room Name', createdAt: new Date().toISOString() }); availableRef.set({ name: 'Room Name', createdAt: new Date().toISOString() });
} catch (err) { } catch (err) {
console.log(err); console.log(err);
} }

Loading…
Cancel
Save