forked from extern/bruno
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
|
(function () {
|
||
|
let currentTab = {
|
||
|
id: null,
|
||
|
url: null,
|
||
|
};
|
||
|
|
||
|
const getExtensionId = () => {
|
||
|
const matches = chrome.runtime.getURL('x').match(/.*\/\/(.*)\/x$/);
|
||
|
if (matches) {
|
||
|
return matches[1];
|
||
|
}
|
||
|
|
||
|
return chrome.runtime.id;
|
||
|
};
|
||
|
|
||
|
// Create a new tab for the extension
|
||
|
function createNewTab() {
|
||
|
chrome.tabs.create({ url: 'index.html' }, function (tab) {
|
||
|
currentTab = {
|
||
|
id: tab.id,
|
||
|
url: tab.url
|
||
|
};
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// Focus on the open extension tab
|
||
|
function focusTab(tabId) {
|
||
|
var updateProperties = { "active": true };
|
||
|
chrome.tabs.update(tabId, updateProperties, function (tab) { });
|
||
|
}
|
||
|
|
||
|
// Open the extension tab when the extension icon is clicked
|
||
|
chrome.browserAction.onClicked.addListener(function (tab) {
|
||
|
if (!currentTab || !currentTab.id) {
|
||
|
createNewTab();
|
||
|
} else {
|
||
|
chrome.tabs.get(currentTab.id, function (tab) {
|
||
|
console.log(chrome.runtime.id, tab.url);
|
||
|
if (tab && tab.url && tab.url.includes(getExtensionId())) {
|
||
|
focusTab(currentTab.id);
|
||
|
} else {
|
||
|
createNewTab();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// When a tab is closed, check if it is the extension tab that was closed, and unset currentTabId
|
||
|
chrome.tabs.onRemoved.addListener(function (tabId) {
|
||
|
if (tabId === currentTab.id) {
|
||
|
currentTab = {};
|
||
|
}
|
||
|
});
|
||
|
})();
|