(
store: MaybeAccessor<PersistedStore<Persist> | undefined>,
create: (
store: PersistedStore<Persist>,
) => PersisterOrUndefined | Promise<PersisterOrUndefined>,
then?: (persister: Persister<Persist>) => Promise<void>,
destroy?: (persister: Persister<Persist>) => void,
)
| 1924 | ); |
| 1925 | |
| 1926 | export const useCreatePersister = < |
| 1927 | Persist extends Persists, |
| 1928 | PersisterOrUndefined extends Persister<Persist> | undefined, |
| 1929 | >( |
| 1930 | store: MaybeAccessor<PersistedStore<Persist> | undefined>, |
| 1931 | create: ( |
| 1932 | store: PersistedStore<Persist>, |
| 1933 | ) => PersisterOrUndefined | Promise<PersisterOrUndefined>, |
| 1934 | then?: (persister: Persister<Persist>) => Promise<void>, |
| 1935 | destroy?: (persister: Persister<Persist>) => void, |
| 1936 | ): Accessor<PersisterOrUndefined | undefined> => { |
| 1937 | const [persister, setPersister] = createSignal<PersisterOrUndefined>(); |
| 1938 | createEffect(() => { |
| 1939 | let current = true; |
| 1940 | let createdPersister: PersisterOrUndefined | undefined; |
| 1941 | const destroyPersister = (persister: Persister<Persist>) => { |
| 1942 | persister.destroy(); |
| 1943 | destroy?.(persister); |
| 1944 | }; |
| 1945 | (async () => { |
| 1946 | const resolvedStore = getThing(store); |
| 1947 | createdPersister = resolvedStore |
| 1948 | ? await create(resolvedStore) |
| 1949 | : undefined; |
| 1950 | if (!current) { |
| 1951 | if (createdPersister) { |
| 1952 | destroyPersister(createdPersister); |
| 1953 | } |
| 1954 | return; |
| 1955 | } |
| 1956 | setPersister(() => createdPersister); |
| 1957 | if (createdPersister && then) { |
| 1958 | await then(createdPersister); |
| 1959 | } |
| 1960 | })(); |
| 1961 | onCleanup(() => { |
| 1962 | current = false; |
| 1963 | setPersister(() => undefined); |
| 1964 | if (createdPersister) { |
| 1965 | destroyPersister(createdPersister); |
| 1966 | } |
| 1967 | }); |
| 1968 | }); |
| 1969 | return persister; |
| 1970 | }; |
| 1971 | |
| 1972 | export const usePersisterIds = () => useThingIds(OFFSET_PERSISTER); |
| 1973 |
no test coverage detected
searching dependent graphs…