Skip to content

Commit

Permalink
fix(useStorageAsync): handle mergeDefaults option (#2773)
Browse files Browse the repository at this point in the history
  • Loading branch information
ModyQyW committed Feb 16, 2023
1 parent 4fc8ad9 commit 105f4c3
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion packages/core/useStorageAsync/index.ts
@@ -1,5 +1,5 @@
import type { MaybeComputedRef, RemovableRef } from '@vueuse/shared'
import { resolveUnref, watchWithFilter } from '@vueuse/shared'
import { isFunction, resolveUnref, watchWithFilter } from '@vueuse/shared'
import type { Ref } from 'vue-demi'
import { ref, shallowRef } from 'vue-demi'
import type { StorageLikeAsync } from '../ssr-handlers'
Expand Down Expand Up @@ -43,6 +43,7 @@ export function useStorageAsync<T extends(string | number | boolean | object | n
deep = true,
listenToStorageChanges = true,
writeDefaults = true,
mergeDefaults = false,
shallow,
window = defaultWindow,
eventFilter,
Expand Down Expand Up @@ -77,6 +78,14 @@ export function useStorageAsync<T extends(string | number | boolean | object | n
if (writeDefaults && rawInit !== null)
await storage.setItem(key, await serializer.write(rawInit))
}
else if (mergeDefaults) {
const value = await serializer.read(rawValue)
if (isFunction(mergeDefaults))
data.value = mergeDefaults(value, rawInit)
else if (type === 'object' && !Array.isArray(value))
data.value = { ...(rawInit as any), ...value }
else data.value = value
}
else {
data.value = await serializer.read(rawValue)
}
Expand Down

0 comments on commit 105f4c3

Please sign in to comment.