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 | 9x 30x 30x 569x 569x 1196x 29x 1167x 1134x 1134x 1134x 33x 33x 33x 33x 33x 30x 9x 1134x 1134x 1134x 1134x 9x 1134x 1134x 2115x 1134x 1134x 1134x 9x 1134x 1134x 1134x | import { shouldBeHidden } from "@constants/constants";
import { getTitleAndSubTitle } from ".";
import {
APIResponseAlert,
TGroupDataGenerator,
TGroupedAlerts,
TGroupAlertsOptions,
BooleanObject,
TParsedAlert,
} from "../types";
import { ALERT_NAMES_ENUM } from "@features/Notifications/NotificationsCenter/types";
export const groupAlerts: TGroupDataGenerator = (data, options) => {
let groupedData: any = {};
data.forEach((alert) => {
const alertId = alert.id;
alert.receiverList.forEach((receiver) => {
if (receiver === "submerchant" && alert.displayName === "Transaction")
return;
if (!groupedData[receiver]?.[alertId]) {
const parsedAlert = alertParser(alert, receiver, options);
groupedData = {
...groupedData,
[receiver]: {
...groupedData[receiver],
[alertId]: parsedAlert,
},
};
return;
}
const savedAlert = groupedData[receiver][alertId];
const method = alert.assignedMethods?.[0];
Eif (method) {
const isAssigned = Object.assign(savedAlert.isAssigned, {
[method]: alert.isAssigned,
});
groupedData = {
...groupedData,
[receiver]: {
...groupedData[receiver],
[alertId]: {
...savedAlert,
isAssigned,
},
},
};
}
});
}, {} as TGroupedAlerts);
return groupedData;
};
const alertParser = (
alert: APIResponseAlert,
receiver: string,
options?: TGroupAlertsOptions,
): TParsedAlert => {
const texts = getTitleAndSubTitle(alert, receiver);
const isAssigned = getIsAssigned(alert);
const disabled = getIsDisabled(alert, options);
return {
id: alert.id,
name: alert.name,
title: texts.title,
subTitle: texts.subTitle,
highlight: texts?.highlight || "",
hidden: {
email: false,
push: shouldBeHidden.pushNotificationSettings,
},
disabled,
isAssigned,
};
};
type THelper = (
alert: APIResponseAlert,
options?: TGroupAlertsOptions,
) => BooleanObject;
const getIsDisabled: THelper = (alert, options) => {
const initial = {
email: true,
push: true,
};
const enabledMethods = alert.methods.reduce(
(acc, key) => ({
...acc,
[key]: false,
}),
{},
);
const disabled = Object.assign(initial, enabledMethods);
//for sponsor this email should be always disabled, and BE asked to handle this FE side for now
Iif (
options?.isSponsor &&
alert.name?.trim() === ALERT_NAMES_ENUM.MERCHANT_OWNER_UNDERWRITING_APPROVAL
) {
return { ...disabled, email: true };
}
return disabled;
};
const getIsAssigned: THelper = (alert) => {
const method = alert.assignedMethods?.[0];
const initial = {
email: false,
push: false,
};
return Object.assign(initial, { [method]: alert.isAssigned });
};
|