/* eslint-disable @typescript-eslint/no-explicit-any */ import { getDeserializedScreenViewList } from "../helpers/deserializedScreenView"; import { createScreenService, deleteScreenService, loadScreenByIdService, loadScreenService, markDefaultScreenService, updateScreenService, } from "../services"; import { ToolbarOptions } from "../../../type"; import { filterCustomViewData } from "../helpers/filterCustomViewData"; export type ScreenViewProps = { id: string; viewName: string; selected: boolean; }; export const loadScreensAction = async ( uiElementGroupId: string, getUniqueViewId?: (callBack: (response: string) => void) => void, ) => { let uniqueViewId = uiElementGroupId; if (getUniqueViewId) { getUniqueViewId?.((id: string) => { uniqueViewId = id + "-" + uniqueViewId; }); } const response = await loadScreenService(uniqueViewId); const screens: ScreenViewProps[] = response?.data?.map((item: any) => ({ id: item.id, selected: item.selected, viewName: item.viewName, })); return getDeserializedScreenViewList(screens); }; export const loadScreenByIdAction = async (id: string) => { const response = await loadScreenByIdService(id); if (response?.data?.screenViewMetaData) { return JSON.parse(response.data.screenViewMetaData); } return null; }; export const createScreenAction = async ( screenName: string, uiElementGroupId: string, getUniqueViewId?: (callBack: (response: string) => void) => void, ) => { let uniqueViewId = uiElementGroupId; if (getUniqueViewId) { getUniqueViewId?.((id: string) => { uniqueViewId = id + "-" + uniqueViewId; }); } try { const response = await createScreenService(screenName, uniqueViewId); return { id: response.data.id, viewName: response.data.viewName, error: "", }; } catch (error: any) { if (error.status === 422) { return { id: "", viewName: "", error: "A screen with the same name already exists. Please choose a different name.", }; } return { id: "", viewName: "", error: "An unexpected error occurred while creating the screen.", }; } }; export const updateScreenAction = async ( id: string, data: Record, toolBarOptions: ToolbarOptions, ) => { const dataToSave = filterCustomViewData(data, toolBarOptions); await updateScreenService(id, { screenViewMetaData: JSON.stringify(dataToSave), }); }; export const markDefaultScreenAction = async ( id: string, uiElementGroupId: string, getUniqueViewId?: (callBack: (response: string) => void) => void, ) => { let uniqueViewId = uiElementGroupId; if (getUniqueViewId) { getUniqueViewId?.((id: string) => { uniqueViewId = id + "-" + uniqueViewId; }); } await markDefaultScreenService(id, uniqueViewId); }; export const deleteScreenAction = async (id: string) => { await deleteScreenService(id); };