diff --git a/extension/background.js b/extension/background.js index 8279118..10510f8 100644 --- a/extension/background.js +++ b/extension/background.js @@ -1,40 +1,21 @@ -const getCorgiData = () => { - return new Promise((resolve) => { - chrome.storage.local.get(["corgi"], (data) => { - resolve(data?.corgi); - }); - }); -}; +import { getCorgiData } from "./common.js"; -const fetchShortcut = async (name) => { - const corgiData = await getCorgiData(); - if (corgiData.domain && corgiData.openId) { - const res = await fetch(`${corgiData.domain}/api/shortcut?openId=${corgiData.openId}&name=${name}`); - const { data } = await res.json(); - if (data.length > 0) { - return data[0]; - } - } -}; +const urlRegex = /https?:\/\/o\/(.+)/; -const urlRegex = /https?:\/\/go\/(.+)/; - -chrome.tabs.onUpdated.addListener(async (_1, _2, tab) => { +chrome.tabs.onUpdated.addListener(async (tabId, changeInfo, tab) => { if (typeof tab.url === "string") { const matchResult = urlRegex.exec(tab.url); if (matchResult) { + const corgiData = await getCorgiData(); const name = matchResult[1]; - const shortcut = await fetchShortcut(name); - if (shortcut && shortcut.link) { - chrome.tabs.update({ url: shortcut.link }); - } + const url = `${corgiData.domain}/api/shortcut?openId=${corgiData.openId}&name=${name}&redirect=true`; + return chrome.tabs.update({ url }); } } }); chrome.omnibox.onInputEntered.addListener(async (text) => { - const shortcut = await fetchShortcut(text); - if (shortcut && shortcut.link) { - chrome.tabs.update({ url: shortcut.link }); - } + const corgiData = await getCorgiData(); + const url = `${corgiData.domain}/api/shortcut?openId=${corgiData.openId}&name=${text}&redirect=true`; + return chrome.tabs.update({ url }); }); diff --git a/extension/common.js b/extension/common.js new file mode 100644 index 0000000..733d9b7 --- /dev/null +++ b/extension/common.js @@ -0,0 +1,11 @@ +export const getCorgiData = () => { + return new Promise((resolve, reject) => { + chrome.storage.local.get(["corgi"], (data) => { + if (data?.corgi) { + resolve(data.corgi); + } else { + reject("corgi data not found"); + } + }); + }); +}; diff --git a/extension/manifest.json b/extension/manifest.json index 4dcc8d0..14df5b2 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -4,13 +4,15 @@ "version": "0.0.1", "manifest_version": 3, "omnibox": { - "keyword": "go/" + "keyword": "o/" }, "action": { "default_popup": "popup.html" }, "background": { - "service_worker": "background.js" + "service_worker": "background.js", + "type": "module" }, - "permissions": ["tabs", "activeTab", "storage"] + "permissions": ["tabs", "activeTab", "storage"], + "host_permissions": ["*://o/*"] } diff --git a/extension/popup.html b/extension/popup.html index 54e1765..fe5a37f 100644 --- a/extension/popup.html +++ b/extension/popup.html @@ -13,6 +13,6 @@