feat: Screwdriver v1.0.0
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import { getSettings, setSettings, clearClipboardHistory } from '../utils/storage.js'
|
||||
|
||||
const showDanger = document.getElementById('show-danger') as HTMLInputElement
|
||||
const copyOnTranslate = document.getElementById('copy-on-translate') as HTMLInputElement
|
||||
const contextMenu = document.getElementById('context-menu') as HTMLInputElement
|
||||
const inlinePanel = document.getElementById('inline-panel') as HTMLInputElement
|
||||
const preferredShell = document.getElementById('preferred-shell') as HTMLSelectElement
|
||||
const theme = document.getElementById('theme') as HTMLSelectElement
|
||||
const statusEl = document.getElementById('status') as HTMLElement
|
||||
|
||||
async function loadSettings() {
|
||||
const settings = await getSettings()
|
||||
showDanger.checked = settings.showDangerWarning
|
||||
copyOnTranslate.checked = settings.copyOnTranslate
|
||||
contextMenu.checked = settings.contextMenuEnabled
|
||||
inlinePanel.checked = settings.inlinePanelEnabled
|
||||
preferredShell.value = settings.preferredShell
|
||||
theme.value = settings.theme
|
||||
}
|
||||
|
||||
async function save() {
|
||||
await setSettings({
|
||||
showDangerWarning: showDanger.checked,
|
||||
copyOnTranslate: copyOnTranslate.checked,
|
||||
contextMenuEnabled: contextMenu.checked,
|
||||
inlinePanelEnabled: inlinePanel.checked,
|
||||
preferredShell: preferredShell.value as 'bash' | 'zsh' | 'fish' | 'powershell',
|
||||
theme: theme.value as 'light' | 'dark' | 'auto',
|
||||
})
|
||||
statusEl.classList.remove('hidden')
|
||||
setTimeout(() => statusEl.classList.add('hidden'), 2000)
|
||||
}
|
||||
|
||||
showDanger.addEventListener('change', save)
|
||||
copyOnTranslate.addEventListener('change', save)
|
||||
contextMenu.addEventListener('change', save)
|
||||
inlinePanel.addEventListener('change', save)
|
||||
preferredShell.addEventListener('change', save)
|
||||
theme.addEventListener('change', save)
|
||||
|
||||
document.getElementById('clear-history')?.addEventListener('click', async () => {
|
||||
await clearClipboardHistory()
|
||||
statusEl.textContent = 'History cleared'
|
||||
statusEl.classList.remove('hidden')
|
||||
setTimeout(() => {
|
||||
statusEl.classList.add('hidden')
|
||||
statusEl.textContent = 'Settings saved'
|
||||
}, 2000)
|
||||
})
|
||||
|
||||
document.getElementById('reset-settings')?.addEventListener('click', async () => {
|
||||
if (!confirm('Reset all settings to defaults?')) return
|
||||
await chrome.storage.sync.remove('screwdriver_settings')
|
||||
await loadSettings()
|
||||
statusEl.textContent = 'Settings reset'
|
||||
statusEl.classList.remove('hidden')
|
||||
setTimeout(() => {
|
||||
statusEl.classList.add('hidden')
|
||||
statusEl.textContent = 'Settings saved'
|
||||
}, 2000)
|
||||
})
|
||||
|
||||
loadSettings()
|
||||
Reference in New Issue
Block a user