diff --git a/.gitignore b/.gitignore index 7f9db6a..16d6845 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ +examples web-ext-artifacts node_modules diff --git a/manifest.json b/manifest.json index 871a039..4b0f4f9 100644 --- a/manifest.json +++ b/manifest.json @@ -1,11 +1,11 @@ { "name": "Web Extension for Shaarli modified", "description": "Share your link to your Shaarli, test version", - "version": "2.0.2", + "version": "2.0.3", "homepage_url": "https://git.hmthsn.com/mantao/shaarli-web-extension", "manifest_version": 2, "icons": { - "48": "resources/icons/icon-48.png" + "48": "resources/icons/leaf_on.svg" }, "permissions": [ "tabs", @@ -19,22 +19,18 @@ "page": "src/background-page.html" }, "browser_action": { - "default_icon": "resources/icons/icon-24.png", + "default_icon": "resources/icons/leaf_on.svg", "default_title": "Share" }, "page_action": { "browser_style": false, - "default_icon": "resources/icons/icon-24.png", + "default_icon": "resources/icons/leaf_on.svg", "default_title": "Share" }, "content_scripts": [ { - "matches": ["*://sl.hmthsn.com/login*"], - "js": ["src/login_helper.js"] - }, - { - "matches": ["*://sl.hmthsn.com/*"], - "js": ["src/close_helper.js"] + "matches": [""], + "js": ["src/login_close_helper.js"] } ] } diff --git a/resources/icons/action-bookmarked-16.png b/resources/icons/action-bookmarked-16.png deleted file mode 100644 index 9d4e2fd..0000000 Binary files a/resources/icons/action-bookmarked-16.png and /dev/null differ diff --git a/resources/icons/action-bookmarked-32.png b/resources/icons/action-bookmarked-32.png deleted file mode 100644 index c6d2f54..0000000 Binary files a/resources/icons/action-bookmarked-32.png and /dev/null differ diff --git a/resources/icons/action-bookmarked-64.png b/resources/icons/action-bookmarked-64.png deleted file mode 100644 index 887d052..0000000 Binary files a/resources/icons/action-bookmarked-64.png and /dev/null differ diff --git a/resources/icons/action-default-16.png b/resources/icons/action-default-16.png deleted file mode 100644 index 405b099..0000000 Binary files a/resources/icons/action-default-16.png and /dev/null differ diff --git a/resources/icons/action-default-32.png b/resources/icons/action-default-32.png deleted file mode 100644 index 41cefb7..0000000 Binary files a/resources/icons/action-default-32.png and /dev/null differ diff --git a/resources/icons/action-default-64.png b/resources/icons/action-default-64.png deleted file mode 100644 index e6400f4..0000000 Binary files a/resources/icons/action-default-64.png and /dev/null differ diff --git a/resources/icons/icon-16.png b/resources/icons/icon-16.png deleted file mode 100644 index 259bf2f..0000000 Binary files a/resources/icons/icon-16.png and /dev/null differ diff --git a/resources/icons/icon-24.png b/resources/icons/icon-24.png deleted file mode 100644 index d987e0b..0000000 Binary files a/resources/icons/icon-24.png and /dev/null differ diff --git a/resources/icons/icon-48.png b/resources/icons/icon-48.png deleted file mode 100644 index e8b1307..0000000 Binary files a/resources/icons/icon-48.png and /dev/null differ diff --git a/resources/icons/leaf_off.svg b/resources/icons/leaf_off.svg new file mode 100644 index 0000000..d8fa619 --- /dev/null +++ b/resources/icons/leaf_off.svg @@ -0,0 +1,74 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/resources/icons/leaf_on.svg b/resources/icons/leaf_on.svg new file mode 100644 index 0000000..3ee2089 --- /dev/null +++ b/resources/icons/leaf_on.svg @@ -0,0 +1,75 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/background-page.html b/src/background-page.html index dde7644..5fa28bc 100644 --- a/src/background-page.html +++ b/src/background-page.html @@ -1,13 +1,13 @@ - - - "scripts": ["src/storage.js", "src/background.js"] - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/src/background.js b/src/background.js index fd2964b..f42c02f 100644 --- a/src/background.js +++ b/src/background.js @@ -1,7 +1,3 @@ - - - - /** * Open the given url in a popup * @param {string} url - @@ -9,6 +5,7 @@ * @param {number} height - * @return {void} - */ + function openInPopup(url, width, height) { browser.windows.create({ url, @@ -26,7 +23,7 @@ var last_tab; function shareCurrentTab(tab) { const url = tab.url; const title = tab.title || url; - browser.storage.local.get().then((storage) => { + browser.storage.local.get("url").then((storage) => { if(!storage.url){ browser.runtime.openOptionsPage(); return; @@ -42,7 +39,7 @@ function shareCurrentTab(tab) { * @return {void} - */ function showPageAction(tabId){ - browser.storage.local.get().then((storage) => { + browser.storage.local.get("pageAction").then((storage) => { storage.pageAction ? browser.pageAction.show(tabId) : browser.pageAction.hide(tabId); }); } @@ -97,9 +94,9 @@ async function updateIcon() { // Set initial icon var runtimeUrl = await browser.runtime.getURL("/"), icon = {path: { - 16: "../resources/icons/action-default-16.png", - 32: "../resources/icons/action-default-32.png", - 64: "../resources/icons/action-default-64.png" + 16: "../resources/icons/leaf_off.svg", + 32: "../resources/icons/leaf_off.svg", + 64: "../resources/icons/leaf_off.svg" }}; // Firefox allows using empty object as default icon. @@ -113,9 +110,9 @@ async function updateIcon() { var local = await findLocalBookmark(tab.url); if (local) icon.path = { - 16: "../resources/icons/action-bookmarked-16.png", - 32: "../resources/icons/action-bookmarked-32.png", - 64: "../resources/icons/action-bookmarked-64.png" + 16: "../resources/icons/leaf_on.svg", + 32: "../resources/icons/leaf_on.svg", + 64: "../resources/icons/leaf_on.svg" } // console.log("tab:", tab); @@ -152,29 +149,38 @@ browser.contextMenus.create({ }, onCreated); async function sync_links(){ - var token = await browser.storage.local.get("token") - token = token.token - var result = await getLinks(token); + // get server url from storage + var storage_server_url = await browser.storage.local.get("url") + if(!storage_server_url.url){ + return + } + let server_url = storage_server_url.url; + // get token from storage + var storage_token = await browser.storage.local.get("token") + if(!storage_token.token){ + return + } + let token = storage_token.token; + // construct api url + let api_url = new URL(server_url); + api_url.pathname = "/api/v1/links"; + api_url.searchParams.append("limit", "all"); + // get links + var result = await getLinks(token, api_url.href); + // generate link dictionary let links = {} result.forEach((value)=>{ links[value.url] = true; }) + // save link dictionary browser.storage.local.set({"links":links}); - console.log(links); } browser.contextMenus.onClicked.addListener(async function(info, tab) { - switch (info.menuItemId) { - case "log-selection": await sync_links(); - break; - - } }) -console.log("addon loaded") + browser.runtime.onMessage.addListener(async (message) => { - - console.log("sync signal received",message) if (message === "sync") { await new Promise(r => setTimeout(r, 1000)); await sync_links(); @@ -183,5 +189,9 @@ browser.runtime.onMessage.addListener(async (message) => { } }); + + +console.log("addon loaded"); sync_links(); -browser.storage.local.set({"attempt":0}); \ No newline at end of file +browser.storage.local.set({"attempt":0}); + diff --git a/src/close_helper.js b/src/close_helper.js deleted file mode 100644 index 6c210a3..0000000 --- a/src/close_helper.js +++ /dev/null @@ -1,3 +0,0 @@ -window.onbeforeunload = function() { - browser.runtime.sendMessage("sync"); -} diff --git a/src/lib/client.js b/src/lib/client.js index 162df19..a03f5c3 100644 --- a/src/lib/client.js +++ b/src/lib/client.js @@ -9,21 +9,16 @@ function generateToken(secret){ payload = base64url(`{ "iat": ${Math.floor(Date.now() / 1000)} }`) - console.log(payload) - // payload = base64url(`{ - // "iat": 1605996074 - // }`) var hash = CryptoJS.HmacSHA512(header + '.'+ payload, secret); var signature = hash.toString(CryptoJS.enc.Base64).replace(/\=+$/m,'').replaceAll('/','_').replaceAll('+','-'); return header + "." + payload + "." + signature } -async function getLinks(api_token){ +async function getLinks(api_token, url){ let token = generateToken(api_token) var result = await $.ajax( { - url: "https://sl.hmthsn.com/api/v1/links?limit=all", - //url: "http://127.0.0.1:8081/", + url: url, type: 'GET', headers:{"Authorization": 'Bearer ' + token} } ) diff --git a/src/login_close_helper.js b/src/login_close_helper.js new file mode 100644 index 0000000..91099c3 --- /dev/null +++ b/src/login_close_helper.js @@ -0,0 +1,27 @@ +(function() { + browser.storage.local.get("url", (storage)=>{ + server_url = storage.url; + if(!server_url){ + return + } + server_host = new URL(server_url).host; + if(window.location.host==server_host){ + if (window.location.pathname=="/login"){ + browser.storage.local.get().then(async (storage) => { + if(storage.attempt==0 && storage.login.length && storage.password.length){ + await browser.storage.local.set({ + attempt: 1 + }) + document.getElementsByName("login")[0].value=storage.login + document.getElementsByName("password")[0].value=storage.password + document.getElementsByName("loginform")[0].submit() + } + }) + } + window.onbeforeunload = function() { + browser.runtime.sendMessage("sync"); + } + } + }) +})(); + diff --git a/src/login_helper.js b/src/login_helper.js deleted file mode 100644 index 23ed663..0000000 --- a/src/login_helper.js +++ /dev/null @@ -1,10 +0,0 @@ -browser.storage.local.get().then(async (storage) => { - if(storage.attempt==0 && storage.login.length && storage.password.length){ - await browser.storage.local.set({ - attempt: 1 - }) - document.getElementsByName("login")[0].value=storage.login - document.getElementsByName("password")[0].value=storage.password - document.getElementsByName("loginform")[0].submit() - } -}) \ No newline at end of file diff --git a/src/options/options.html b/src/options/options.html index 312a3da..9f2a41b 100644 --- a/src/options/options.html +++ b/src/options/options.html @@ -1,56 +1,59 @@ - - - - - -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-   - -
+ + + + + + +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+   + +
+
+
Icons made by Freepik from www.flaticon.com
+ + - - - - + \ No newline at end of file diff --git a/src/storage.js b/src/storage.js index 4df7be5..a8e1d9b 100644 --- a/src/storage.js +++ b/src/storage.js @@ -5,7 +5,7 @@ var storage = { url: '', pageAction: false, popupWidth: 900, - popupHeight: 600, + popupHeight: 900, login: "", password: "", token: "",