mirror of
https://github.com/elk-zone/elk.git
synced 2024-11-21 17:05:22 +03:00
fix: top level await (chrome 129) (#2970)
This commit is contained in:
parent
7ab2f16f35
commit
10076be909
5 changed files with 160 additions and 36 deletions
|
@ -9,6 +9,7 @@ export async function useAsyncIDBKeyval<T>(
|
|||
key: IDBValidKey,
|
||||
initialValue: MaybeRefOrGetter<T>,
|
||||
options: UseIDBOptions = {},
|
||||
source?: Ref<T>,
|
||||
): Promise<RemovableRef<T>> {
|
||||
const {
|
||||
flush = 'pre',
|
||||
|
@ -19,7 +20,7 @@ export async function useAsyncIDBKeyval<T>(
|
|||
},
|
||||
} = options
|
||||
|
||||
const data = (shallow ? shallowRef : ref)(initialValue) as Ref<T>
|
||||
const data = source ?? (shallow ? shallowRef : ref)(initialValue) as Ref<T>
|
||||
|
||||
const rawInit: T = toValue<T>(initialValue)
|
||||
|
||||
|
|
|
@ -12,37 +12,12 @@ import {
|
|||
STORAGE_KEY_NOTIFICATION,
|
||||
STORAGE_KEY_NOTIFICATION_POLICY,
|
||||
STORAGE_KEY_SERVERS,
|
||||
STORAGE_KEY_USERS,
|
||||
} from '~/constants'
|
||||
import type { PushNotificationPolicy, PushNotificationRequest } from '~/composables/push-notifications/types'
|
||||
import { useAsyncIDBKeyval } from '~/composables/idb'
|
||||
|
||||
const mock = process.mock
|
||||
|
||||
function initializeUsers(): Promise<Ref<UserLogin[]> | RemovableRef<UserLogin[]>> | Ref<UserLogin[]> | RemovableRef<UserLogin[]> {
|
||||
let defaultUsers = mock ? [mock.user] : []
|
||||
|
||||
// Backward compatibility with localStorage
|
||||
let removeUsersOnLocalStorage = false
|
||||
if (globalThis?.localStorage) {
|
||||
const usersOnLocalStorageString = globalThis.localStorage.getItem(STORAGE_KEY_USERS)
|
||||
if (usersOnLocalStorageString) {
|
||||
defaultUsers = JSON.parse(usersOnLocalStorageString)
|
||||
removeUsersOnLocalStorage = true
|
||||
}
|
||||
}
|
||||
|
||||
const users = import.meta.server
|
||||
? ref<UserLogin[]>(defaultUsers)
|
||||
: useAsyncIDBKeyval<UserLogin[]>(STORAGE_KEY_USERS, defaultUsers, { deep: true })
|
||||
|
||||
if (removeUsersOnLocalStorage)
|
||||
globalThis.localStorage.removeItem(STORAGE_KEY_USERS)
|
||||
|
||||
return users
|
||||
}
|
||||
|
||||
const users = import.meta.server ? initializeUsers() as Ref<UserLogin[]> | RemovableRef<UserLogin[]> : await initializeUsers()
|
||||
const users: Ref<UserLogin[]> | RemovableRef<UserLogin[]> = import.meta.server ? ref<UserLogin[]>([]) : ref<UserLogin[]>([]) as RemovableRef<UserLogin[]>
|
||||
const nodes = useLocalStorage<Record<string, any>>(STORAGE_KEY_NODES, {}, { deep: true })
|
||||
const currentUserHandle = useLocalStorage<string>(STORAGE_KEY_CURRENT_USER_HANDLE, mock ? mock.user.account.id : '')
|
||||
export const instanceStorage = useLocalStorage<Record<string, mastodon.v1.Instance>>(STORAGE_KEY_SERVERS, mock ? mock.server : {}, { deep: true })
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
"@iconify-emoji/twemoji": "^1.0.2",
|
||||
"@iconify/json": "^2.2.170",
|
||||
"@iconify/utils": "^2.1.22",
|
||||
"@nuxt/devtools": "^1.4.2",
|
||||
"@nuxt/devtools": "^1.5.0",
|
||||
"@nuxt/test-utils": "^3.14.2",
|
||||
"@nuxtjs/color-mode": "^3.4.4",
|
||||
"@nuxtjs/i18n": "^8.5.3",
|
||||
|
|
34
plugins/0.setup-users.ts
Normal file
34
plugins/0.setup-users.ts
Normal file
|
@ -0,0 +1,34 @@
|
|||
import { useAsyncIDBKeyval } from '~/composables/idb'
|
||||
import type { UserLogin } from '~/types'
|
||||
import { STORAGE_KEY_USERS } from '~/constants'
|
||||
|
||||
const mock = process.mock
|
||||
|
||||
export default defineNuxtPlugin({
|
||||
parallel: import.meta.server,
|
||||
async setup() {
|
||||
const users = useUsers()
|
||||
|
||||
let defaultUsers = mock ? [mock.user] : []
|
||||
|
||||
// Backward compatibility with localStorage
|
||||
let removeUsersOnLocalStorage = false
|
||||
if (globalThis?.localStorage) {
|
||||
const usersOnLocalStorageString = globalThis.localStorage.getItem(STORAGE_KEY_USERS)
|
||||
if (usersOnLocalStorageString) {
|
||||
defaultUsers = JSON.parse(usersOnLocalStorageString)
|
||||
removeUsersOnLocalStorage = true
|
||||
}
|
||||
}
|
||||
|
||||
if (import.meta.server) {
|
||||
users.value = defaultUsers
|
||||
}
|
||||
if (import.meta.client) {
|
||||
await useAsyncIDBKeyval<UserLogin[]>(STORAGE_KEY_USERS, defaultUsers, { deep: true }, users)
|
||||
}
|
||||
|
||||
if (removeUsersOnLocalStorage)
|
||||
globalThis.localStorage.removeItem(STORAGE_KEY_USERS)
|
||||
},
|
||||
})
|
130
pnpm-lock.yaml
130
pnpm-lock.yaml
|
@ -47,8 +47,8 @@ importers:
|
|||
specifier: ^2.1.22
|
||||
version: 2.1.32
|
||||
'@nuxt/devtools':
|
||||
specifier: ^1.4.2
|
||||
version: 1.4.2(rollup@2.79.1)(vue@3.5.4(typescript@5.6.2))(webpack-sources@3.2.3)
|
||||
specifier: ^1.5.0
|
||||
version: 1.5.0(rollup@2.79.1)(vue@3.5.4(typescript@5.6.2))(webpack-sources@3.2.3)
|
||||
'@nuxt/test-utils':
|
||||
specifier: ^3.14.2
|
||||
version: 3.14.2(@vue/test-utils@2.4.6)(h3@1.12.0)(happy-dom@15.0.0)(magicast@0.3.5)(nitropack@2.9.7(@upstash/redis@1.34.0)(@vercel/kv@2.0.0)(encoding@0.1.13)(idb-keyval@6.2.1)(magicast@0.3.5)(webpack-sources@3.2.3))(rollup@2.79.1)(vitest@2.0.5(@types/node@20.8.6)(happy-dom@15.0.0)(terser@5.22.0))(vue-router@4.4.5(vue@3.5.4(typescript@5.6.2)))(vue@3.5.4(typescript@5.6.2))(webpack-sources@3.2.3)
|
||||
|
@ -1985,16 +1985,31 @@ packages:
|
|||
peerDependencies:
|
||||
vite: '*'
|
||||
|
||||
'@nuxt/devtools-kit@1.5.0':
|
||||
resolution: {integrity: sha512-Q8sOquz9CoUMTABo6Bq+nkbNMZi+WVN4xpz1USZPZazcJhSj9imSmQRSycY2fBYqkfB1AKBRhm2UV2ujCQfw0Q==}
|
||||
peerDependencies:
|
||||
vite: '*'
|
||||
|
||||
'@nuxt/devtools-wizard@1.4.2':
|
||||
resolution: {integrity: sha512-TyhmPBg/xJKPOdnwR3DAh8KMUt6/0dUNABCxGVeY7PYbIiXt4msIGVJkBc4y+WwIJHOYPrSRClmZVsXQfRlB4A==}
|
||||
hasBin: true
|
||||
|
||||
'@nuxt/devtools-wizard@1.5.0':
|
||||
resolution: {integrity: sha512-Yvc3MHzNZAN3hMoUr4FpVoBQ6etkp1STy56LntHgdEc9ngzcKzGuJJp5kxvytuY3dLUVFKQ6Ptvtv+yjLeoPZQ==}
|
||||
hasBin: true
|
||||
|
||||
'@nuxt/devtools@1.4.2':
|
||||
resolution: {integrity: sha512-Ok3g2P7iwKyK8LiwozbYVAZTo8t91iXSmlJj2ozeo1okKQ2Qi1AtwB6nYgIlkUHZmo155ZjG/LCHYI5uhQ/sGw==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
vite: '*'
|
||||
|
||||
'@nuxt/devtools@1.5.0':
|
||||
resolution: {integrity: sha512-82LEPZUVU0osPRypSTq/bPXfl1Oo/+R2UaXx/pq9WkE8Vj1V/n0v7a40EVHJsusZ+e/JGjed8+8oYDwF8nNIQw==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
vite: '*'
|
||||
|
||||
'@nuxt/kit@3.13.1':
|
||||
resolution: {integrity: sha512-FkUL349lp/3nVfTIyws4UDJ3d2jyv5Pk1DC1HQUCOkSloYYMdbRcQAUcb4fe2TCLNWvHM+FhU8jnzGTzjALZYA==}
|
||||
engines: {node: ^14.18.0 || >=16.10.0}
|
||||
|
@ -6985,6 +7000,9 @@ packages:
|
|||
simple-git@3.26.0:
|
||||
resolution: {integrity: sha512-5tbkCSzuskR6uA7uA23yjasmA0RzugVo8QM2bpsnxkrgP13eisFT7TMS4a+xKEJvbmr4qf+l0WT3eKa9IxxUyw==}
|
||||
|
||||
simple-git@3.27.0:
|
||||
resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==}
|
||||
|
||||
simple-swizzle@0.2.2:
|
||||
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
|
||||
|
||||
|
@ -8519,7 +8537,7 @@ snapshots:
|
|||
'@babel/helper-validator-identifier': 7.24.7
|
||||
chalk: 2.4.2
|
||||
js-tokens: 4.0.0
|
||||
picocolors: 1.0.1
|
||||
picocolors: 1.1.0
|
||||
|
||||
'@babel/parser@7.25.6':
|
||||
dependencies:
|
||||
|
@ -9948,6 +9966,17 @@ snapshots:
|
|||
- supports-color
|
||||
- webpack-sources
|
||||
|
||||
'@nuxt/devtools-kit@1.5.0(magicast@0.3.5)(rollup@2.79.1)(webpack-sources@3.2.3)':
|
||||
dependencies:
|
||||
'@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@2.79.1)(webpack-sources@3.2.3)
|
||||
'@nuxt/schema': 3.13.2(rollup@2.79.1)(webpack-sources@3.2.3)
|
||||
execa: 7.2.0
|
||||
transitivePeerDependencies:
|
||||
- magicast
|
||||
- rollup
|
||||
- supports-color
|
||||
- webpack-sources
|
||||
|
||||
'@nuxt/devtools-wizard@1.4.2':
|
||||
dependencies:
|
||||
consola: 3.2.3
|
||||
|
@ -9961,6 +9990,19 @@ snapshots:
|
|||
rc9: 2.1.2
|
||||
semver: 7.6.3
|
||||
|
||||
'@nuxt/devtools-wizard@1.5.0':
|
||||
dependencies:
|
||||
consola: 3.2.3
|
||||
diff: 7.0.0
|
||||
execa: 7.2.0
|
||||
global-directory: 4.0.1
|
||||
magicast: 0.3.5
|
||||
pathe: 1.1.2
|
||||
pkg-types: 1.2.0
|
||||
prompts: 2.4.2
|
||||
rc9: 2.1.2
|
||||
semver: 7.6.3
|
||||
|
||||
'@nuxt/devtools@1.4.2(rollup@2.79.1)(vue@3.5.4(typescript@5.6.2))(webpack-sources@3.2.3)':
|
||||
dependencies:
|
||||
'@antfu/utils': 0.7.10
|
||||
|
@ -10056,6 +10098,53 @@ snapshots:
|
|||
- vue
|
||||
- webpack-sources
|
||||
|
||||
'@nuxt/devtools@1.5.0(rollup@2.79.1)(vue@3.5.4(typescript@5.6.2))(webpack-sources@3.2.3)':
|
||||
dependencies:
|
||||
'@antfu/utils': 0.7.10
|
||||
'@nuxt/devtools-kit': 1.5.0(magicast@0.3.5)(rollup@2.79.1)(webpack-sources@3.2.3)
|
||||
'@nuxt/devtools-wizard': 1.5.0
|
||||
'@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@2.79.1)(webpack-sources@3.2.3)
|
||||
'@vue/devtools-core': 7.4.4(vite@5.4.5(@types/node@20.8.6)(terser@5.22.0))(vue@3.5.4(typescript@5.6.2))
|
||||
'@vue/devtools-kit': 7.4.4
|
||||
birpc: 0.2.17
|
||||
consola: 3.2.3
|
||||
cronstrue: 2.50.0
|
||||
destr: 2.0.3
|
||||
error-stack-parser-es: 0.1.5
|
||||
execa: 7.2.0
|
||||
fast-npm-meta: 0.2.2
|
||||
flatted: 3.3.1
|
||||
get-port-please: 3.1.2
|
||||
hookable: 5.5.3
|
||||
image-meta: 0.2.1
|
||||
is-installed-globally: 1.0.0
|
||||
launch-editor: 2.9.1
|
||||
local-pkg: 0.5.0
|
||||
magicast: 0.3.5
|
||||
nypm: 0.3.11
|
||||
ohash: 1.1.4
|
||||
pathe: 1.1.2
|
||||
perfect-debounce: 1.0.0
|
||||
pkg-types: 1.2.0
|
||||
rc9: 2.1.2
|
||||
scule: 1.3.0
|
||||
semver: 7.6.3
|
||||
simple-git: 3.27.0
|
||||
sirv: 2.0.4
|
||||
tinyglobby: 0.2.6
|
||||
unimport: 3.12.0(rollup@2.79.1)(webpack-sources@3.2.3)
|
||||
vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@2.79.1)(webpack-sources@3.2.3))(rollup@2.79.1)
|
||||
vite-plugin-vue-inspector: 5.2.0(vite@5.4.5(@types/node@20.8.6)(terser@5.22.0))
|
||||
which: 3.0.1
|
||||
ws: 8.18.0
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
- rollup
|
||||
- supports-color
|
||||
- utf-8-validate
|
||||
- vue
|
||||
- webpack-sources
|
||||
|
||||
'@nuxt/kit@3.13.1(magicast@0.3.5)(rollup@2.79.1)(webpack-sources@3.2.3)':
|
||||
dependencies:
|
||||
'@nuxt/schema': 3.13.1(rollup@2.79.1)(webpack-sources@3.2.3)
|
||||
|
@ -13105,7 +13194,7 @@ snapshots:
|
|||
css-tree@2.2.1:
|
||||
dependencies:
|
||||
mdn-data: 2.0.28
|
||||
source-map-js: 1.2.0
|
||||
source-map-js: 1.2.1
|
||||
|
||||
css-tree@2.3.1:
|
||||
dependencies:
|
||||
|
@ -14753,7 +14842,7 @@ snapshots:
|
|||
|
||||
launch-editor@2.9.1:
|
||||
dependencies:
|
||||
picocolors: 1.0.1
|
||||
picocolors: 1.1.0
|
||||
shell-quote: 1.8.1
|
||||
|
||||
lazystream@1.0.1:
|
||||
|
@ -14916,7 +15005,7 @@ snapshots:
|
|||
dependencies:
|
||||
'@babel/parser': 7.25.6
|
||||
'@babel/types': 7.25.6
|
||||
source-map-js: 1.2.0
|
||||
source-map-js: 1.2.1
|
||||
|
||||
make-dir@3.1.0:
|
||||
dependencies:
|
||||
|
@ -17051,6 +17140,14 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
simple-git@3.27.0:
|
||||
dependencies:
|
||||
'@kwsites/file-exists': 1.1.1
|
||||
'@kwsites/promise-deferred': 1.1.1
|
||||
debug: 4.3.6
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
simple-swizzle@0.2.2:
|
||||
dependencies:
|
||||
is-arrayish: 0.3.2
|
||||
|
@ -17341,7 +17438,7 @@ snapshots:
|
|||
css-tree: 2.3.1
|
||||
css-what: 6.1.0
|
||||
csso: 5.0.5
|
||||
picocolors: 1.0.1
|
||||
picocolors: 1.1.0
|
||||
|
||||
synckit@0.6.2:
|
||||
dependencies:
|
||||
|
@ -18004,7 +18101,7 @@ snapshots:
|
|||
dependencies:
|
||||
browserslist: 4.23.3
|
||||
escalade: 3.1.2
|
||||
picocolors: 1.0.1
|
||||
picocolors: 1.1.0
|
||||
|
||||
upper-case-first@2.0.2:
|
||||
dependencies:
|
||||
|
@ -18150,6 +18247,23 @@ snapshots:
|
|||
- rollup
|
||||
- supports-color
|
||||
|
||||
vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@2.79.1)(webpack-sources@3.2.3))(rollup@2.79.1):
|
||||
dependencies:
|
||||
'@antfu/utils': 0.7.10
|
||||
'@rollup/pluginutils': 5.1.0(rollup@2.79.1)
|
||||
debug: 4.3.6
|
||||
error-stack-parser-es: 0.1.5
|
||||
fs-extra: 11.2.0
|
||||
open: 10.1.0
|
||||
perfect-debounce: 1.0.0
|
||||
picocolors: 1.0.1
|
||||
sirv: 2.0.4
|
||||
optionalDependencies:
|
||||
'@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@2.79.1)(webpack-sources@3.2.3)
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
- supports-color
|
||||
|
||||
vite-plugin-pwa@0.20.5(workbox-build@7.1.1)(workbox-window@7.1.0):
|
||||
dependencies:
|
||||
debug: 4.3.6
|
||||
|
|
Loading…
Reference in a new issue