From 0648fa7633314357e8cc1ad099e86322b5f7a888 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Tue, 3 Dec 2024 00:32:06 +0800 Subject: [PATCH] move useStore out of core (#5533) https://github.com/transloadit/uppy/pull/5443#discussion_r1862342884 (cherry picked from commit 00070c870f76876aca92e97f410f8b52085191bc) --- packages/@uppy/core/src/useStore.ts | 28 ------------------- .../src/GooglePicker/GooglePickerView.tsx | 26 ++++++++++++++++- 2 files changed, 25 insertions(+), 29 deletions(-) delete mode 100644 packages/@uppy/core/src/useStore.ts diff --git a/packages/@uppy/core/src/useStore.ts b/packages/@uppy/core/src/useStore.ts deleted file mode 100644 index a01f6f2d85..0000000000 --- a/packages/@uppy/core/src/useStore.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { useCallback, useEffect, useState } from 'preact/hooks' - -import type { AsyncStore } from './Uppy' - -export default function useStore( - store: AsyncStore, - key: string, -): [string | undefined | null, (v: string | null) => Promise] { - const [value, setValueState] = useState() - useEffect(() => { - ;(async () => { - setValueState(await store.getItem(key)) - })() - }, [key, store]) - - const setValue = useCallback( - async (v: string | null) => { - setValueState(v) - if (v == null) { - return store.removeItem(key) - } - return store.setItem(key, v) - }, - [key, store], - ) - - return [value, setValue] -} diff --git a/packages/@uppy/provider-views/src/GooglePicker/GooglePickerView.tsx b/packages/@uppy/provider-views/src/GooglePicker/GooglePickerView.tsx index 72fc10dd47..bea83ebbe2 100644 --- a/packages/@uppy/provider-views/src/GooglePicker/GooglePickerView.tsx +++ b/packages/@uppy/provider-views/src/GooglePicker/GooglePickerView.tsx @@ -2,7 +2,6 @@ import { h } from 'preact' import { useCallback, useEffect, useRef, useState } from 'preact/hooks' import type { Uppy } from '@uppy/core' -import useStore from '@uppy/core/lib/useStore.js' import type { AsyncStore } from '@uppy/core/lib/Uppy.js' import { @@ -19,6 +18,31 @@ import { import AuthView from '../ProviderView/AuthView.js' import { GoogleDriveIcon, GooglePhotosIcon } from './icons.js' +function useStore( + store: AsyncStore, + key: string, +): [string | undefined | null, (v: string | null) => Promise] { + const [value, setValueState] = useState() + useEffect(() => { + ;(async () => { + setValueState(await store.getItem(key)) + })() + }, [key, store]) + + const setValue = useCallback( + async (v: string | null) => { + setValueState(v) + if (v == null) { + return store.removeItem(key) + } + return store.setItem(key, v) + }, + [key, store], + ) + + return [value, setValue] +} + export type GooglePickerViewProps = { uppy: Uppy clientId: string