MCPcopy Index your code
hub / github.com/tinyplex/tinybase / useCreateSynchronizer

Function useCreateSynchronizer

src/ui-solid/primitives.ts:2009–2047  ·  view source on GitHub ↗
(
  store: MaybeAccessor<MergeableStore | undefined>,
  create: (store: MergeableStore) => Promise<SynchronizerOrUndefined>,
  destroy?: (synchronizer: Synchronizer) => void,
)

Source from the content-addressed store, hash-verified

2007 );
2008
2009export 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
2049export const useSynchronizerIds = () => useThingIds(OFFSET_SYNCHRONIZER);
2050

Callers 1

primitives.test.tsFile · 0.90

Calls 2

getThingFunction · 0.70
destroySynchronizerFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…