mirror of
https://github.com/aykhans/slash-e.git
synced 2025-04-17 20:55:28 +00:00
chore: add chrome extension codes
This commit is contained in:
parent
dfc797fe58
commit
48fb6018c0
40
extension/background.js
Normal file
40
extension/background.js
Normal file
@ -0,0 +1,40 @@
|
||||
const getCorgiData = () => {
|
||||
return new Promise((resolve) => {
|
||||
chrome.storage.local.get(["corgi"], (data) => {
|
||||
resolve(data?.corgi);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
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?:\/\/go\/(.+)/;
|
||||
|
||||
chrome.tabs.onUpdated.addListener(async (_, a, tab) => {
|
||||
if (typeof tab.url === "string") {
|
||||
const matchResult = urlRegex.exec(tab.url);
|
||||
if (matchResult) {
|
||||
const name = matchResult[1];
|
||||
const shortcut = await fetchShortcut(name);
|
||||
if (shortcut && shortcut.link) {
|
||||
chrome.tabs.update({ url: shortcut.link });
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
chrome.omnibox.onInputEntered.addListener(async (text) => {
|
||||
const shortcut = await fetchShortcut(text);
|
||||
if (shortcut && shortcut.link) {
|
||||
chrome.tabs.update({ url: shortcut.link });
|
||||
}
|
||||
});
|
16
extension/manifest.json
Normal file
16
extension/manifest.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "Corgi",
|
||||
"description": "Corgi is an URL manager.",
|
||||
"version": "0.0.1",
|
||||
"manifest_version": 3,
|
||||
"omnibox": {
|
||||
"keyword": "go"
|
||||
},
|
||||
"action": {
|
||||
"default_popup": "popup.html"
|
||||
},
|
||||
"background": {
|
||||
"service_worker": "background.js"
|
||||
},
|
||||
"permissions": ["tabs", "activeTab", "storage"]
|
||||
}
|
18
extension/popup.html
Normal file
18
extension/popup.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body>
|
||||
<h2>Corgi extension</h2>
|
||||
<div>
|
||||
<span>Domain</span>
|
||||
<input id="domain-input" type="text" />
|
||||
</div>
|
||||
<div>
|
||||
<span>OpenId</span>
|
||||
<input id="openid-input" type="text" />
|
||||
</div>
|
||||
<div>
|
||||
<button id="save-button">Save</button>
|
||||
</div>
|
||||
<script src="popup.js"></script>
|
||||
</body>
|
||||
</html>
|
26
extension/popup.js
Normal file
26
extension/popup.js
Normal file
@ -0,0 +1,26 @@
|
||||
const getCorgiData = () => {
|
||||
return new Promise((resolve) => {
|
||||
chrome.storage.local.get(["corgi"], (data) => {
|
||||
resolve(data?.corgi);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const saveButton = document.body.querySelector("#save-button");
|
||||
const domainInput = document.body.querySelector("#domain-input");
|
||||
const openIdInput = document.body.querySelector("#openid-input");
|
||||
|
||||
saveButton.addEventListener("click", () => {
|
||||
chrome.storage.local.set({
|
||||
corgi: {
|
||||
domain: domainInput.value,
|
||||
openId: openIdInput.value,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
(async () => {
|
||||
const corgiData = await getCorgiData();
|
||||
domainInput.value = corgiData.domain;
|
||||
openIdInput.value = corgiData.openId;
|
||||
})();
|
@ -5,7 +5,7 @@ tmp_dir = ".air"
|
||||
bin = "./.air/corgi"
|
||||
cmd = "go build -o ./.air/corgi ./bin/server/main.go"
|
||||
delay = 1000
|
||||
exclude_dir = [".air", "web", "build"]
|
||||
exclude_dir = [".air", "web", "extension", "build"]
|
||||
exclude_file = []
|
||||
exclude_regex = []
|
||||
exclude_unchanged = false
|
||||
|
@ -71,6 +71,12 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) {
|
||||
if workspaceID, err := strconv.Atoi(c.QueryParam("workspaceId")); err == nil {
|
||||
shortcutFind.WorkspaceID = &workspaceID
|
||||
}
|
||||
if name := c.QueryParam("name"); name != "" {
|
||||
shortcutFind.Name = &name
|
||||
}
|
||||
if link := c.QueryParam("link"); link != "" {
|
||||
shortcutFind.Link = &link
|
||||
}
|
||||
|
||||
list, err := s.Store.FindShortcutList(ctx, shortcutFind)
|
||||
if err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user