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 | 356x 55x 55x 101x 55x 33x 55x 55x 55x 55x | import { ReactElement } from "react";
import { useTranslation } from "react-i18next";
import { Link } from "react-router";
import { capitalize } from "remeda";
import { EventLogAction, EventLogItem } from "shared/types/models/eventLog";
import { useAppSelector } from "client/utils/hooks";
import { AppRoute } from "client/app/AppRoutes";
interface Props {
eventLogItem: EventLogItem;
}
export const EventLogProgramItemCancelled = ({
eventLogItem,
}: Props): ReactElement => {
const { t } = useTranslation();
const programItems = useAppSelector(
(state) => state.allProgramItems.programItems,
);
const programItem = programItems.find(
(p) => p.programItemId === eventLogItem.programItemId,
);
const programType = programItem?.programType ?? "other";
const programTypeSingular = capitalize(
t(`programTypeSingular.${programType}`),
);
const programTypeGenetive = capitalize(
t(`programTypeGenetive.${programType}`),
);
const messageByAction: Partial<Record<EventLogAction, string>> = {
[EventLogAction.PROGRAM_ITEM_CANCELLED]: t(
"eventLogActions.programItemCancelled",
{ PROGRAM_TYPE: programTypeSingular },
),
[EventLogAction.PROGRAM_ITEM_DELETED]: t(
"eventLogActions.programItemDeleted",
{ PROGRAM_TYPE: programTypeSingular },
),
[EventLogAction.PROGRAM_ITEM_NO_KONSTI_SIGNUP_ANYMORE]: t(
"eventLogActions.programItemNoKonstiSignupAnymore",
{ PROGRAM_TYPE: programTypeGenetive },
),
[EventLogAction.PROGRAM_ITEM_NO_LOTTERY_ANYMORE]: t(
"eventLogActions.programItemNoLotteryAnymore",
{ PROGRAM_TYPE: programTypeSingular },
),
};
return (
<div>
<span>
{messageByAction[eventLogItem.action]}{" "}
{programItem ? (
<Link to={`${AppRoute.PROGRAM_ITEM}/${eventLogItem.programItemId}`}>
{programItem.title}
</Link>
) : (
eventLogItem.programItemId
)}
</span>
</div>
);
};
|