80 lines
1.7 KiB
JavaScript
80 lines
1.7 KiB
JavaScript
|
window.browser = window.browser || window.chrome
|
||
|
|
||
|
import servicesHelper from "./services.js"
|
||
|
|
||
|
function getRandomInstance(instances) {
|
||
|
return instances[~~(instances.length * Math.random())]
|
||
|
}
|
||
|
|
||
|
function camelCase(str) {
|
||
|
return str.charAt(0).toUpperCase() + str.slice(1)
|
||
|
}
|
||
|
|
||
|
function protocolHost(url) {
|
||
|
if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}`
|
||
|
return `${url.protocol}//${url.host}`
|
||
|
}
|
||
|
|
||
|
function copyRaw(test, copyRawElement) {
|
||
|
return new Promise(resolve => {
|
||
|
browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
|
||
|
let currTab = tabs[0]
|
||
|
if (currTab) {
|
||
|
let url
|
||
|
try {
|
||
|
url = new URL(currTab.url)
|
||
|
} catch {
|
||
|
resolve()
|
||
|
return
|
||
|
}
|
||
|
|
||
|
const newUrl = await servicesHelper.reverse(url)
|
||
|
|
||
|
if (newUrl) {
|
||
|
resolve(newUrl)
|
||
|
if (test) return
|
||
|
navigator.clipboard.writeText(newUrl)
|
||
|
if (copyRawElement) {
|
||
|
const textElement = copyRawElement.getElementsByTagName("h4")[0]
|
||
|
const oldHtml = textElement.innerHTML
|
||
|
textElement.innerHTML = browser.i18n.getMessage("copied")
|
||
|
setTimeout(() => (textElement.innerHTML = oldHtml), 1000)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
resolve()
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function switchInstance(test) {
|
||
|
return new Promise(resolve => {
|
||
|
browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
|
||
|
let currTab = tabs[0]
|
||
|
if (currTab) {
|
||
|
let url
|
||
|
try {
|
||
|
url = new URL(currTab.url)
|
||
|
} catch {
|
||
|
resolve()
|
||
|
return
|
||
|
}
|
||
|
const newUrl = await servicesHelper.switchInstance(url)
|
||
|
|
||
|
if (newUrl) {
|
||
|
if (!test) browser.tabs.update({ url: newUrl })
|
||
|
resolve(true)
|
||
|
} else resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
export default {
|
||
|
getRandomInstance,
|
||
|
protocolHost,
|
||
|
switchInstance,
|
||
|
copyRaw,
|
||
|
camelCase,
|
||
|
}
|