diff --git a/src/background/handlers/onResponseStarted.ts b/src/background/handlers/onResponseStarted.ts index 4b6e7f2..a02b436 100644 --- a/src/background/handlers/onResponseStarted.ts +++ b/src/background/handlers/onResponseStarted.ts @@ -87,21 +87,19 @@ export default async function onResponseStarted( const stats = streamStatus?.stats ?? { proxied: 0, notProxied: 0 }; if (!proxy) { - let reason = errorMessage ?? streamStatus?.reason ?? ""; - if (isChromium) { - try { - const proxySettings = await browser.proxy.settings.get({}); - switch (proxySettings.levelOfControl) { - case "controlled_by_other_extensions": - reason = "Proxy settings controlled by other extension"; - break; - case "not_controllable": - reason = "Proxy settings not controllable"; - break; - } - } catch {} - } stats.notProxied++; + let reason = errorMessage ?? streamStatus?.reason ?? ""; + try { + const proxySettings = await browser.proxy.settings.get({}); + switch (proxySettings.levelOfControl) { + case "controlled_by_other_extensions": + reason = "Proxy settings controlled by other extension"; + break; + case "not_controllable": + reason = "Proxy settings not controllable"; + break; + } + } catch {} setStreamStatus(channelName, { proxied: false, proxyHost: streamStatus?.proxyHost ? streamStatus.proxyHost : undefined, diff --git a/src/content/content.ts b/src/content/content.ts index 9533a4a..7477d6f 100644 --- a/src/content/content.ts +++ b/src/content/content.ts @@ -3,6 +3,7 @@ import workerScriptURL from "url:../page/worker.ts"; import browser, { Storage } from "webextension-polyfill"; import findChannelFromTwitchTvUrl from "../common/ts/findChannelFromTwitchTvUrl"; import isChromium from "../common/ts/isChromium"; +import { getStreamStatus, setStreamStatus } from "../common/ts/streamStatus"; import store from "../store"; import type { State } from "../store/types"; import { MessageType } from "../types"; @@ -145,6 +146,15 @@ function onPageMessage(event: MessageEvent) { ); } break; + case MessageType.MultipleAdBlockersInUse: + const channelName = findChannelFromTwitchTvUrl(location.href); + if (!channelName) break; + const streamStatus = getStreamStatus(channelName); + setStreamStatus(channelName, { + ...(streamStatus ?? { proxied: false }), + reason: "Another Twitch ad blocker is in use", + }); + break; case MessageType.ClearStats: clearStats(message.channelName); break; diff --git a/src/page/page.ts b/src/page/page.ts index 9ef746e..85c18c1 100644 --- a/src/page/page.ts +++ b/src/page/page.ts @@ -53,7 +53,10 @@ window.Worker = class Worker extends NATIVE_WORKER { // Required for VAFT (>=12.0.0) compatibility. const isAlreadyHooked = NATIVE_WORKER.toString().includes("twitch"); if (isAlreadyHooked) { - console.error("[TTV LOL PRO] Twitch worker is already hooked."); + console.info("[TTV LOL PRO] Another Twitch ad blocker is in use."); + sendMessageToContentScript({ + type: MessageType.MultipleAdBlockersInUse, + }); super(scriptURL, options); return; } diff --git a/src/popup/popup.ts b/src/popup/popup.ts index 46a7c5a..5ad5834 100644 --- a/src/popup/popup.ts +++ b/src/popup/popup.ts @@ -8,7 +8,6 @@ import { import { alpha2 } from "../common/ts/countryCodes"; import findChannelFromTwitchTvUrl from "../common/ts/findChannelFromTwitchTvUrl"; import isChannelWhitelisted from "../common/ts/isChannelWhitelisted"; -import isChromium from "../common/ts/isChromium"; import store from "../store"; import type { StreamStatus } from "../types"; @@ -243,9 +242,7 @@ copyDebugInfoButtonElement.addEventListener("click", async e => { `- Country: ${status.proxyCountry ?? "N/A"}\n`, ].join("") : "", - isChromium - ? `Proxy level of control: ${proxySettings.levelOfControl}\n` - : "", + `Proxy level of control: ${proxySettings.levelOfControl}\n`, ].join("") : "", store.state.adLog.length > 0 diff --git a/src/types.ts b/src/types.ts index 84e0648..ca7d7a4 100644 --- a/src/types.ts +++ b/src/types.ts @@ -82,6 +82,7 @@ export const enum MessageType { UsherResponse = "TLP_UsherResponse", NewPlaybackAccessToken = "TLP_NewPlaybackAccessToken", NewPlaybackAccessTokenResponse = "TLP_NewPlaybackAccessTokenResponse", + MultipleAdBlockersInUse = "TLP_MultipleAdBlockersInUse", ClearStats = "TLP_ClearStats", }