42 lines
1.0 KiB
TypeScript
42 lines
1.0 KiB
TypeScript
|
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 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 });
|
||
|
};
|