From 52e2316ba5683ead9bcf1b5feb6b8618e4d39154 Mon Sep 17 00:00:00 2001 From: TheDuffman85 Date: Tue, 21 May 2024 15:35:53 +0200 Subject: [PATCH] Added files for send_to_ntfy_extension version 1.0 --- icons/icon128.png | Bin 0 -> 9218 bytes icons/icon16.png | Bin 0 -> 617 bytes icons/icon48.png | Bin 0 -> 2499 bytes manifest.json | 33 ++++++++++++ popup.html | 119 +++++++++++++++++++++++++++++++++++++++++ popup.js | 132 ++++++++++++++++++++++++++++++++++++++++++++++ service_worker.js | 9 ++++ 7 files changed, 293 insertions(+) create mode 100644 icons/icon128.png create mode 100644 icons/icon16.png create mode 100644 icons/icon48.png create mode 100644 manifest.json create mode 100644 popup.html create mode 100644 popup.js create mode 100644 service_worker.js diff --git a/icons/icon128.png b/icons/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..587f3daf010b8f99f7f7755d096a6041936145f3 GIT binary patch literal 9218 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 YA1Sr~Ru7wRmH+?%07*qoM6N<$f*tmrKmY&$ literal 0 HcmV?d00001 diff --git a/icons/icon16.png b/icons/icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..ee9aa18a125409a1a52c48074da2190f83230149 GIT binary patch literal 617 zcmV-v0+#)WP)j201uK|2F!717dlts9X?*RRP z0rHRc21pXemAP{H`q0qOPXREq2f)?WD@){aIjoHkK}5E85lFmeu=^P6wO_Z3r9(G^ zO>*Dt$BLhrnMykfd6&=T$b=!LimIZ4L!BcC0%~!~Po2M_gN4ph0Bt~$n0I}Ld$@G^ ztUg*S6In_zR{$rd{sDwRfH-Fe4)6fl_QI*7>0`#v3^RRkoPnNRT4{oaV#2N^BD8&K z11xlodeq{=%zZwut#WU4jDenBnm#5B0^DXh;uK`t<6!F~f;y#iM4VzGtT$@y7Ip&+qa&N+@rQRz zSIVp>F$Z#4ZVjKK_h2Ugi{HO8@#-mo>SiQ%0J1^Ik5+@bb1%teGUPHDVly6A<|yR~ zh*Q?04G# zU5r)L6~}*TpL0KknE?hthY=`FMu|i;5kiX^sA;9t#F(0rKB&=>v_@ZeFpcSpG%@Kz zlRh+QtksqV+lMA#Yh#+&XdtFj14cl}I0FU+DMH6_W)NrYoqNwYd-dUb+$&D4NnQ*}^dVcyx61#{gTlY$*Y*tXl{eRh1};{*=_Wk!loa6keV~ztEwo zQA%WVbo42JM;>{koR9#QiK==c5>>0!ZRK+L_do#n7i4=COjS`)YcN=AwZFfA=R-jKq@VzHU|^tFC=|96>nt0p(a8xEO_;>LDv;%d87WHAoMh#kJFVqJ zP*n=XV}7ZOAO;AHG5)Q$-ul?4O`G1_x^-&_h!PmFbVS6Cjg778>gqaV!4p-PsMq-U zYcKQe$N$FnOwywuA|OJ1O8-j?!hkfDN$ce9iAl~$J2cu65maDH?`j@gy$-e38e?Q? zYHIMFd+xdW8Fo& zb#)ma$`J^HAUCS#r=}ESlHOZytD*hi<jl8grV{xZOsGg30i^ITjw^_t3EG=WCONgFoQ z!w{>=+Ur;H+Xo)yiEn(1g7KILYIw#V&WO06Tgfz2&8Oq6?@J=!>Q)5L2qnLONhDSD zJhrX7i(lXW5O=KTV=|}{+9)QHrc<&;9Cf5bnq>$1k-9_zX+Bq==y{AxPV(xpBLMiu z5LruPEvpuH^UHgGz)$Y_4hzcj_`F_2#Nft(n^N;};sTc}78-*zGl?7l-}m!NRmTg) z80t3UXRrT_pT4?>564FEjKNDL9f0qxzMW_9dysGU-b@fhx%{4!QEoI6M`bcfKwq8_ zAZsuU)V5-gy&nwm_{%S{>+rt_Y>00Rs1jPs^_>fOV*RFE|KhgQeBolvz|&OmA_-*4 zPqOes6*|jp)NIIeZ@s}|FaMGLkB%eBl0a3dhhaQp=hj52_ubf{HN|FgKz@F>C;~AH z$sHnKQGDYe2&X<9=j`X_$k>U*>(&&YgP?KkW~D~P%B9aarqK)THRCoK9+PDK>lu%! zC_sTNH{HUI)@@{I=K=t1(qMbB*ib=J@J^R?GT^S~)BZ1ofP)|#tMj!gH!i-8$JT$7 zjVo^gh!=VYzA@CJkUc|(oOMhyU?;=m^1cJs3FO&cN6bzjZBW58h99oGi-&L9Ku4*J zRg2X)r2-r}dx{qh_A~J5SvpE3G?~FollSA3asE4Co3hVrV=xB^2}TT4QJwD21w6j~ zZU91SF(UXz7_Cn7;=B8K<^3aAptDrQq8Nd|TEb*0j)2J)fRgPA(tb*QA>Ib2li(cU zV0r>>8k2m3^(ev<$-KVz#8F;2*w3l+V|0|-@Qh$lM1%8(njrm{>ahxL%hT$|^8pE%|a`24d^!agqcj%w&JMlio7#5W0VNq-X)QC_C0=D$7 z=HXk`&yECmV&7jlHF1t|!ADhRl}`(S3xQ8v;TwYi{yKD+KOBCOPpcDjmfB)(t4(r$ zQdb(w@JJO^jbow7(#?HfqujPtvut$<1Y9%5Pzmci`Hwy9Km8$Xg(CAyZCJ9c6Yjz< zt0#gdg3gi>J!2e6G1L3Exf94T1W@oi&P`SMh<_`{+*96jXiMIo^k4C>n2G&-)K`ImZ=Na&qJOyh(+Sr6bx3O8U%5k zCk7jXOFB00CT1GIB%U{omsze8Qb!mOLX_@#9V}^U&#+i)D`(D}sQ~icd+*IoAO;Ro zVaQYzGQU*j_NB{dFP7q$r^(!qlLUES;H-NbZ@bs7MAJH+F>GFTBa2FH*!b0=34-AC z&Ye5Y_V)JrgM)*$76Phj-Rr3^Kv8a9vXl+Wd-?jZ8@TD3>t-9Y%WlRP1!Q=5xPM|| zqOxk$DxW0LrUV3_SS&7zE5u&7t$R7o-uEEuufHK{EY@X?=Vh|iU= zD^{%N0*X1tDS=w8_MA%~j3OI^VH8DC3!$rFVHi%0jg7swYuB!Ofvz9m2#;H3m| z5;Ddt1k_p^n)r=FRxpa9N~Ka67#<#eCb>E|=}`k=I-6QPXl#8 zdV70I#bVK`*Xv<-cQ=JXVGgU6i?flD5q#g*BS(%*(r{J|Jdk}KV_;yQ$i%lV{__DcI?>UuU)&gK%AyrFS}m&N?9`?X*z!y-v0lx{{rQ{YGuf}ML7Tf N002ovPDHLkV1m?>(02d; literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..70e3cfb --- /dev/null +++ b/manifest.json @@ -0,0 +1,33 @@ +{ + "manifest_version": 3, + "name": "Send to ntfy", + "version": "1.0", + "description": "Send to ntfy", + "permissions": [ + "activeTab", + "storage" + ], + "icons": { + "16": "icons/icon16.png", + "48": "icons/icon48.png", + "128": "icons/icon128.png" + }, + "background": { + "service_worker": "service_worker.js", + "scripts": ["service_worker.js"] + }, + "browser_specific_settings": { + "gecko": { + "id": "{cad379db-edfe-4c5e-b936-27a19156b5dc}" + } + }, + "action": { + "default_popup": "popup.html", + "default_icon": { + "16": "icons/icon16.png", + "48": "icons/icon48.png", + "128": "icons/icon128.png" + } + }, + "content_security_policy": {} +} \ No newline at end of file diff --git a/popup.html b/popup.html new file mode 100644 index 0000000..a5a008d --- /dev/null +++ b/popup.html @@ -0,0 +1,119 @@ + + + + + + +
+ + +
+
+ + 🔗 + +
+ +
+ + + + diff --git a/popup.js b/popup.js new file mode 100644 index 0000000..a710a1a --- /dev/null +++ b/popup.js @@ -0,0 +1,132 @@ +document.addEventListener('DOMContentLoaded', function() { + const status = document.getElementById('status'); + const warning = document.getElementById('warning'); + const topicSelect = document.getElementById('topic-select'); + + // Load saved configuration + chrome.storage.sync.get(['topics', 'apiUrl', 'accessToken'], function(items) { + if (chrome.runtime.lastError) { + console.error('Error retrieving settings:', chrome.runtime.lastError); + } else { + const topics = items.topics ? items.topics.split(',') : []; + document.getElementById('url').value = items.apiUrl || ''; + document.getElementById('token').value = items.accessToken || ''; + document.getElementById('topics').value = topics.join(','); + + // Populate the topic dropdown + topicSelect.innerHTML = ''; + topics.forEach(topic => { + const option = document.createElement('option'); + option.value = topic.trim(); + option.textContent = topic.trim(); + topicSelect.appendChild(option); + }); + } + }); + + // Toggle settings visibility + document.querySelector('.settings').addEventListener('click', function() { + const settingsDiv = document.getElementById('settings'); + settingsDiv.classList.toggle('hidden'); + }); + + // Save configuration + document.getElementById('save').addEventListener('click', function() { + const topics = document.getElementById('topics').value; + const apiUrl = document.getElementById('url').value; + const accessToken = document.getElementById('token').value; + + chrome.storage.sync.set({ topics, apiUrl, accessToken }, function() { + if (chrome.runtime.lastError) { + console.error('Error saving settings:', chrome.runtime.lastError); + status.textContent = 'Error saving configuration.'; + status.style.color = 'red'; + } else { + console.log('Configuration saved.'); + status.textContent = 'Configuration saved.'; + status.style.color = 'green'; + setTimeout(() => { status.textContent = ''; }, 3000); + + // Update the topic dropdown + const topicsArray = topics ? topics.split(',') : []; + topicSelect.innerHTML = ''; + topicsArray.forEach(topic => { + const option = document.createElement('option'); + option.value = topic.trim(); + option.textContent = topic.trim(); + topicSelect.appendChild(option); + }); + } + }); + }); + + // Open ntfy URL in new tab + document.querySelector('.open-url').addEventListener('click', function() { + chrome.storage.sync.get('apiUrl', function(items) { + const apiUrl = items.apiUrl; + if (apiUrl) { + chrome.tabs.create({ url: apiUrl }); + } else { + warning.textContent = 'Please configure ntfy URL first.'; + warning.style.color = 'red'; + warning.classList.remove('hidden'); + setTimeout(() => { warning.classList.add('hidden'); }, 3000); + } + }); + }); + + // Prefill the message textarea with the current tab's URL + chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) { + const url = tabs[0].url; + document.getElementById('message').value = url; + }); + + // Send current URL or edited message to ntfy + document.getElementById('send').addEventListener('click', function() { + chrome.storage.sync.get(['topics', 'apiUrl', 'accessToken'], function(items) { + if (chrome.runtime.lastError) { + console.error('Error retrieving settings:', chrome.runtime.lastError); + return; + } + + const topic = topicSelect.value; + const apiUrl = items.apiUrl; + const accessToken = items.accessToken; + const message = document.getElementById('message').value; + + if (!topic || !apiUrl) { + warning.classList.remove('hidden'); + warning.style.color = 'red'; + setTimeout(() => { warning.classList.add('hidden'); }, 3000); + return; + } + + const fullUrl = apiUrl + '/' + topic; + + const headers = new Headers(); + if (accessToken) { + headers.set('Authorization', 'Bearer ' + accessToken); + } + + fetch(fullUrl, { + method: "POST", + headers: headers, + body: message + }).then(response => { + if (!response.ok) { + console.error("Failed to send message:", response); + status.textContent = "Failed to send message."; + status.style.color = 'red'; + } else { + status.textContent = "Message sent successfully."; + status.style.color = 'green'; + setTimeout(() => { status.textContent = ''; }, 3000); + } + }).catch(error => { + console.error("Error:", error); + status.textContent = "Error: " + error; + status.style.color = 'red'; + }); + }); + }); +}); diff --git a/service_worker.js b/service_worker.js new file mode 100644 index 0000000..cb63f2c --- /dev/null +++ b/service_worker.js @@ -0,0 +1,9 @@ +chrome.runtime.onInstalled.addListener(function() { + chrome.storage.sync.get(['topic', 'apiUrl', 'accessToken'], function(items) { + if (!items.topic && !items.apiUrl && !items.accessToken) { + chrome.storage.sync.set({ topic: '', apiUrl: '', accessToken: '' }, function() { + console.log("The ntfy configuration is set to empty."); + }); + } + }); +});