R: Use monadic conditional call

This commit is contained in:
Ivan 2024-12-04 22:52:45 +03:00
parent 0725c8220d
commit 968c97b374
18 changed files with 63 additions and 67 deletions

View File

@ -32,9 +32,7 @@ function TableBody<TData>({
onRowDoubleClicked onRowDoubleClicked
}: TableBodyProps<TData>) { }: TableBodyProps<TData>) {
function handleRowClicked(target: Row<TData>, event: CProps.EventMouse) { function handleRowClicked(target: Row<TData>, event: CProps.EventMouse) {
if (onRowClicked) { onRowClicked?.(target.original, event);
onRowClicked(target.original, event);
}
if (enableRowSelection && target.getCanSelect()) { if (enableRowSelection && target.getCanSelect()) {
if (event.shiftKey && !!lastSelected && lastSelected !== target.id) { if (event.shiftKey && !!lastSelected && lastSelected !== target.id) {
const { rows, rowsById } = table.getRowModel(); const { rows, rowsById } = table.getRowModel();

View File

@ -36,9 +36,7 @@ function FileInput({ id, label, acceptType, title, className, style, onChange, .
} else { } else {
setFileName(''); setFileName('');
} }
if (onChange) { onChange?.(event);
onChange(event);
}
}; };
return ( return (

View File

@ -84,14 +84,14 @@ function Modal({
const handleCancel = () => { const handleCancel = () => {
hideWindow(); hideWindow();
if (onCancel) onCancel(); onCancel?.();
}; };
const handleSubmit = () => { const handleSubmit = () => {
if (beforeSubmit && !beforeSubmit()) { if (beforeSubmit && !beforeSubmit()) {
return; return;
} }
if (onSubmit) onSubmit(); onSubmit?.();
hideWindow(); hideWindow();
}; };

View File

@ -69,7 +69,7 @@ export const AuthState = ({ children }: React.PropsWithChildren) => {
} else { } else {
setUser(undefined); setUser(undefined);
} }
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -85,7 +85,7 @@ export const AuthState = ({ children }: React.PropsWithChildren) => {
onError: setError, onError: setError,
onSuccess: newData => onSuccess: newData =>
reload(() => { reload(() => {
if (callback) callback(newData); callback?.(newData);
}) })
}); });
} }
@ -96,7 +96,7 @@ export const AuthState = ({ children }: React.PropsWithChildren) => {
showError: true, showError: true,
onSuccess: newData => onSuccess: newData =>
reload(() => { reload(() => {
if (callback) callback(newData); callback?.(newData);
}) })
}); });
} }
@ -111,7 +111,7 @@ export const AuthState = ({ children }: React.PropsWithChildren) => {
onSuccess: newData => onSuccess: newData =>
reload(() => { reload(() => {
users.push(newData as IUserInfo); users.push(newData as IUserInfo);
if (callback) callback(newData); callback?.(newData);
}) })
}); });
} }
@ -126,7 +126,7 @@ export const AuthState = ({ children }: React.PropsWithChildren) => {
onError: setError, onError: setError,
onSuccess: () => onSuccess: () =>
reload(() => { reload(() => {
if (callback) callback(); callback?.();
}) })
}); });
}, },
@ -143,7 +143,7 @@ export const AuthState = ({ children }: React.PropsWithChildren) => {
onError: setError, onError: setError,
onSuccess: () => onSuccess: () =>
reload(() => { reload(() => {
if (callback) callback(); callback?.();
}) })
}); });
}, },
@ -160,7 +160,7 @@ export const AuthState = ({ children }: React.PropsWithChildren) => {
onError: setError, onError: setError,
onSuccess: () => onSuccess: () =>
reload(() => { reload(() => {
if (callback) callback(); callback?.();
}) })
}); });
}, },
@ -177,7 +177,7 @@ export const AuthState = ({ children }: React.PropsWithChildren) => {
onError: setError, onError: setError,
onSuccess: () => onSuccess: () =>
reload(() => { reload(() => {
if (callback) callback(); callback?.();
}) })
}); });
}, },

View File

@ -48,7 +48,7 @@ export const GlobalOssState = ({ children }: React.PropsWithChildren) => {
(callback?: () => void) => { (callback?: () => void) => {
reloadInternal(undefined, () => { reloadInternal(undefined, () => {
setIsValid(true); setIsValid(true);
if (callback) callback(); callback?.();
}); });
}, },
[reloadInternal] [reloadInternal]

View File

@ -157,7 +157,7 @@ export const LibraryState = ({ children }: React.PropsWithChildren) => {
onError: setLoadingError, onError: setLoadingError,
onSuccess: newData => { onSuccess: newData => {
setItems(newData); setItems(newData);
if (callback) callback(); callback?.();
} }
}); });
} else { } else {
@ -167,7 +167,7 @@ export const LibraryState = ({ children }: React.PropsWithChildren) => {
onError: setLoadingError, onError: setLoadingError,
onSuccess: newData => { onSuccess: newData => {
setItems(newData); setItems(newData);
if (callback) callback(); callback?.();
} }
}); });
} }
@ -217,7 +217,7 @@ export const LibraryState = ({ children }: React.PropsWithChildren) => {
(data: ILibraryCreateData, callback?: DataCallback<ILibraryItem>) => { (data: ILibraryCreateData, callback?: DataCallback<ILibraryItem>) => {
const onSuccess = (newSchema: ILibraryItem) => const onSuccess = (newSchema: ILibraryItem) =>
reloadItems(() => { reloadItems(() => {
if (callback) callback(newSchema); callback?.(newSchema);
}); });
setProcessingError(undefined); setProcessingError(undefined);
if (data.file) { if (data.file) {
@ -250,7 +250,7 @@ export const LibraryState = ({ children }: React.PropsWithChildren) => {
onError: setProcessingError, onError: setProcessingError,
onSuccess: () => onSuccess: () =>
reloadItems(() => { reloadItems(() => {
if (callback) callback(); callback?.();
}) })
}); });
}, },
@ -270,7 +270,7 @@ export const LibraryState = ({ children }: React.PropsWithChildren) => {
onError: setProcessingError, onError: setProcessingError,
onSuccess: newSchema => onSuccess: newSchema =>
reloadItems(() => { reloadItems(() => {
if (callback) callback(newSchema); callback?.(newSchema);
}) })
}); });
}, },
@ -287,7 +287,7 @@ export const LibraryState = ({ children }: React.PropsWithChildren) => {
onError: setProcessingError, onError: setProcessingError,
onSuccess: () => onSuccess: () =>
reloadItems(() => { reloadItems(() => {
if (callback) callback(); callback?.();
}) })
}); });
}, },

View File

@ -114,7 +114,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
const fullData: IOperationSchemaData = Object.assign(model, newData); const fullData: IOperationSchemaData = Object.assign(model, newData);
oss.setData(fullData); oss.setData(fullData);
library.localUpdateItem(newData); library.localUpdateItem(newData);
if (callback) callback(newData); callback?.(newData);
} }
}); });
}, },
@ -137,7 +137,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: () => { onSuccess: () => {
model.owner = newOwner; model.owner = newOwner;
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(); callback?.();
}); });
} }
}); });
@ -161,7 +161,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: () => { onSuccess: () => {
model.access_policy = newPolicy; model.access_policy = newPolicy;
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(); callback?.();
}); });
} }
}); });
@ -185,7 +185,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: () => { onSuccess: () => {
model.location = newLocation; model.location = newLocation;
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(); callback?.();
}); });
} }
}); });
@ -209,7 +209,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: () => { onSuccess: () => {
model.editors = newEditors; model.editors = newEditors;
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(); callback?.();
}); });
} }
}); });
@ -227,7 +227,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onError: setProcessingError, onError: setProcessingError,
onSuccess: () => { onSuccess: () => {
library.localUpdateTimestamp(Number(itemID)); library.localUpdateTimestamp(Number(itemID));
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -245,7 +245,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: newData => { onSuccess: newData => {
oss.setData(newData.oss); oss.setData(newData.oss);
library.localUpdateTimestamp(newData.oss.id); library.localUpdateTimestamp(newData.oss.id);
if (callback) callback(newData.new_operation); callback?.(newData.new_operation);
} }
}); });
}, },
@ -263,7 +263,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: newData => { onSuccess: newData => {
oss.setData(newData); oss.setData(newData);
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(); callback?.();
}); });
} }
}); });
@ -282,7 +282,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: newData => { onSuccess: newData => {
oss.setData(newData.oss); oss.setData(newData.oss);
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(newData.new_schema); callback?.(newData.new_schema);
}); });
} }
}); });
@ -304,7 +304,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: newData => { onSuccess: newData => {
oss.setData(newData); oss.setData(newData);
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(); callback?.();
}); });
} }
}); });
@ -326,7 +326,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: newData => { onSuccess: newData => {
oss.setData(newData); oss.setData(newData);
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(); callback?.();
}); });
} }
}); });
@ -348,7 +348,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: newData => { onSuccess: newData => {
oss.setData(newData); oss.setData(newData);
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(); callback?.();
}); });
} }
}); });
@ -370,7 +370,7 @@ export const OssState = ({ itemID, children }: React.PropsWithChildren<OssStateP
onSuccess: () => { onSuccess: () => {
oss.reload(); oss.reload();
library.reloadItems(() => { library.reloadItems(() => {
if (callback) callback(); callback?.();
}); });
} }
}); });

View File

@ -147,7 +147,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
setSchema(Object.assign(schema, newData)); setSchema(Object.assign(schema, newData));
library.localUpdateItem(newData); library.localUpdateItem(newData);
oss.invalidateItem(newData.id); oss.invalidateItem(newData.id);
if (callback) callback(newData); callback?.(newData);
} }
}); });
}, },
@ -168,7 +168,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
onSuccess: newData => { onSuccess: newData => {
setSchema(newData); setSchema(newData);
library.localUpdateItem(newData); library.localUpdateItem(newData);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -191,7 +191,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
onSuccess: () => { onSuccess: () => {
schema.owner = newOwner; schema.owner = newOwner;
library.localUpdateItem(schema); library.localUpdateItem(schema);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -214,7 +214,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
onSuccess: () => { onSuccess: () => {
schema.access_policy = newPolicy; schema.access_policy = newPolicy;
library.localUpdateItem(schema); library.localUpdateItem(schema);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -258,7 +258,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
onError: setProcessingError, onError: setProcessingError,
onSuccess: () => { onSuccess: () => {
schema.editors = newEditors; schema.editors = newEditors;
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -279,7 +279,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
setSchema(newData); setSchema(newData);
library.localUpdateTimestamp(newData.id); library.localUpdateTimestamp(newData.id);
oss.invalidateItem(newData.id); oss.invalidateItem(newData.id);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -299,7 +299,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
onSuccess: newData => { onSuccess: newData => {
setSchema(newData); setSchema(newData);
library.localUpdateTimestamp(newData.id); library.localUpdateTimestamp(newData.id);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -318,7 +318,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
setSchema(newData.schema); setSchema(newData.schema);
library.localUpdateTimestamp(newData.schema.id); library.localUpdateTimestamp(newData.schema.id);
oss.invalidateItem(newData.schema.id); oss.invalidateItem(newData.schema.id);
if (callback) callback(newData.cst_list); callback?.(newData.cst_list);
} }
}); });
}, },
@ -350,7 +350,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
setSchema(newData.schema); setSchema(newData.schema);
library.localUpdateTimestamp(newData.schema.id); library.localUpdateTimestamp(newData.schema.id);
oss.invalidateItem(newData.schema.id); oss.invalidateItem(newData.schema.id);
if (callback) callback(newData.new_cst); callback?.(newData.new_cst);
} }
}); });
}, },
@ -369,7 +369,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
setSchema(newData); setSchema(newData);
library.localUpdateTimestamp(newData.id); library.localUpdateTimestamp(newData.id);
oss.invalidateItem(newData.id); oss.invalidateItem(newData.id);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -388,7 +388,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
reload(setProcessing, () => { reload(setProcessing, () => {
library.localUpdateTimestamp(Number(itemID)); library.localUpdateTimestamp(Number(itemID));
oss.invalidateItem(Number(itemID)); oss.invalidateItem(Number(itemID));
if (callback) callback(newData); callback?.(newData);
}) })
}); });
}, },
@ -407,7 +407,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
setSchema(newData.schema); setSchema(newData.schema);
library.localUpdateTimestamp(newData.schema.id); library.localUpdateTimestamp(newData.schema.id);
oss.invalidateItem(newData.schema.id); oss.invalidateItem(newData.schema.id);
if (callback) callback(newData.new_cst); callback?.(newData.new_cst);
} }
}); });
}, },
@ -426,7 +426,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
setSchema(newData); setSchema(newData);
library.localUpdateTimestamp(newData.id); library.localUpdateTimestamp(newData.id);
oss.invalidateItem(newData.id); oss.invalidateItem(newData.id);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -444,7 +444,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
onSuccess: newData => { onSuccess: newData => {
setSchema(newData); setSchema(newData);
library.localUpdateTimestamp(Number(itemID)); library.localUpdateTimestamp(Number(itemID));
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -462,7 +462,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
onSuccess: newData => { onSuccess: newData => {
setSchema(newData.schema); setSchema(newData.schema);
library.localUpdateTimestamp(Number(itemID)); library.localUpdateTimestamp(Number(itemID));
if (callback) callback(newData.version); callback?.(newData.version);
} }
}); });
}, },
@ -499,7 +499,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
} }
}); });
setSchema(schema); setSchema(schema);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -516,7 +516,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
onSuccess: () => { onSuccess: () => {
schema!.versions = schema!.versions.filter(prev => prev.id !== target); schema!.versions = schema!.versions.filter(prev => prev.id !== target);
setSchema(schema); setSchema(schema);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -533,7 +533,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
onSuccess: newData => { onSuccess: newData => {
setSchema(newData); setSchema(newData);
library.localUpdateItem(newData); library.localUpdateItem(newData);
if (callback) callback(); callback?.();
} }
}); });
}, },
@ -552,7 +552,7 @@ export const RSFormState = ({ itemID, versionID, children }: React.PropsWithChil
setSchema(newData); setSchema(newData);
library.localUpdateTimestamp(newData.id); library.localUpdateTimestamp(newData.id);
oss.invalidateItem(newData.id); oss.invalidateItem(newData.id);
if (callback) callback(newData); callback?.(newData);
} }
}); });
}, },

View File

@ -64,7 +64,7 @@ export const UserProfileState = ({ children }: React.PropsWithChildren) => {
libraryUser.first_name = newData.first_name; libraryUser.first_name = newData.first_name;
libraryUser.last_name = newData.last_name; libraryUser.last_name = newData.last_name;
} }
if (callback) callback(newData); callback?.(newData);
} }
}); });
}, },

View File

@ -69,7 +69,7 @@ export const UsersState = ({ children }: React.PropsWithChildren) => {
} }
}); });
setUsers(newData); setUsers(newData);
if (callback) callback(); callback?.();
} }
}); });
}, },

View File

@ -29,7 +29,7 @@ function useCheckConstituenta({ schema }: { schema?: IRSForm }) {
onError: setError, onError: setError,
onSuccess: parse => { onSuccess: parse => {
setParseData(parse); setParseData(parse);
if (onSuccess) onSuccess(parse); onSuccess?.(parse);
} }
}); });
} }

View File

@ -13,7 +13,7 @@ function useClickedOutside(enabled: boolean, ref: React.RefObject<HTMLElement>,
function handleClickOutside(event: MouseEvent) { function handleClickOutside(event: MouseEvent) {
assertIsNode(event.target); assertIsNode(event.target);
if (ref.current && !ref.current.contains(event.target)) { if (ref.current && !ref.current.contains(event.target)) {
if (callback) callback(); callback?.();
} }
} }
document.addEventListener('mouseup', handleClickOutside); document.addEventListener('mouseup', handleClickOutside);

View File

@ -19,7 +19,7 @@ function useConceptText() {
setLoading: setProcessing, setLoading: setProcessing,
onError: setError, onError: setError,
onSuccess: data => { onSuccess: data => {
if (onSuccess) onSuccess(data); onSuccess?.(data);
} }
}); });
}, []); }, []);
@ -32,7 +32,7 @@ function useConceptText() {
setLoading: setProcessing, setLoading: setProcessing,
onError: setError, onError: setError,
onSuccess: data => { onSuccess: data => {
if (onSuccess) onSuccess(data); onSuccess?.(data);
} }
}); });
}, []); }, []);
@ -45,7 +45,7 @@ function useConceptText() {
setLoading: setProcessing, setLoading: setProcessing,
onError: setError, onError: setError,
onSuccess: data => { onSuccess: data => {
if (onSuccess) onSuccess(data); onSuccess?.(data);
} }
}); });
}, []); }, []);

View File

@ -42,7 +42,7 @@ function useOssDetails({ target, items }: { target?: string; items: ILibraryItem
}, },
onSuccess: schema => { onSuccess: schema => {
setSchema(schema); setSchema(schema);
if (callback) callback(); callback?.();
} }
}); });
}, },

View File

@ -38,7 +38,7 @@ function useRSFormDetails({ target, version }: { target?: string; version?: stri
}, },
onSuccess: schema => { onSuccess: schema => {
setSchema(schema); setSchema(schema);
if (callback) callback(); callback?.();
} }
}); });
}, },

View File

@ -218,7 +218,7 @@ export const OssEditState = ({ selected, setSelected, children }: React.PropsWit
} }
}); });
toast.success(information.changesSaved); toast.success(information.changesSaved);
if (callback) callback(); callback?.();
}); });
}, },
[model] [model]

View File

@ -96,7 +96,7 @@ function EditorRSExpression({
args: parse.args args: parse.args
}) })
); );
if (callback) callback(parse); callback?.(parse);
}); });
} }

View File

@ -326,7 +326,7 @@ export const RSEditState = ({
model.cstDelete(data, () => { model.cstDelete(data, () => {
toast.success(information.constituentsDestroyed(deletedNames)); toast.success(information.constituentsDestroyed(deletedNames));
setSelected(nextActive ? [nextActive] : []); setSelected(nextActive ? [nextActive] : []);
if (onDeleteCst) onDeleteCst(nextActive); onDeleteCst?.(nextActive);
}); });
}, },
[model, activeCst, onDeleteCst, setSelected] [model, activeCst, onDeleteCst, setSelected]