Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 4x 306x 306x 306x 306x 306x 49x 49x 306x 5x 5x 306x 1x 1x 1x 1x 306x 11x 11x 11x 306x 51x 306x 306x 306x 306x | import useHashedData from "@hooks/common/data-management/useHashedData";
import useLogs from "@hooks/common/data-management/useLogs";
import {
IUpdatedData,
PermisionHashMap,
} from "features/Permissions/Modal/api/types";
import { useRef } from "react";
import { TPermissionsData } from "../types";
const useDataWithLogs = () => {
const initialData = useRef<TPermissionsData>({});
const {
logs,
updateItem: updateLogsItem,
updateAll: updateAllLogs,
reset,
hasChanged,
} = useLogs<IUpdatedData>();
const {
logs: latestAdded,
updateAll: updateLatestAdded,
reset: resetLatestAdded,
} = useLogs<IUpdatedData>();
const {
data: hashedData,
updateAll: updateAllHashedData,
updateEntry: updateHashedDataItem,
reset: resetHashedData,
} = useHashedData<IUpdatedData>();
const setDataFromAPI = (APIData: PermisionHashMap) => {
const syncedData = {
...(Object.keys(APIData) && APIData),
...(Object.keys(latestAdded) && latestAdded),
...(Object.keys(logs) && logs),
};
resetHashedData(syncedData);
};
const clearLogs = () => {
reset();
resetLatestAdded();
};
const removeItemFromLogs = (key: string) =>
updateAllLogs((old) => {
const newData = old;
delete newData[key];
return newData;
});
const handleChangePermissionStatus = (
key: string,
updatedItem: IUpdatedData,
isUnchanged: boolean,
) => {
updateHashedDataItem(key, updatedItem);
Iif (isUnchanged) {
removeItemFromLogs(key);
} else {
updateLogsItem(key, updatedItem);
}
};
const setInitialData = (data: TPermissionsData) =>
(initialData.current = data);
const effectsChanged = hasChanged(initialData.current);
const listChanged = Object.keys(latestAdded).length > 0;
const isMutated = effectsChanged || listChanged;
return {
setDataFromAPI,
clearLogs,
resetHashedData,
hashedData,
latestAdded,
logs,
handleChangePermissionStatus,
updateLatestAdded,
updateAllHashedData,
isMutated,
setInitialData,
initialData,
updateAllLogs,
removeItemFromLogs,
};
};
export default useDataWithLogs;
|