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);