Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
commit
03634b1ca3
11340 files changed
+3442369
No files matched your search
@@ -0,0 +1,32 @@
|
||||
import { atom } from 'nanostores'
|
||||
|
||||
import { persistString, storedString } from '@/lib/storage'
|
||||
|
||||
const STORAGE_KEY = 'hermes.desktop.completionSoundVariantId'
|
||||
|
||||
export const DEFAULT_COMPLETION_SOUND_VARIANT_ID = 1
|
||||
|
||||
// Range mirrors COMPLETION_SOUND_VARIANTS in lib/completion-sound.ts. Validating
|
||||
// by range (not membership) keeps this store free of a dependency on the lib,
|
||||
// which imports the atom back — a membership check would close that cycle.
|
||||
const VARIANT_COUNT = 14
|
||||
|
||||
export function resolveCompletionSoundVariantId(variantId: number): number {
|
||||
return Number.isInteger(variantId) && variantId >= 1 && variantId <= VARIANT_COUNT
|
||||
? variantId
|
||||
: DEFAULT_COMPLETION_SOUND_VARIANT_ID
|
||||
}
|
||||
|
||||
function load(): number {
|
||||
const stored = storedString(STORAGE_KEY)
|
||||
|
||||
return stored ? resolveCompletionSoundVariantId(Number.parseInt(stored, 10)) : DEFAULT_COMPLETION_SOUND_VARIANT_ID
|
||||
}
|
||||
|
||||
export const $completionSoundVariantId = atom(load())
|
||||
|
||||
$completionSoundVariantId.subscribe(id => persistString(STORAGE_KEY, String(id)))
|
||||
|
||||
export function setCompletionSoundVariantId(variantId: number) {
|
||||
$completionSoundVariantId.set(resolveCompletionSoundVariantId(variantId))
|
||||
}
|
||||
Reference in new issue
Block a user