refactor: usePreference + update TS tooling (#2333)
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
import { useApplication } from '@/Components/ApplicationProvider'
|
||||
import { PrefDefaults } from '@/Constants/PrefDefaults'
|
||||
import { ApplicationEvent, PrefKey } from '@standardnotes/snjs'
|
||||
import { useEffect, useState } from 'react'
|
||||
|
||||
export default function usePreference<T>(preference: PrefKey) {
|
||||
export default function usePreference<Key extends PrefKey>(preference: Key) {
|
||||
const application = useApplication()
|
||||
|
||||
const [value, setValue] = useState<T>(application.getPreference(preference) as T)
|
||||
const [value, setValue] = useState(application.getPreference(preference, PrefDefaults[preference]))
|
||||
|
||||
useEffect(() => {
|
||||
return application.addEventObserver(async () => {
|
||||
const latestValue = application.getPreference(preference)
|
||||
const latestValue = application.getPreference(preference, PrefDefaults[preference])
|
||||
|
||||
setValue(latestValue as T)
|
||||
setValue(latestValue)
|
||||
}, ApplicationEvent.PreferencesChanged)
|
||||
}, [application, preference])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user