File "events.ts"
Full Path: /var/www/html/gitep_front/src/shared/model/model/events.ts
File size: 1.32 KB
MIME-type: text/x-java
Charset: utf-8
import { createEvent, createStore, sample } from "effector";
import Cookies from "js-cookie"
export const setModel = createEvent<number | string | null>();
export const setModels = createEvent<any[]>();
export const updateModel = createEvent<any>();
export const setAllowedModelIds = createEvent<number[]>();
// export const $modelId = createStore<number | string | null>(null)
// .on(setModel, (_, id) => id);
export const clearModel = createEvent();
export const editModel = createEvent();
export const editAvatar= createEvent();
const COOKIE_KEY = "modelId";
const initialModelId = Cookies.get(COOKIE_KEY) ?? null;
export const $modelId = createStore<number | string | null>(initialModelId)
.on(setModel, (_, id) => {
if (id !== null && id !== undefined) {
Cookies.set(COOKIE_KEY, String(id));
return id;
} else {
Cookies.remove(COOKIE_KEY);
return null;
}
})
.on(clearModel, () => {
Cookies.remove(COOKIE_KEY);
return null;
});
export const $models = createStore<any[]>([])
.on(setModels, (_, models) => models)
.on(updateModel, (state, updatedModel) => {
return state.map(model =>
model.id === updatedModel.id ? { ...model, ...updatedModel } : model
);
});
export const $allowedModelIds = createStore<number[]>([])
.on(setAllowedModelIds, (_, ids) => ids);