feat: cache for publish widget
This commit is contained in:
parent
5d5cdebb56
commit
193d1cf5c5
9 changed files with 149 additions and 43 deletions
28
composables/useCacheStorage.ts
Normal file
28
composables/useCacheStorage.ts
Normal file
|
@ -0,0 +1,28 @@
|
|||
export function useCacheStorage<T>(
|
||||
key: string,
|
||||
getter: () => T | Promise<T>,
|
||||
TTL = 1000 * 60 * 60 * 12, // 12 hours
|
||||
) {
|
||||
const storage = useLocalStorage(key, {
|
||||
time: 0,
|
||||
value: null as T | null,
|
||||
})
|
||||
|
||||
if (storage.value.time + TTL < Date.now()) {
|
||||
Promise.resolve(getter()).then((v) => {
|
||||
storage.value = {
|
||||
time: Date.now(),
|
||||
value: v,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
return computed({
|
||||
get() {
|
||||
return storage.value.value
|
||||
},
|
||||
set(v) {
|
||||
storage.value.value = v
|
||||
},
|
||||
})
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue