import { createSignal } from 'solid-js'; import cache from '../lib/cache'; import dispatch, { cancelDispatch } from './dispatcher-main'; export const createCachedSignal = (params: any) => { const [signal, setSignal] = createSignal(); const callBack = (error: any, result: any, id?: number) => { if (error) { console.error({ caller: 'createCachedSignal / callBack', error }); } else { console.log({ caller: 'createCachedSignal / callBack', result }); setSignal(result); } if (id) { cache.set({ cacheId: 'dispatchIds', key: params.id, value: id }); } }; dispatch( { action: 'getAndWatch', params, }, callBack, true ); cache.set({ cacheId: 'signals', key: params.id, value: signal }); return signal; }; export const peekCachedSignal = (params: any) => { const cachedSignal = cache.get({ cacheId: 'signals', key: params.id }); console.log({ caller: 'peekCachedSignal', params, cachedSignal }); if (cachedSignal !== null) { return cachedSignal; } const [signal, setSignal] = createSignal(); const callBack = (error: any, result: any, id?: number) => { if (error) { console.error({ caller: 'peekCachedSignal / callBack', error }); } else { console.log({ caller: 'peekCachedSignal / callBack', result }); setSignal(result); } }; dispatch(params, callBack, false); return signal; }; export const destroyCachedSignal = (params: any) => { dispatch({ action: 'cancelWatch', params, }); const dispatchId = cache.get({ cacheId: 'dispatchIds', key: params.id }); cancelDispatch(dispatchId); cache.delete({ cacheId: 'signals', key: params.id }); };