diff --git a/src/components/OptionsForm.vue b/src/components/OptionsForm.vue
index eba7f11..eb09c96 100644
--- a/src/components/OptionsForm.vue
+++ b/src/components/OptionsForm.vue
@@ -80,29 +80,6 @@ onMounted(() => {
@save="saveKeyValue"
/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/PanelHeader.vue b/src/components/PanelHeader.vue
index 8225a9f..6d70a93 100644
--- a/src/components/PanelHeader.vue
+++ b/src/components/PanelHeader.vue
@@ -58,13 +58,14 @@ console.log('config:', config)
-
+
@@ -96,10 +97,8 @@ console.log('config:', config)
{
chrome.runtime.onInstalled.addListener(onInstalled)
chrome.runtime.onStartup.addListener(onStartup)
- chrome.runtime.onMessage.addListener(onMessage)
chrome.storage.onChanged.addListener(onChanged)
+ chrome.runtime.onMessage.addListener(onMessage)
chrome.commands?.onCommand.addListener(onCommand)
chrome.contextMenus?.onClicked.addListener(onClicked)
})
async function setUninstallURL() {
const manifest = chrome.runtime.getManifest()
- const url = new URL(`${manifest.homepage_url}`)
+ if (!manifest.homepage_url) return console.warn('No manifest.homepage_url')
+ const url = new URL(manifest.homepage_url)
url.pathname = '/uninstall/'
url.searchParams.append('version', manifest.version)
await chrome.runtime.setUninstallURL(url.href)
- console.debug(`setUninstallURL: ${url.href}`)
+}
+
+async function setDefaultOptions(defaultOptions: object) {
+ console.log('setDefaultOptions', defaultOptions)
+ options = await getOptions()
+ let changed = false
+ for (const [key, value] of Object.entries(defaultOptions)) {
+ // console.log(`${key}: default: ${value} current: ${options[key]}`)
+ if (options[key] === undefined) {
+ changed = true
+ options[key] = value
+ console.log(`Set %c${key}:`, 'color: Khaki', value)
+ }
+ }
+ if (changed) {
+ await chrome.storage.sync.set({ options })
+ console.log('changed options:', options)
+ }
+ return options
}
async function onInstalled(details: chrome.runtime.InstalledDetails) {
@@ -34,14 +54,14 @@ async function onInstalled(details: chrome.runtime.InstalledDetails) {
options = await setDefaultOptions(defaultOptions)
console.debug('options:', options)
- createContextMenus(options)
+ createContextMenus(options).catch(console.warn)
+ setUninstallURL().catch(console.warn)
+ const config = useAppConfig()
+ console.log('config:', config)
const manifest = chrome.runtime.getManifest()
console.debug('manifest:', manifest)
- // await chrome.runtime.setUninstallURL(`${manifest.homepage_url}/issues`)
- await setUninstallURL()
-
if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
// await chrome.runtime.openOptionsPage()
// const hasPerms = await checkPerms(manifest)
@@ -58,7 +78,7 @@ async function onInstalled(details: chrome.runtime.InstalledDetails) {
} else if (details.reason === chrome.runtime.OnInstalledReason.UPDATE) {
if (options.showUpdate) {
if (manifest.version !== details.previousVersion) {
- const url = `${manifest.homepage_url}/releases/tag/${manifest.version}`
+ const url = `${config.github_url}/releases/tag/${manifest.version}`
await chrome.tabs.create({ active: false, url })
}
}
@@ -72,75 +92,56 @@ async function onStartup() {
// NOTE: Confirm these checks are still necessary...
options = await getOptions()
console.debug('options:', options)
- createContextMenus(options)
-
- // const manifest = chrome.runtime.getManifest()
- // console.debug('manifest:', manifest)
- // await chrome.runtime.setUninstallURL(`${manifest.homepage_url}/issues`)
- await setUninstallURL()
- }
-}
-
-async function setDefaultOptions(defaultOptions: object) {
- console.log('setDefaultOptions', defaultOptions)
- options = await getOptions()
- let changed = false
- for (const [key, value] of Object.entries(defaultOptions)) {
- // console.log(`${key}: default: ${value} current: ${options[key]}`)
- if (options[key] === undefined) {
- changed = true
- options[key] = value
- console.log(`Set %c${key}:`, 'color: Khaki', value)
- }
- }
- if (changed) {
- await chrome.storage.sync.set({ options })
- console.log('changed options:', options)
- }
- return options
-}
-
-function onMessage(
- message: any,
- _sender: chrome.runtime.MessageSender,
- _sendResponse: Function,
-) {
- console.log('background/index.ts: onMessage:', message)
- if (message === 'openPopup') {
- openPopup().catch(console.log)
+ createContextMenus(options).catch(console.warn)
+ setUninstallURL().catch(console.warn)
}
}
function onChanged(changes: object, namespace: string) {
- // console.debug('onChanged:', changes, namespace)
+ // console.debug('background/index.ts: onChanged:', changes, namespace)
for (const [key, { oldValue, newValue }] of Object.entries(changes)) {
if (namespace === 'sync' && key === 'options' && oldValue && newValue) {
options = newValue
if (oldValue.contextMenu !== newValue.contextMenu) {
if (newValue?.contextMenu) {
console.log('%c Enabled contextMenu...', 'color: SpringGreen')
- createContextMenus(newValue)
+ createContextMenus(newValue).catch(console.warn)
} else {
console.log('%c Disabled contextMenu...', 'color: OrangeRed')
- chrome.contextMenus?.removeAll()
+ chrome.contextMenus?.removeAll().catch(console.warn)
}
}
}
}
}
+function onMessage(
+ message: any,
+ _sender: chrome.runtime.MessageSender,
+ _sendResponse: Function,
+) {
+ console.log('background/index.ts: onMessage:', message)
+ if (message === 'openPopup') {
+ openPopup().catch(console.log)
+ }
+}
+
async function onCommand(command: string, tab?: chrome.tabs.Tab) {
console.debug('onCommand:', command, tab)
- if (command === 'openOptions') {
- await chrome.runtime.openOptionsPage()
- } else if (command === 'openExtPanel') {
- await openExtPanel()
- } else if (command === 'openSidePanel') {
- openSidePanel()
- } else if (command === 'cmdExtractAll') {
- await extractAndOpen(options)
- } else {
- console.warn(`Unknown Command: ${command}`)
+ try {
+ if (command === 'openOptions') {
+ await chrome.runtime.openOptionsPage()
+ } else if (command === 'openExtPanel') {
+ await openExtPanel()
+ } else if (command === 'openSidePanel') {
+ openSidePanel()
+ } else if (command === 'cmdExtractAll') {
+ await extractAndOpen(options)
+ } else {
+ console.warn(`Unknown Command: ${command}`)
+ }
+ } catch (e) {
+ console.warn(e)
}
}
diff --git a/src/entrypoints/background/menus.ts b/src/entrypoints/background/menus.ts
index ce2ed85..02b4220 100644
--- a/src/entrypoints/background/menus.ts
+++ b/src/entrypoints/background/menus.ts
@@ -21,16 +21,12 @@ const contexts: chrome.contextMenus.CreateProperties[] = config.map((entry) => (
: { title: i18n.t(`ctx.${entry.id}` as any) }),
}))
-// NOTE: Below is ported from VanillaJS
-
-export function createContextMenus(options: Options) {
+export async function createContextMenus(options: Options) {
console.log('createContextMenus:', options)
if (!options.contextMenu) return console.log('Disabled: options.contextMenu')
if (!chrome.contextMenus) return console.log('Unsupported: chrome.contextMenus')
- chrome.contextMenus.removeAll().then(() => {
- contexts.forEach((item) => {
- // console.log(item.id, options[item.id!])
- chrome.contextMenus.create(item)
- })
+ await chrome.contextMenus.removeAll()
+ contexts.forEach((item) => {
+ chrome.contextMenus.create(item)
})
}
diff --git a/src/entrypoints/options/App.vue b/src/entrypoints/options/App.vue
index 985acbb..a120431 100644
--- a/src/entrypoints/options/App.vue
+++ b/src/entrypoints/options/App.vue
@@ -1,5 +1,5 @@