96 lines
2.4 KiB
TypeScript
96 lines
2.4 KiB
TypeScript
![]() |
import {
|
||
|
useChangeUserPasswordMutation,
|
||
|
useUserAccountUpdateMutation,
|
||
|
useUserAvatarDeleteMutation,
|
||
|
useUserAvatarUpdateMutation,
|
||
|
} from "@dashboard/graphql";
|
||
|
import useNavigator from "@dashboard/hooks/useNavigator";
|
||
|
import useNotifier from "@dashboard/hooks/useNotifier";
|
||
|
import { commonMessages, errorMessages } from "@dashboard/intl";
|
||
|
import { useIntl } from "react-intl";
|
||
|
|
||
|
import { staffMemberDetailsUrl } from "../urls";
|
||
|
|
||
|
interface UseUserMutationProps {
|
||
|
refetch: () => void;
|
||
|
id: string;
|
||
|
closeModal: () => void;
|
||
|
}
|
||
|
|
||
|
export const useProfileOperations = ({
|
||
|
refetch,
|
||
|
id,
|
||
|
closeModal,
|
||
|
}: UseUserMutationProps) => {
|
||
|
const notify = useNotifier();
|
||
|
const intl = useIntl();
|
||
|
const navigate = useNavigator();
|
||
|
|
||
|
const [updateUserAccount, updateUserAccountOpts] =
|
||
|
useUserAccountUpdateMutation({
|
||
|
onCompleted: data => {
|
||
|
if (!data.accountUpdate?.errors.length) {
|
||
|
refetch();
|
||
|
notify({
|
||
|
status: "success",
|
||
|
text: intl.formatMessage(commonMessages.savedChanges),
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
});
|
||
|
|
||
|
const [updateUserAvatar] = useUserAvatarUpdateMutation({
|
||
|
onCompleted: data => {
|
||
|
if (!data.userAvatarUpdate?.errors.length) {
|
||
|
notify({
|
||
|
status: "success",
|
||
|
text: intl.formatMessage(commonMessages.savedChanges),
|
||
|
});
|
||
|
refetch();
|
||
|
navigate(staffMemberDetailsUrl(id));
|
||
|
} else {
|
||
|
notify({
|
||
|
status: "error",
|
||
|
title: intl.formatMessage(errorMessages.imgageUploadErrorTitle),
|
||
|
text: intl.formatMessage(errorMessages.imageUploadErrorText),
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
});
|
||
|
|
||
|
const [deleteUserAvatar, deleteAvatarResult] = useUserAvatarDeleteMutation({
|
||
|
onCompleted: data => {
|
||
|
if (!data.userAvatarDelete?.errors.length) {
|
||
|
notify({
|
||
|
status: "success",
|
||
|
text: intl.formatMessage(commonMessages.savedChanges),
|
||
|
});
|
||
|
refetch();
|
||
|
navigate(staffMemberDetailsUrl(id));
|
||
|
}
|
||
|
},
|
||
|
});
|
||
|
|
||
|
const [changePassword, changePasswordOpts] = useChangeUserPasswordMutation({
|
||
|
onCompleted: data => {
|
||
|
if (!data.passwordChange?.errors.length) {
|
||
|
notify({
|
||
|
status: "success",
|
||
|
text: intl.formatMessage(commonMessages.savedChanges),
|
||
|
});
|
||
|
closeModal();
|
||
|
}
|
||
|
},
|
||
|
});
|
||
|
|
||
|
return {
|
||
|
updateUserAccount,
|
||
|
deleteAvatarResult,
|
||
|
deleteUserAvatar,
|
||
|
updateUserAvatar,
|
||
|
changePassword,
|
||
|
changePasswordOpts,
|
||
|
updateUserAccountOpts,
|
||
|
};
|
||
|
};
|