diff --git a/package-lock.json b/package-lock.json
index 82f3d994..c30d3000 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "ttv-lol-pro",
- "version": "2.2.0",
+ "version": "2.2.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ttv-lol-pro",
- "version": "2.2.0",
+ "version": "2.2.1",
"license": "GPL-3.0",
"dependencies": {
"bowser": "^2.11.0",
diff --git a/package.json b/package.json
index db0806bb..44fda86e 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ttv-lol-pro",
- "version": "2.2.0",
+ "version": "2.2.1",
"description": "TTV LOL PRO removes most livestream ads from Twitch.",
"@parcel/bundler-default": {
"minBundles": 10000000,
diff --git a/src/manifest.chromium.json b/src/manifest.chromium.json
index 7b0d9d7d..4be563b6 100644
--- a/src/manifest.chromium.json
+++ b/src/manifest.chromium.json
@@ -2,7 +2,7 @@
"manifest_version": 3,
"name": "TTV LOL PRO",
"description": "TTV LOL PRO removes most livestream ads from Twitch.",
- "version": "2.2.0",
+ "version": "2.2.1",
"background": {
"service_worker": "background/background.ts",
"type": "module"
diff --git a/src/manifest.firefox.json b/src/manifest.firefox.json
index 5ecd3e30..f9833f65 100644
--- a/src/manifest.firefox.json
+++ b/src/manifest.firefox.json
@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "TTV LOL PRO",
"description": "TTV LOL PRO removes most livestream ads from Twitch.",
- "version": "2.2.0",
+ "version": "2.2.1",
"background": {
"scripts": ["background/background.ts"],
"persistent": false
diff --git a/src/options/page.html b/src/options/page.html
index 02e6183a..a435ed4d 100644
--- a/src/options/page.html
+++ b/src/options/page.html
@@ -92,6 +92,7 @@
Passport
+ Recommended
Watch streams as if you were logged out. This option removes
diff --git a/src/page/getFetch.ts b/src/page/getFetch.ts
index f4e67a02..e41814de 100644
--- a/src/page/getFetch.ts
+++ b/src/page/getFetch.ts
@@ -28,7 +28,7 @@ export function getFetch(options: FetchOptions): typeof fetch {
if (options.shouldWaitForStore) {
setTimeout(() => {
options.shouldWaitForStore = false;
- }, 3000);
+ }, 5000);
}
return async function fetch(
@@ -87,15 +87,35 @@ export function getFetch(options: FetchOptions): typeof fetch {
console.debug(
"[TTV LOL PRO] 🥅 Caught GraphQL PlaybackAccessToken_Template request. Flagging…"
);
+
while (options.shouldWaitForStore) await sleep(100);
- if (options.state?.anonymousMode) {
- console.log("[TTV LOL PRO] ❓ Acting as anonymous user");
- setHeaderToMap(headersMap, "Authorization", "undefined");
- removeHeaderFromMap(headersMap, "Client-Session-Id");
- removeHeaderFromMap(headersMap, "Client-Version");
- setHeaderToMap(headersMap, "Device-ID", generateRandomString(32));
- removeHeaderFromMap(headersMap, "Sec-GPC");
- removeHeaderFromMap(headersMap, "X-Device-Id");
+ let graphQlBody = null;
+ try {
+ graphQlBody = JSON.parse(requestBody);
+ } catch {}
+ const channelName = graphQlBody?.variables?.login as string | undefined;
+ const whitelistedChannelsLower = options.state?.whitelistedChannels.map(
+ channel => channel.toLowerCase()
+ );
+ const isWhitelisted =
+ channelName != null &&
+ whitelistedChannelsLower != null &&
+ whitelistedChannelsLower.includes(channelName.toLowerCase());
+
+ if (options.state?.anonymousMode === true) {
+ if (!isWhitelisted) {
+ console.log("[TTV LOL PRO] 🕵️ Anonymous mode is enabled.");
+ setHeaderToMap(headersMap, "Authorization", "undefined");
+ removeHeaderFromMap(headersMap, "Client-Session-Id");
+ removeHeaderFromMap(headersMap, "Client-Version");
+ setHeaderToMap(headersMap, "Device-ID", generateRandomString(32));
+ removeHeaderFromMap(headersMap, "Sec-GPC");
+ removeHeaderFromMap(headersMap, "X-Device-Id");
+ } else {
+ console.log(
+ "[TTV LOL PRO] 🕵️✋ Anonymous mode is enabled but channel is whitelisted."
+ );
+ }
}
flagRequest(headersMap);
} else if (