chore: update extension

This commit is contained in:
steven 2022-09-30 14:39:19 +08:00
parent 02619882d1
commit 8d6848e754
5 changed files with 31 additions and 41 deletions

View File

@ -1,40 +1,21 @@
const getCorgiData = () => { import { getCorgiData } from "./common.js";
return new Promise((resolve) => {
chrome.storage.local.get(["corgi"], (data) => {
resolve(data?.corgi);
});
});
};
const fetchShortcut = async (name) => { const urlRegex = /https?:\/\/o\/(.+)/;
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?:\/\/go\/(.+)/; chrome.tabs.onUpdated.addListener(async (tabId, changeInfo, tab) => {
chrome.tabs.onUpdated.addListener(async (_1, _2, tab) => {
if (typeof tab.url === "string") { if (typeof tab.url === "string") {
const matchResult = urlRegex.exec(tab.url); const matchResult = urlRegex.exec(tab.url);
if (matchResult) { if (matchResult) {
const corgiData = await getCorgiData();
const name = matchResult[1]; const name = matchResult[1];
const shortcut = await fetchShortcut(name); const url = `${corgiData.domain}/api/shortcut?openId=${corgiData.openId}&name=${name}&redirect=true`;
if (shortcut && shortcut.link) { return chrome.tabs.update({ url });
chrome.tabs.update({ url: shortcut.link });
}
} }
} }
}); });
chrome.omnibox.onInputEntered.addListener(async (text) => { chrome.omnibox.onInputEntered.addListener(async (text) => {
const shortcut = await fetchShortcut(text); const corgiData = await getCorgiData();
if (shortcut && shortcut.link) { const url = `${corgiData.domain}/api/shortcut?openId=${corgiData.openId}&name=${text}&redirect=true`;
chrome.tabs.update({ url: shortcut.link }); return chrome.tabs.update({ url });
}
}); });

11
extension/common.js Normal file
View File

@ -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");
}
});
});
};

View File

@ -4,13 +4,15 @@
"version": "0.0.1", "version": "0.0.1",
"manifest_version": 3, "manifest_version": 3,
"omnibox": { "omnibox": {
"keyword": "go/" "keyword": "o/"
}, },
"action": { "action": {
"default_popup": "popup.html" "default_popup": "popup.html"
}, },
"background": { "background": {
"service_worker": "background.js" "service_worker": "background.js",
"type": "module"
}, },
"permissions": ["tabs", "activeTab", "storage"] "permissions": ["tabs", "activeTab", "storage"],
"host_permissions": ["*://o/*"]
} }

View File

@ -13,6 +13,6 @@
<div> <div>
<button id="save-button">Save</button> <button id="save-button">Save</button>
</div> </div>
<script src="popup.js"></script> <script type="module" src="popup.js"></script>
</body> </body>
</html> </html>

View File

@ -1,10 +1,4 @@
const getCorgiData = () => { import { getCorgiData } from "./common.js";
return new Promise((resolve) => {
chrome.storage.local.get(["corgi"], (data) => {
resolve(data?.corgi);
});
});
};
const saveButton = document.body.querySelector("#save-button"); const saveButton = document.body.querySelector("#save-button");
const domainInput = document.body.querySelector("#domain-input"); const domainInput = document.body.querySelector("#domain-input");
@ -21,6 +15,8 @@ saveButton.addEventListener("click", () => {
(async () => { (async () => {
const corgiData = await getCorgiData(); const corgiData = await getCorgiData();
if (corgiData) {
domainInput.value = corgiData.domain; domainInput.value = corgiData.domain;
openIdInput.value = corgiData.openId; openIdInput.value = corgiData.openId;
}
})(); })();