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 95 96 97 98 99 100 101 102 103 104 | 1x 145x 145x 145x 145x 145x 145x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 145x | import useCheckLastUnseen from "@components/VirtualList/hooks/useBlockedTransactions";
import { useGetCurrentMerchantId } from "@hooks/common";
import {
TBlockTransaction,
blockTransaction,
} from "@services/api/riskProfile/riskProfileActions";
import { checkPortals } from "@utils/routing";
import { useMutation, useQueryClient } from "react-query";
import { processTransactionData } from "../../TransactionInfoModal/utils";
import NiceModal from "@ebay/nice-modal-react";
import { TRANSACTION_INFO_MODAL } from "modals/modal_names";
import { useCustomThemeV2 } from "@theme/hooks/useCustomThemeV2";
import {
QKEY_LIST_RISK_PROFILE_TRANSACTIONS,
QKEY_PROVIDER_PROCESSING,
QKEY_RISK_PROFILE,
} from "@constants/queryKeys";
import { showMessage } from "@common/Toast";
type Props = {
isFirst?: boolean;
isLast?: boolean;
setSelectedRow?: React.Dispatch<any>;
onSuccess?: () => void;
currentID?: string;
};
export const useMarkAsFraudActions = ({
isFirst,
isLast,
setSelectedRow,
onSuccess,
currentID,
}: Props) => {
const queryClient = useQueryClient();
const { merchantId } = useGetCurrentMerchantId();
const { setUnseenTransactions } = useCheckLastUnseen(merchantId);
const { isAcquirerPortal, isEnterprisePortal } = checkPortals();
const { isMobileView } = useCustomThemeV2();
const markAsFraudMutation = useMutation(
(data: TBlockTransaction) => {
return blockTransaction({
merchantId: data.merchantId,
id: data.id,
reason: data.reason,
canNotifyMerchant: data.canNotifyMerchant,
skipRefund: data.skipRefund,
refundItemIDs: data.refundItemIDs,
});
},
{
onSuccess: (transactionData) => {
Iif (isAcquirerPortal) setUnseenTransactions();
showMessage(
"Success",
"Transaction successfully marked as suspected",
!isMobileView,
"",
);
const parsedData = transactionData
? processTransactionData(transactionData)
: null;
Iif (parsedData?.displayStatus === "Refunded") {
NiceModal.show(TRANSACTION_INFO_MODAL, {
data: { ...parsedData, transactionID: parsedData?.id },
isFirst: setSelectedRow ? isFirst : true,
isLast: setSelectedRow ? isLast : true,
setSelectedRow,
});
}
queryClient.invalidateQueries(QKEY_RISK_PROFILE);
queryClient.invalidateQueries(QKEY_LIST_RISK_PROFILE_TRANSACTIONS);
queryClient.invalidateQueries("get-transactions-risk-profile");
queryClient.invalidateQueries("get-risk-transactions-list");
queryClient.invalidateQueries("has-more-transactions");
Iif (isAcquirerPortal)
queryClient.invalidateQueries("acquirer-processing-transactions");
Iif (isEnterprisePortal)
queryClient.invalidateQueries(QKEY_PROVIDER_PROCESSING);
queryClient.invalidateQueries(["get-transaction-history"]); //There’s a chance that the id we need to refetch isn’t passed to this function, so it’s better to invalidate it without using an ID.
Eif (onSuccess) onSuccess();
},
onError: (error: any) => {
showMessage(
"Error",
error?.message || "Whoops.. an error occured. Please try again",
!isMobileView,
"",
);
},
},
);
return { markAsFraudMutation };
};
|