diff --git a/manifest.json b/manifest.json index fb33964..c047326 100644 --- a/manifest.json +++ b/manifest.json @@ -42,5 +42,5 @@ "manifest_version": 3, "name": "LeafLLM", "homepage_url": "https://github.com/achiyae/LeafLLM", - "version": "1.2.1" + "version": "1.2.2" } diff --git a/popup/popup.html b/popup/popup.html index 9d86849..21a5e3a 100644 --- a/popup/popup.html +++ b/popup/popup.html @@ -1,7 +1,6 @@
- diff --git a/popup/popup.js b/popup/popup.js index bb9580c..8c6a917 100644 --- a/popup/popup.js +++ b/popup/popup.js @@ -17,17 +17,32 @@ async function refreshStorage() { $('#api-token-form .api-token-status').text(chrome.runtime.lastError || !openAIAPIKey ? 'not set' : 'set') }) + const commands = await chrome.commands.getAll(); + chrome.storage.local.get(['Improve', 'Complete', 'Ask']).then((settings) => { + Object.values(settings).forEach(setting => { + let command = commands.filter(({ name }) => name === setting.key)[0] + if(command.shortcut !== setting.shortcut) { + setting.shortcut = command.shortcut; + if(setting.status === 'enabled' && setting.shortcut === '') { + setting.status = 'error' + } + chrome.storage.local.set({ [setting.key]: setting }); + } else if(setting.status === 'enabled' && setting.shortcut === '') { + setting.status = 'error' + chrome.storage.local.set({ [setting.key]: setting }) + } + }) let bindingFailures = Object.values(settings) .filter(({ status }) => status === 'error') - .map(({ key, shortcut }) => `${shortcut} for ${key}`) - .join(', ') + .map(({ key }) => `${key}`) + .join(', '); if (bindingFailures.length > 0) { addErrorMessage(`Could not bind the following shortcuts:\n${bindingFailures}.\nYou can set it manually at chrome://extensions/shortcuts.`) } Object.values(settings).forEach(({ key, status, shortcut }) => { $(`#settings-form input[name='text-${key}']:checkbox`).prop('checked', status === 'enabled') - let shortcut2 = status === 'error' ? 'not set' : shortcut + let shortcut2 = shortcut === '' ? 'not set' : shortcut $(`#shortcut-${key}`).html(`${shortcut2}`) }) }) @@ -64,7 +79,7 @@ async function handleAPITokenClear(event) { .catch((error) => addErrorMessage(`Failed to remove API Token. Error: ${error}`)) } -async function makeHandleSettingChange(key) { +function makeHandleSettingChange(key) { return async (event) => { event.preventDefault() event.stopPropagation() @@ -72,10 +87,12 @@ async function makeHandleSettingChange(key) { const value = event.target.checked const setting = await chrome.storage.local.get(key) - if (setting[key].status !== 'error') { +/* let commandKey = await chrome.commands.getAll() + commandKey = commandKey.filter(({ name }) => name === key)[0]*/ + // if (setting[key].status !== 'error') { setting[key].status = value ? 'enabled' : 'disabled' await chrome.storage.local.set({ [key]: setting[key] }) - } + // } return refreshStorage() } } diff --git a/scripts/service-worker.js b/scripts/service-worker.js index 2cf722e..9cbd107 100644 --- a/scripts/service-worker.js +++ b/scripts/service-worker.js @@ -20,13 +20,7 @@ function addListener(commandName) { }) } -chrome.runtime.onInstalled.addListener((reason) => { - if (reason.reason === chrome.runtime.OnInstalledReason.INSTALL) { - checkCommandShortcuts() - } -}) - -// Only use this function during the initial install phase. After +// Only use this function during the initial installation phase. After // installation the user may have intentionally unassigned commands. // Example for install commands: [{"description":"","name":"_execute_action","shortcut":""},{"description":"Use the selected text to ask GPT. It adds to the beginning of the selected text: 'In Latex, '","name":"Ask","shortcut":""},{"description":"Complete selected text","name":"Complete","shortcut":""},{"description":"Improve selected text","name":"Improve","shortcut":""}] async function checkCommandShortcuts() { @@ -45,6 +39,12 @@ async function checkCommandShortcuts() { }) } +chrome.runtime.onInstalled.addListener((reason) => { + if (reason.reason === chrome.runtime.OnInstalledReason.INSTALL) { + checkCommandShortcuts() + } +}) + async function setup() { addListener('Improve') addListener('Complete')