import { Button, Card, Group, Stack, Text, Title } from "@mantine/core";
import { useTranslation } from "react-i18next";
import { useParams } from "react-router";
import {
type BrokerageEvent,
useBrokerageEvents,
} from "@/entities/brokerage-event";
import { formatMoney } from "@/entities/portfolio";
import { StateView } from "@/shared/ui";
export function AccountEventsPage() {
const { accountId } = useParams();
const events = useBrokerageEvents(accountId);
if (events.isLoading) return ;
if (events.isError)
return events.refetch()} />;
if (!events.data) return ;
if (!events.data.events.length) return ;
return ;
}
function AccountEventsPageLoading() {
const { t } = useTranslation();
return (
);
}
function AccountEventsPageError({ retry }: { retry: () => void }) {
const { t } = useTranslation();
return (
{t("events.retry")}}
/>
);
}
function AccountEventsPageEmpty() {
const { t } = useTranslation();
return (
{t("events.title")}
{t("events.hint")}
);
}
function AccountEventsPageLoaded({ events }: { events: BrokerageEvent[] }) {
const { t } = useTranslation();
return (
{t("events.title")}
{t("events.hint")}
{events.map((event) => (
))}
);
}
function AccountEventRow({ event }: { event: BrokerageEvent }) {
const { t } = useTranslation();
return (
{event.displayName}
{formatCalendarDate(event.date)} ยท{" "}
{t(`events.dateKind.${event.dateKind}`)}
{event.amount && event.currency
? formatMoney({ currency: event.currency, value: event.amount })
: t("events.noAmount")}
{t(`events.type.${event.type}`)}
);
}
function formatCalendarDate(date: string) {
return new Intl.DateTimeFormat("ru-RU", {
dateStyle: "medium",
timeZone: "UTC",
}).format(new Date(`${date}T00:00:00Z`));
}