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"
|
bin = "./.air/corgi"
|
||||||
cmd = "go build -o ./.air/corgi ./bin/server/main.go"
|
cmd = "go build -o ./.air/corgi ./bin/server/main.go"
|
||||||
delay = 1000
|
delay = 1000
|
||||||
exclude_dir = [".air", "web", "build"]
|
exclude_dir = [".air", "web", "extension", "build"]
|
||||||
exclude_file = []
|
exclude_file = []
|
||||||
exclude_regex = []
|
exclude_regex = []
|
||||||
exclude_unchanged = false
|
exclude_unchanged = false
|
||||||
|
@ -71,6 +71,12 @@ func (s *Server) registerShortcutRoutes(g *echo.Group) {
|
|||||||
if workspaceID, err := strconv.Atoi(c.QueryParam("workspaceId")); err == nil {
|
if workspaceID, err := strconv.Atoi(c.QueryParam("workspaceId")); err == nil {
|
||||||
shortcutFind.WorkspaceID = &workspaceID
|
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)
|
list, err := s.Store.FindShortcutList(ctx, shortcutFind)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user