Use History API when available

This commit is contained in:
Anton Bershanskiy
2022-05-25 00:13:02 +03:00
parent e948e1e569
commit 9b9ea39260
3 changed files with 52 additions and 8 deletions

View File

@@ -23,14 +23,35 @@ if (utils.isFirefox()) {
});
}
chrome.tabs.onUpdated.addListener(function(tabId) {
chrome.tabs.sendMessage(tabId, {
function onTabUpdatedListener(tabId: number) {
chrome.tabs.sendMessage(tabId, {
message: 'update',
}, () => void chrome.runtime.lastError ); // Suppress error on Firefox
});
}, () => void chrome.runtime.lastError ); // Suppress error on Firefox
}
chrome.runtime.onMessage.addListener(function (request, sender, callback) {
switch(request.message) {
function onNavigationApiAvailableChange(changes: {[key: string]: chrome.storage.StorageChange}) {
if (changes.navigationApiAvailable) {
if (changes.navigationApiAvailable.newValue) {
chrome.tabs.onUpdated.removeListener(onTabUpdatedListener);
} else {
chrome.tabs.onUpdated.addListener(onTabUpdatedListener);
}
}
}
// If Navigation API is not supported, then background has to inform content script about video change.
// This happens on Safari, Firefox, and Chromium 101 (inclusive) and below.
utils.wait(() => Config.local !== null).then(() => {
if (!Config.local.navigationApiAvailable)
chrome.tabs.onUpdated.addListener(onTabUpdatedListener);
})
if (!Config.configSyncListeners.includes(onNavigationApiAvailableChange)) {
Config.configSyncListeners.push(onNavigationApiAvailableChange);
}
chrome.runtime.onMessage.addListener(function (request, _, callback) {
switch(request.message) {
case "openConfig":
chrome.tabs.create({url: chrome.runtime.getURL('options/options.html' + (request.hash ? '#' + request.hash : ''))});
return;
@@ -61,7 +82,7 @@ chrome.runtime.onMessage.addListener(function (request, sender, callback) {
case "unregisterContentScript":
unregisterFirefoxContentScript(request.id)
return false;
}
}
});
//add help page on install