149 lines
4.5 KiB
JavaScript
149 lines
4.5 KiB
JavaScript
/*
|
|
Copyleft (ɔ) 2021 Mickie
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
import { host } from './background.js'
|
|
|
|
|
|
window.onload = () => {
|
|
|
|
/*
|
|
* Assign and get URLs To Respective Element
|
|
*/
|
|
|
|
const urlAssigner = (btn = {}) => {
|
|
const { id, href } = btn
|
|
const a = document.getElementById(id)
|
|
a.href = href
|
|
a.target = '_blank'
|
|
a.addEventListener('click', e => {
|
|
window.setTimeout(() => window.close(), 10)
|
|
})
|
|
}
|
|
|
|
(function getCurrentTabUrl() {
|
|
const queryInfo = {
|
|
active: true,
|
|
currentWindow: true,
|
|
}
|
|
|
|
chrome.tabs.query(queryInfo, (tabs = []) => {
|
|
if (tabs.length === 0) {
|
|
return
|
|
}
|
|
|
|
const tab = (tabs[0] || {});
|
|
const tabUrL = encodeURIComponent(tab.url)
|
|
const tabTitle = encodeURIComponent(tab.title)
|
|
mkBtns(tabUrL, tabTitle)
|
|
})
|
|
})()
|
|
|
|
|
|
/*
|
|
* Make Social Button Objects
|
|
*/
|
|
|
|
const mkBtns = (tabUrl = '', tabTitle = '') => {
|
|
|
|
// Set post items
|
|
|
|
const diasporaPost = `/bookmarklet?url=${tabUrl}&title=${tabTitle}&jump-doclose`
|
|
const friendicaPost = `/bookmarklet?url=${tabUrl}&title=${tabTitle}&jump-doclose`
|
|
const gnusocialPost = `/?action=newnotice&status_textarea=${tabTitle} ${tabUrl}`
|
|
const hubzillaPost = `/rpost?body=${tabTitle} &url=${tabUrl}`
|
|
const lemmyPost = `/create_post?url=${tabUrl}&title=${tabTitle}`
|
|
const mastodonPost = `/share?text=${tabTitle}&url=${tabUrl}`
|
|
const pleromaPost = `/share?message=${tabTitle} ${tabUrl}`
|
|
const socialhomePost = `/bookmarklet?url=${tabUrl}&title=${tabTitle}&jump-doclose`
|
|
const xmppPost = `?message=${tabTitle} ${tabUrl}`
|
|
|
|
// Set social Buttons
|
|
|
|
const socialBtns = []
|
|
|
|
const diaspora = {}
|
|
const friendica = {}
|
|
const gnusocial = {}
|
|
const hubzilla = {}
|
|
const lemmy = {}
|
|
const mastodon = {}
|
|
const pleroma = {}
|
|
const socialhome = {}
|
|
const xmpp = {}
|
|
|
|
const itemBtn = (item, hostId, hostKey, hostDefault, hostPost) => {
|
|
let itemHost = browser.storage.sync.get(`${hostKey}`)
|
|
itemHost.then((res) => {
|
|
document.querySelector(`#${hostId}`)
|
|
.href = [res[hostKey] || hostDefault] + hostPost
|
|
})
|
|
item.href = itemHost
|
|
item.id = hostId
|
|
socialBtns.push(item)
|
|
}
|
|
|
|
itemBtn(diaspora, 'url-diaspora', 'diasporaHost', host.diasporaDefault, diasporaPost)
|
|
itemBtn(friendica, 'url-friendica', 'friendicaHost', host.friendicaDefault, friendicaPost)
|
|
itemBtn(gnusocial, 'url-gnusocial', 'gnusocialHost', host.gnusocialDefault, gnusocialPost)
|
|
itemBtn(hubzilla, 'url-hubzilla', 'hubzillaHost', host.hubzillaDefault, hubzillaPost)
|
|
itemBtn(lemmy, 'url-lemmy', 'lemmyHost', host.lemmyDefault, lemmyPost)
|
|
itemBtn(mastodon, 'url-mastodon', 'mastodonHost', host.mastodonDefault, mastodonPost)
|
|
itemBtn(pleroma, 'url-pleroma', 'pleromaHost', host.pleromaDefault, pleromaPost)
|
|
itemBtn(socialhome, 'url-socialhome', 'socialhomeHost', host.socialhomeDefault, socialhomePost)
|
|
itemBtn(xmpp, 'url-xmpp', 'xmppHost', host.xmppDefault, xmppPost)
|
|
|
|
socialBtns.forEach(urlAssigner)
|
|
}
|
|
|
|
|
|
/*
|
|
* hide/show buttons
|
|
*/
|
|
|
|
const enableItem = (hostKey, hostId) => {
|
|
const item = chrome.storage.sync.get(`${hostKey}`, value => {
|
|
if (value[hostKey]) {
|
|
document.getElementById(`${hostId}`).removeAttribute('hidden')
|
|
}
|
|
})
|
|
}
|
|
|
|
enableItem('diasporaCheck', 'url-diaspora')
|
|
enableItem('friendicaCheck', 'url-friendica')
|
|
enableItem('gnusocialCheck', 'url-gnusocial')
|
|
enableItem('hubzillaCheck', 'url-hubzilla')
|
|
enableItem('lemmyCheck', 'url-lemmy')
|
|
enableItem('mastodonCheck', 'url-mastodon')
|
|
enableItem('pleromaCheck', 'url-pleroma')
|
|
enableItem('socialhomeCheck', 'url-socialhome')
|
|
enableItem('xmppCheck', 'url-xmpp')
|
|
|
|
|
|
/*
|
|
* Open options page
|
|
*/
|
|
|
|
function openOptions() {
|
|
browser.runtime.openOptionsPage()
|
|
}
|
|
|
|
const el = document.getElementById('options')
|
|
el.addEventListener('click', function() {openOptions()}, false)
|
|
|
|
|
|
}
|