appState.ts 793 B

1234567891011121314151617181920212223242526272829303132
  1. import {createRoot} from 'solid-js';
  2. import {createStore, reconcile, unwrap} from 'solid-js/store';
  3. import {State} from '../config/state';
  4. import rootScope from '../lib/rootScope';
  5. const [appState, _setAppState] = createRoot(() => createStore<State>({} as any));
  6. const setAppState: typeof _setAppState = (...args: any[]) => {
  7. const key = args[0];
  8. // @ts-ignore
  9. _setAppState(...args);
  10. // @ts-ignore
  11. rootScope.managers.appStateManager.setByKey(key, unwrap(appState[key]));
  12. };
  13. const setAppStateSilent = (key: any, value?: any) => {
  14. if(typeof(key) === 'object') {
  15. _setAppState(key);
  16. return;
  17. }
  18. _setAppState(key, reconcile(value));
  19. };
  20. const useAppState = () => [appState, setAppState] as const;
  21. export {
  22. appState,
  23. useAppState,
  24. setAppState,
  25. setAppStateSilent
  26. };