todo-app

Форк
0
/
query-config.ts 
39 строк · 897.0 Байт
1
import { createStore, createEvent } from 'effector';
2
import { useUnit } from 'effector-react';
3
import { persist } from 'effector-storage';
4
import { createStorageAdapter } from '@/shared/utils';
5
import { type TaskPriority } from '@/shared/types';
6

7
export type QueryConfig = Partial<{
8
  text: string;
9
  priority: TaskPriority;
10
  isCompleted: boolean;
11
  isOverdue: boolean | null;
12
}>;
13

14
const setQueryConfig = createEvent<QueryConfig>();
15

16
const resetQueryConfig = createEvent();
17

18
export const $queryConfig = createStore<QueryConfig>({})
19
  .on(setQueryConfig, (store, payload) => ({ ...store, ...payload }))
20
  .reset(resetQueryConfig);
21

22
persist({
23
  key: 'query-config',
24
  store: $queryConfig,
25
  adapter: createStorageAdapter(),
26
});
27

28
const useQuery = () => {
29
  return useUnit($queryConfig);
30
};
31

32
export const events = {
33
  setQueryConfig,
34
  resetQueryConfig,
35
};
36

37
export const selectors = {
38
  useQuery,
39
};
40

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.