Skip to content

Commit

Permalink
Refactored FF code to align more w/ Chromium code for easier maintena…
Browse files Browse the repository at this point in the history
  • Loading branch information
kudo-sync-bot committed Nov 30, 2024
1 parent 4130e62 commit 3ee0201
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 33 deletions.
66 changes: 40 additions & 26 deletions firefox/extension/lib/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,53 @@ window.config = {}
window.settings = {

controls: { // displays top-to-bottom in toolbar menu
infinityMode: { type: 'toggle',
label: chrome.i18n.getMessage('menuLabel_infinityMode') },
autoStart: { type: 'toggle',
label: chrome.i18n.getMessage('menuLabel_autoStart'),
helptip: chrome.i18n.getMessage('helptip_autoStart') },
toggleHidden: { type: 'toggle',
label: chrome.i18n.getMessage('menuLabel_toggleVis'),
helptip: chrome.i18n.getMessage('helptip_toggleVis') },
autoScrollDisabled: { type: 'toggle',
label: chrome.i18n.getMessage('menuLabel_autoScroll'),
helptip: chrome.i18n.getMessage('helptip_autoScroll') },
replyLanguage: { type: 'prompt', symbol: '🌐',
label: chrome.i18n.getMessage('menuLabel_replyLang'),
helptip: chrome.i18n.getMessage('prompt_updateReplyLang') },
replyTopic: { type: 'prompt', symbol: '🧠',
label: chrome.i18n.getMessage('menuLabel_replyTopic'),
helptip: chrome.i18n.getMessage('prompt_updateReplyTopic') },
replyInterval: { type: 'prompt', symbol: '⌚',
label: chrome.i18n.getMessage('menuLabel_replyInt'),
helptip: chrome.i18n.getMessage('prompt_updateReplyInt') }
get infinityMode() { return { type: 'toggle',
label: window.settings.getMsg('menuLabel_infinityMode') }},
get autoStart() { return { type: 'toggle',
label: window.settings.getMsg('menuLabel_autoStart'),
helptip: window.settings.getMsg('helptip_autoStart') }},
get toggleHidden() { return { type: 'toggle',
label: window.settings.getMsg('menuLabel_toggleVis'),
helptip: window.settings.getMsg('helptip_toggleVis') }},
get autoScrollDisabled() { return { type: 'toggle',
label: window.settings.getMsg('menuLabel_autoScroll'),
helptip: window.settings.getMsg('helptip_autoScroll') }},
get replyLanguage() { return { type: 'prompt', symbol: '🌐',
label: window.settings.getMsg('menuLabel_replyLang'),
helptip: window.settings.getMsg('prompt_updateReplyLang'),
status: window.config.replyLanguage }},
get replyTopic() { return { type: 'prompt', symbol: '🧠',
label: window.settings.getMsg('menuLabel_replyTopic'),
helptip: window.settings.getMsg('prompt_updateReplyTopic'),
status: window.config.replyTopic }},
get replyInterval() { return { type: 'prompt', symbol: '⌚',
label: window.settings.getMsg('menuLabel_replyInt'),
helptip: window.settings.getMsg('prompt_updateReplyInt'),
status: window.config.replyInterval }}
},

getMsg(key) {
return typeof chrome != 'undefined' && chrome.runtime ? chrome.i18n.getMessage(key)
: this.appProps.msgs[key] // assigned from app.msgs in userscript
},

load() {
const keys = ( // original array if array, else new array from multiple args
Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments))
return Promise.all(keys.map(key => // resolve promise when all keys load
new Promise(resolve => // resolve promise when single key value loads
chrome.storage.sync.get(key, result => { // load from browser extension storage
window.config[key] = result[key] || false ; resolve()
}))))},
if (typeof chrome != 'undefined' && chrome.runtime) // asynchronously load from browser extension storage
return Promise.all(keys.map(key => // resolve promise when all keys load
new Promise(resolve => // resolve promise when single key value loads
chrome.storage.sync.get(key, result => {
window.config[key] = result[key] || false ; resolve()
})))) ; else // synchronously load from userscript manager storage
keys.forEach(key => window.config[key] = GM_getValue(this.appProps.configKeyPrefix + '_' + key, false))
},

save(key, val) {
chrome.storage.sync.set({ [key]: val }) // save to browser extension storage
if (typeof chrome != 'undefined' && chrome.runtime) // save to browser extension storage
chrome.storage.sync.set({ [key]: val })
else // save to userscript manager storage
GM_setValue(this.appProps.configKeyPrefix + '_' + key, val)
window.config[key] = val // save to memory
}
};
8 changes: 1 addition & 7 deletions firefox/extension/popup/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,7 @@
// Create CHILD menu entries on chatgpt.com
if (site == 'chatgpt') {
await settings.load(Object.keys(settings.controls))

// Init prompt setting status labels
const re_all = new RegExp(`^(${chrome.i18n.getMessage('menuLabel_all')}|all|any|every)$`, 'i')
settings.controls.replyLanguage.status = config.replyLanguage
settings.controls.replyTopic.status = re_all.test(config.replyTopic) ?
chrome.i18n.getMessage('menuLabel_all') : toTitleCase(config.replyTopic)
settings.controls.replyInterval.status = `${config.replyInterval}s`

// Create/insert child section
const togglesDiv = dom.create.elem('div', { class: 'menu' })
Expand Down Expand Up @@ -150,7 +144,7 @@
const replyTopic = await (await prompt(chrome.i18n.getMessage('prompt_updateReplyTopic')
+ ' (' + chrome.i18n.getMessage('prompt_orEnter') + ' \'ALL\'):', config.replyTopic)).input
if (replyTopic != null) { // user didn't cancel
const str_replyTopic = replyTopic.toString()
const str_replyTopic = toTitleCase(replyTopic.toString())
settings.save('replyTopic',
!replyTopic || re_all.test(str_replyTopic) ? chrome.i18n.getMessage('menuLabel_all')
: str_replyTopic)
Expand Down

0 comments on commit 3ee0201

Please sign in to comment.