refactor(stage-shared): now useVersionedLocalStorageManualReset
This commit is contained in:
@@ -1 +1,3 @@
|
||||
export * from './use-local-storage-manual-reset'
|
||||
export * from './use-versioned-local-storage'
|
||||
export * from './use-versioned-local-storage-manual-reset'
|
||||
|
||||
+5
-1
@@ -4,7 +4,11 @@ import type { MaybeRefOrGetter, WatchOptions } from 'vue'
|
||||
import { refManualReset, useLocalStorage } from '@vueuse/core'
|
||||
import { unref, watch } from 'vue'
|
||||
|
||||
export function useLocalStorageManualReset<T>(key: MaybeRefOrGetter<string>, initialValue: MaybeRefOrGetter<T>, options?: UseStorageOptions<T> & WatchOptions): ManualResetRefReturn<T> {
|
||||
export function useLocalStorageManualReset<T>(
|
||||
key: MaybeRefOrGetter<string>,
|
||||
initialValue: MaybeRefOrGetter<T>,
|
||||
options?: UseStorageOptions<T> & WatchOptions,
|
||||
): ManualResetRefReturn<T> {
|
||||
const value = unref(initialValue)
|
||||
const localStorageState = useLocalStorage<T>(key, value, options)
|
||||
const state = refManualReset<T>(localStorageState)
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
import type { ManualResetRefReturn, UseStorageOptions } from '@vueuse/core'
|
||||
import type { MaybeRefOrGetter } from 'vue'
|
||||
|
||||
import type { UseVersionedStorageOptions } from '../use-versioned-local-storage'
|
||||
|
||||
import { refManualReset } from '@vueuse/core'
|
||||
import { unref, watch } from 'vue'
|
||||
|
||||
import { useVersionedLocalStorage } from '../use-versioned-local-storage'
|
||||
|
||||
export function useVersionedLocalStorageManualReset<T>(
|
||||
key: MaybeRefOrGetter<string>,
|
||||
initialValue: MaybeRefOrGetter<T>,
|
||||
options?: UseStorageOptions<T> & UseVersionedStorageOptions<T>,
|
||||
): ManualResetRefReturn<T> {
|
||||
const value = unref(initialValue)
|
||||
const localStorageState = useVersionedLocalStorage<T>(key, value, options)
|
||||
const state = refManualReset<T>(localStorageState)
|
||||
|
||||
const { resume, pause } = watch(state, newValue => localStorageState.value = newValue, options)
|
||||
watch(localStorageState, (newValue) => {
|
||||
pause()
|
||||
state.value = newValue
|
||||
resume()
|
||||
}, options)
|
||||
|
||||
return state
|
||||
}
|
||||
+7
-7
@@ -1,11 +1,11 @@
|
||||
import type { IfAny, UseStorageOptions } from '@vueuse/core'
|
||||
import type { MaybeRefOrGetter, Ref, UnwrapRef } from 'vue'
|
||||
import type { UseStorageOptions } from '@vueuse/core'
|
||||
import type { MaybeRefOrGetter, Ref } from 'vue'
|
||||
|
||||
import { useLocalStorage } from '@vueuse/core'
|
||||
import { ref, toValue, watch } from 'vue'
|
||||
|
||||
interface Versioned<T> { version?: string, data?: T }
|
||||
interface UseVersionedStorageOptions<T> {
|
||||
export interface Versioned<T> { version?: string, data?: T }
|
||||
export interface UseVersionedStorageOptions<T> {
|
||||
defaultVersion?: string
|
||||
satisfiesVersionBy?: (version: string) => boolean
|
||||
onVersionMismatch?: (value: Versioned<T>) => OnVersionMismatchActions<T>
|
||||
@@ -19,9 +19,9 @@ export function useVersionedLocalStorage<T>(
|
||||
key: MaybeRefOrGetter<string>,
|
||||
initialValue: MaybeRefOrGetter<T>,
|
||||
options?: UseStorageOptions<T> & UseVersionedStorageOptions<T>,
|
||||
): [T] extends [Ref<any, any>] ? IfAny<T, Ref<T, T>, T> : Ref<UnwrapRef<T>, T | UnwrapRef<T>> {
|
||||
): Ref<T, T> {
|
||||
const defaultVersion = options?.defaultVersion || '1.0.0'
|
||||
const data = ref(toValue(initialValue))
|
||||
const data = ref(toValue(initialValue)) as Ref<T, T>
|
||||
const rawValue = useLocalStorage<Versioned<T>>(key, { version: defaultVersion, data: toValue(initialValue) }, options as unknown as UseStorageOptions<Versioned<T>>)
|
||||
|
||||
watch(rawValue, (value) => {
|
||||
@@ -42,7 +42,7 @@ export function useVersionedLocalStorage<T>(
|
||||
}
|
||||
}
|
||||
|
||||
data.value = rawValue.value.data
|
||||
data.value = rawValue.value.data!
|
||||
return
|
||||
}
|
||||
|
||||
@@ -10,6 +10,5 @@ export * from './use-build-info'
|
||||
export * from './use-chat-session/summary'
|
||||
export * from './use-optimistic'
|
||||
export * from './use-scroll-to-hash'
|
||||
export * from './use-versioned-local-storage'
|
||||
export * from './vision'
|
||||
export * from './whisper'
|
||||
|
||||
Reference in New Issue
Block a user