/* Creates A Store For Risk Data using Zustand */
import {create} from 'zustand';
import * as rsssl_api from "../../utils/api";
import {produce} from "immer";
import React, {useState} from "react";
const DynamicDataTableStore = create((set, get) => ({
twoFAMethods: {},
setTwoFAMethods: (methods) => set((state) => ({ ...state, twoFAMethods: methods })),
processing: false,
dataLoaded: false,
pagination: {},
dataActions: {},
DynamicDataTable: [],
fetchDynamicData: async (action) => {
try {
const response = await rsssl_api.doAction(
action,
get().dataActions
);
let data = Array.isArray(response.data) ? response.data : [];
let pagination = response.pagination ? response.pagination : 1;
//now we set the EventLog
if ( response ) {
set(state => ({
...state,
DynamicDataTable: data,
dataLoaded: true,
processing: false,
pagination: pagination,
// Removed the twoFAMethods set from here...
}));
// Return the response for the calling function to use
return response;
}
} catch (e) {
console.log(e);
}
},
handleTableSearch: async (search, searchColumns) => {
set(produce((state) => {
state.dataActions = {...state.dataActions, search, searchColumns};
}));
},
handleTablePageChange: async (page, pageSize) => {
//Add the page and pageSize to the dataActions
set(produce((state) => {
state.dataActions = {...state.dataActions, page, pageSize};
})
);
},
handleTableRowsChange: async (currentRowsPerPage, currentPage) => {
//Add the page and pageSize to the dataActions
set(produce((state) => {
state.dataActions = {...state.dataActions, currentRowsPerPage, currentPage};
})
);
},
//this handles all pagination and sorting
handleTableSort: async (column, sortDirection) => {
//Add the column and sortDirection to the dataActions
set(produce((state) => {
state.dataActions = {...state.dataActions, sortColumn: column, sortDirection};
})
);
},
}));
export default DynamicDataTableStore;