Files
omnivore/pkg/extension/src/scripts/common.js
2023-05-22 14:51:53 +08:00

125 lines
3.0 KiB
JavaScript

'use strict'
window.browserApi =
(typeof chrome === 'object' && chrome && chrome.runtime && chrome) ||
(typeof browser === 'object' && browser) ||
{} // eslint-disable-line no-undef
window.browserActionApi =
browserApi.action || browserApi.browserAction || browserApi.pageAction
window.browserScriptingApi = browserApi.scripting || browserApi.tabs
window.ENV_EXTENSION_ORIGIN = browserApi.runtime
.getURL('PATH/')
.replace('/PATH/', '')
window.ENV_IS_FIREFOX = ENV_EXTENSION_ORIGIN.startsWith('moz-extension://')
window.ENV_IS_EDGE = navigator.userAgent.toLowerCase().indexOf('edg') > -1
window.ENV_DOES_NOT_SUPPORT_BLOB_URL_ACCESS =
/^((?!chrome|android).)*safari/i.test(navigator.userAgent)
window.SELECTORS = {
CANONICAL_URL: ["head > link[rel='canonical']"],
TITLE: ["head > meta[property='og:title']"],
}
window.ACTIONS = {
Ping: 'PING',
ShowMessage: 'SHOW_MESSAGE',
GetContent: 'GET_CONTENT',
AddIframeContent: 'ADD_IFRAME_CONTENT',
RefreshDarkMode: 'REFRESH_DARK_MODE',
GetAuthToken: 'GET_AUTH_TOKEN',
LabelCacheUpdated: 'LABEL_CACHE_UPDATED',
ShowToolbar: 'SHOW_TOOLBAR',
UpdateStatus: 'UPDATE_STATUS',
AddNote: 'ADD_NOTE',
EditTitle: 'EDIT_TITLE',
SetLabels: 'SET_LABELS',
Archive: 'ARCHIVE',
Delete: 'DELETE',
}
window.SAVE_URL_QUERY = `mutation SaveUrl ($input: SaveUrlInput!) {
saveUrl(input:$input){
... on SaveSuccess {
url
clientRequestId
}
... on SaveError {
errorCodes
}
}
}`
window.SAVE_FILE_QUERY = `mutation SaveFile ($input: SaveFileInput!) {
saveFile(input:$input){
... on SaveSuccess {
url
clientRequestId
}
... on SaveError {
errorCodes
}
}
}`
window.SAVE_PAGE_QUERY = `mutation SavePage ($input: SavePageInput!) {
savePage(input:$input){
... on SaveSuccess {
url
clientRequestId
}
... on SaveError {
errorCodes
}
}
}`
function handleBackendUrl(url) {
try {
const FORCE_CONTENT_FETCH_URLS = [
// twitter status url regex
/twitter\.com\/(?:#!\/)?(\w+)\/status(?:es)?\/(\d+)(?:\/.*)?/,
/^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu\.be|piped\.video))(\/(?:[\w-]+\?v=|embed\/|v\/)?)([\w-]+)(\S+)?$/,
]
return FORCE_CONTENT_FETCH_URLS.some((regex) => regex.test(url))
} catch (error) {
console.log('error checking url', url)
}
return false
}
/* storage helper functions */
function getStorage(keyOrKeys) {
return new Promise((resolve) => {
browserApi.storage.local.get(keyOrKeys || null, (result) => {
resolve(result || {})
})
})
}
function getStorageItem(singleKey) {
return new Promise((resolve) => {
browserApi.storage.local.get(singleKey, (result) => {
const finalResult = (result && result[singleKey]) || null
resolve(finalResult)
})
})
}
function setStorage(itemsToSet) {
return new Promise((resolve) => {
browserApi.storage.local.set(itemsToSet, resolve)
})
}
function removeStorage(itemsToRemove) {
return new Promise((resolve) => {
browserApi.storage.local.remove(itemsToRemove, resolve)
})
}