mirror of
https://github.com/younesaassila/ttv-lol-pro.git
synced 2025-05-07 01:44:29 +02:00
Merge pull request #274 from younesaassila/v2.2.2
🔖 Release version 2.2.2
This commit is contained in:
commit
ca8af228ef
1369
package-lock.json
generated
1369
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
18
package.json
18
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ttv-lol-pro",
|
"name": "ttv-lol-pro",
|
||||||
"version": "2.2.1",
|
"version": "2.2.2",
|
||||||
"description": "TTV LOL PRO removes most livestream ads from Twitch.",
|
"description": "TTV LOL PRO removes most livestream ads from Twitch.",
|
||||||
"@parcel/bundler-default": {
|
"@parcel/bundler-default": {
|
||||||
"minBundles": 10000000,
|
"minBundles": 10000000,
|
||||||
@ -46,19 +46,19 @@
|
|||||||
"ip": "^1.1.8"
|
"ip": "^1.1.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@parcel/config-webextension": "^2.9.3",
|
"@parcel/config-webextension": "^2.10.3",
|
||||||
"@types/chrome": "^0.0.246",
|
"@types/chrome": "^0.0.254",
|
||||||
"@types/ip": "^1.1.1",
|
"@types/ip": "^1.1.3",
|
||||||
"@types/webextension-polyfill": "^0.10.4",
|
"@types/webextension-polyfill": "^0.10.7",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"os-browserify": "^0.3.0",
|
"os-browserify": "^0.3.0",
|
||||||
"parcel": "^2.9.3",
|
"parcel": "^2.10.3",
|
||||||
"postcss": "^8.4.31",
|
"postcss": "^8.4.32",
|
||||||
"prettier": "2.8.8",
|
"prettier": "2.8.8",
|
||||||
"prettier-plugin-css-order": "^1.3.1",
|
"prettier-plugin-css-order": "^1.3.1",
|
||||||
"prettier-plugin-organize-imports": "^3.2.3",
|
"prettier-plugin-organize-imports": "^3.2.4",
|
||||||
"shx": "^0.3.4",
|
"shx": "^0.3.4",
|
||||||
"typescript": "^5.2.2",
|
"typescript": "^5.3.3",
|
||||||
"webextension-polyfill": "^0.10.0"
|
"webextension-polyfill": "^0.10.0"
|
||||||
},
|
},
|
||||||
"private": true
|
"private": true
|
||||||
|
@ -10,6 +10,7 @@ import onResponseStarted from "./handlers/onResponseStarted";
|
|||||||
import onStartupStoreCleanup from "./handlers/onStartupStoreCleanup";
|
import onStartupStoreCleanup from "./handlers/onStartupStoreCleanup";
|
||||||
import onTabCreated from "./handlers/onTabCreated";
|
import onTabCreated from "./handlers/onTabCreated";
|
||||||
import onTabRemoved from "./handlers/onTabRemoved";
|
import onTabRemoved from "./handlers/onTabRemoved";
|
||||||
|
import onTabReplaced from "./handlers/onTabReplaced";
|
||||||
import onTabUpdated from "./handlers/onTabUpdated";
|
import onTabUpdated from "./handlers/onTabUpdated";
|
||||||
|
|
||||||
console.info("🚀 Background script loaded.");
|
console.info("🚀 Background script loaded.");
|
||||||
@ -40,6 +41,7 @@ if (isChromium) {
|
|||||||
browser.tabs.onCreated.addListener(onTabCreated);
|
browser.tabs.onCreated.addListener(onTabCreated);
|
||||||
browser.tabs.onUpdated.addListener(onTabUpdated);
|
browser.tabs.onUpdated.addListener(onTabUpdated);
|
||||||
browser.tabs.onRemoved.addListener(onTabRemoved);
|
browser.tabs.onRemoved.addListener(onTabRemoved);
|
||||||
|
browser.tabs.onReplaced.addListener(onTabReplaced);
|
||||||
} else {
|
} else {
|
||||||
// Block tracking pixels.
|
// Block tracking pixels.
|
||||||
browser.webRequest.onBeforeRequest.addListener(
|
browser.webRequest.onBeforeRequest.addListener(
|
||||||
|
@ -8,6 +8,9 @@ import { twitchTvHostRegex } from "../../common/ts/regexes";
|
|||||||
import store from "../../store";
|
import store from "../../store";
|
||||||
|
|
||||||
export default function onTabCreated(tab: Tabs.Tab): void {
|
export default function onTabCreated(tab: Tabs.Tab): void {
|
||||||
|
if (store.readyState !== "complete")
|
||||||
|
return store.addEventListener("load", () => onTabCreated(tab));
|
||||||
|
|
||||||
const url = tab.url || tab.pendingUrl;
|
const url = tab.url || tab.pendingUrl;
|
||||||
if (!url) return;
|
if (!url) return;
|
||||||
const host = getHostFromUrl(url);
|
const host = getHostFromUrl(url);
|
||||||
|
@ -4,6 +4,9 @@ import { clearProxySettings } from "../../common/ts/proxySettings";
|
|||||||
import store from "../../store";
|
import store from "../../store";
|
||||||
|
|
||||||
export default function onTabRemoved(tabId: number): void {
|
export default function onTabRemoved(tabId: number): void {
|
||||||
|
if (store.readyState !== "complete")
|
||||||
|
return store.addEventListener("load", () => onTabRemoved(tabId));
|
||||||
|
|
||||||
const index = store.state.openedTwitchTabs.findIndex(tab => tab.id === tabId);
|
const index = store.state.openedTwitchTabs.findIndex(tab => tab.id === tabId);
|
||||||
if (index === -1) return;
|
if (index === -1) return;
|
||||||
|
|
||||||
|
14
src/background/handlers/onTabReplaced.ts
Normal file
14
src/background/handlers/onTabReplaced.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import browser from "webextension-polyfill";
|
||||||
|
import onTabCreated from "./onTabCreated";
|
||||||
|
import onTabRemoved from "./onTabRemoved";
|
||||||
|
|
||||||
|
export default function onTabReplaced(
|
||||||
|
addedTabId: number,
|
||||||
|
removedTabId: number
|
||||||
|
): void {
|
||||||
|
onTabRemoved(removedTabId);
|
||||||
|
browser.tabs
|
||||||
|
.get(addedTabId)
|
||||||
|
.then(tab => onTabCreated(tab))
|
||||||
|
.catch(() => console.error("❌ Failed to get tab after replacement."));
|
||||||
|
}
|
@ -16,6 +16,12 @@ export default function onTabUpdated(
|
|||||||
changeInfo: Tabs.OnUpdatedChangeInfoType,
|
changeInfo: Tabs.OnUpdatedChangeInfoType,
|
||||||
tab: Tabs.Tab
|
tab: Tabs.Tab
|
||||||
): void {
|
): void {
|
||||||
|
if (store.readyState !== "complete") {
|
||||||
|
return store.addEventListener("load", () =>
|
||||||
|
onTabUpdated(tabId, changeInfo, tab)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const isPageNavigation = changeInfo.url != null;
|
const isPageNavigation = changeInfo.url != null;
|
||||||
// We have to check for `changeInfo.status === "loading"` because
|
// We have to check for `changeInfo.status === "loading"` because
|
||||||
// `changeInfo.url` is incorrect when navigating from Twitch to another
|
// `changeInfo.url` is incorrect when navigating from Twitch to another
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"manifest_version": 3,
|
"manifest_version": 3,
|
||||||
"name": "TTV LOL PRO",
|
"name": "TTV LOL PRO",
|
||||||
"description": "TTV LOL PRO removes most livestream ads from Twitch.",
|
"description": "TTV LOL PRO removes most livestream ads from Twitch.",
|
||||||
"version": "2.2.1",
|
"version": "2.2.2",
|
||||||
"background": {
|
"background": {
|
||||||
"service_worker": "background/background.ts",
|
"service_worker": "background/background.ts",
|
||||||
"type": "module"
|
"type": "module"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "TTV LOL PRO",
|
"name": "TTV LOL PRO",
|
||||||
"description": "TTV LOL PRO removes most livestream ads from Twitch.",
|
"description": "TTV LOL PRO removes most livestream ads from Twitch.",
|
||||||
"version": "2.2.1",
|
"version": "2.2.2",
|
||||||
"background": {
|
"background": {
|
||||||
"scripts": ["background/background.ts"],
|
"scripts": ["background/background.ts"],
|
||||||
"persistent": false
|
"persistent": false
|
||||||
|
@ -182,6 +182,12 @@ copyDebugInfoButtonElement.addEventListener("click", async e => {
|
|||||||
? store.state.normalProxies
|
? store.state.normalProxies
|
||||||
: anonymizeIpAddresses(store.state.normalProxies)
|
: anonymizeIpAddresses(store.state.normalProxies)
|
||||||
)}`,
|
)}`,
|
||||||
|
isChromium
|
||||||
|
? `- Should extension be active: ${store.state.chromiumProxyActive}`
|
||||||
|
: "",
|
||||||
|
isChromium
|
||||||
|
? `- Number of opened Twitch tabs: ${store.state.openedTwitchTabs.length}`
|
||||||
|
: "",
|
||||||
`- Last ad log entry: ${
|
`- Last ad log entry: ${
|
||||||
store.state.adLog.length
|
store.state.adLog.length
|
||||||
? JSON.stringify({
|
? JSON.stringify({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user