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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | 5x 5x | import { useAppDispatch, useAppSelector } from "@redux/hooks";
import { useEffect, useMemo, useState } from "react";
import {
addBlockedFilter,
addQuarantineFilter,
addStatusFilter,
clearFilters,
selectHasUnseenBlockedTransactions,
setHasUnseenBlockedTransactions,
setProcessingTab,
addBlockedAndQuarantinedFilter,
} from "@redux/slices/transactions";
import { AlertDot } from "../ProcessingTable.atoms";
import { checkPortals } from "@utils/routing";
export const useProcessingFilters = () => {
const { isMerchantPortal, isAcquirerOrProviderManageMoney } = checkPortals();
const dispatch = useAppDispatch();
const [selectedFilter, setSelectedFilter] = useState<number>(0);
const handleClick = (index: number) => {
setSelectedFilter((prev) => {
if (prev === index) return prev;
dispatch(clearFilters());
return index;
});
};
const hasUnseenBlockedTransactions = useAppSelector(
selectHasUnseenBlockedTransactions,
);
useEffect(() => {
dispatch(setProcessingTab(tabNames.all));
if (isAcquirerOrProviderManageMoney) return;
dispatch(addStatusFilter("!declined"));
dispatch(addBlockedAndQuarantinedFilter());
}, []);
const tableFilters = useMemo(
() => [
{
label: "All",
value: tabNames.all,
onClickItem: (index: number) => {
handleClick(index);
dispatch(setProcessingTab(tabNames.all));
dispatch(addStatusFilter("!declined"));
dispatch(addBlockedAndQuarantinedFilter());
},
},
{
label: "Pending",
value: tabNames.pending,
onClickItem: (index: number) => {
handleClick(index);
dispatch(setProcessingTab(tabNames.pending));
dispatch(
addStatusFilter([
"processing_issue",
"captured",
"created",
"authorized",
"pending",
"enqueued",
]),
);
dispatch(addBlockedAndQuarantinedFilter());
},
},
...(!isMerchantPortal
? [
{
label: "Suspected",
value: tabNames.fraud,
onClickItem: (index: number) => {
handleClick(index);
dispatch(setProcessingTab(tabNames.fraud));
dispatch(addBlockedFilter());
dispatch(setHasUnseenBlockedTransactions(false));
},
endItem: hasUnseenBlockedTransactions ? <AlertDot /> : null,
},
{
label: "Quarantined",
value: tabNames.quarantined,
onClickItem: (index: number) => {
handleClick(index);
dispatch(setProcessingTab(tabNames.quarantined));
dispatch(addQuarantineFilter());
},
},
{
label: "Declined",
value: tabNames.declined,
onClickItem: (index: number) => {
handleClick(index);
dispatch(setProcessingTab(tabNames.declined));
dispatch(addStatusFilter("declined"));
},
},
]
: []),
],
[hasUnseenBlockedTransactions, isMerchantPortal],
);
return {
tableFilters,
selectedFilter,
};
};
export const tabNames = {
all: "-all",
pending: "-pending",
fraud: "-fraud",
quarantined: "-quarantined",
declined: "-declined",
settled: "-settled",
transfers: "-transfers",
};
|