( store: MaybeAccessor<MergeableStore | undefined>, create: (store: MergeableStore) => Promise<SynchronizerOrUndefined>, destroy?: (synchronizer: Synchronizer) => void, )
| 2007 | ); |
| 2008 | |
| 2009 | export const useCreateSynchronizer = < |
| 2010 | SynchronizerOrUndefined extends Synchronizer | undefined, |
| 2011 | >( |
| 2012 | store: MaybeAccessor<MergeableStore | undefined>, |
| 2013 | create: (store: MergeableStore) => Promise<SynchronizerOrUndefined>, |
| 2014 | destroy?: (synchronizer: Synchronizer) => void, |
| 2015 | ): Accessor<SynchronizerOrUndefined | undefined> => { |
| 2016 | const [synchronizer, setSynchronizer] = |
| 2017 | createSignal<SynchronizerOrUndefined>(); |
| 2018 | createEffect(() => { |
| 2019 | let current = true; |
| 2020 | let createdSynchronizer: SynchronizerOrUndefined | undefined; |
| 2021 | const destroySynchronizer = (synchronizer: Synchronizer) => { |
| 2022 | synchronizer.destroy(); |
| 2023 | destroy?.(synchronizer); |
| 2024 | }; |
| 2025 | (async () => { |
| 2026 | const resolvedStore = getThing(store); |
| 2027 | createdSynchronizer = resolvedStore |
| 2028 | ? await create(resolvedStore) |
| 2029 | : undefined; |
| 2030 | if (!current) { |
| 2031 | if (createdSynchronizer) { |
| 2032 | destroySynchronizer(createdSynchronizer); |
| 2033 | } |
| 2034 | return; |
| 2035 | } |
| 2036 | setSynchronizer(() => createdSynchronizer); |
| 2037 | })(); |
| 2038 | onCleanup(() => { |
| 2039 | current = false; |
| 2040 | setSynchronizer(() => undefined); |
| 2041 | if (createdSynchronizer) { |
| 2042 | destroySynchronizer(createdSynchronizer); |
| 2043 | } |
| 2044 | }); |
| 2045 | }); |
| 2046 | return synchronizer; |
| 2047 | }; |
| 2048 | |
| 2049 | export const useSynchronizerIds = () => useThingIds(OFFSET_SYNCHRONIZER); |
| 2050 |
no test coverage detected
searching dependent graphs…