todo-app
1import { createStore, createEvent } from 'effector';
2import { useUnit } from 'effector-react';
3import { persist } from 'effector-storage';
4import { createStorageAdapter } from '@/shared/utils';
5
6export interface PaginationConfig {
7page: number;
8size: number;
9}
10
11const setPaginationConfig = createEvent<Partial<PaginationConfig>>();
12
13const resetPaginationConfig = createEvent();
14
15export const $paginationConfig = createStore<PaginationConfig>({
16page: 1,
17size: 10,
18})
19.on(setPaginationConfig, (store, payload) => ({ ...store, ...payload }))
20.reset(resetPaginationConfig);
21
22persist({
23key: 'pagination-config',
24store: $paginationConfig,
25adapter: createStorageAdapter(),
26});
27
28const usePagination = () => {
29return useUnit($paginationConfig);
30};
31
32export const events = {
33setPaginationConfig,
34resetPaginationConfig,
35};
36
37export const selectors = {
38usePagination,
39};
40