import CardGiftcardOutlined from "@mui/icons-material/CardGiftcardOutlined";
import { useMemo, useState } from "react";
import { listGiftRecords } from "@/features/operations/api";
import styles from "@/features/operations/operations.module.css";
import { usePaginatedQuery } from "@/shared/hooks/usePaginatedQuery.js";
import { AdminFilterResetButton, AdminListBody, AdminListToolbar } from "@/shared/ui/AdminListLayout.jsx";
import { AdminUserIdentity } from "@/shared/ui/AdminUserIdentity.jsx";
import { DataState } from "@/shared/ui/DataState.jsx";
import { DataTable } from "@/shared/ui/DataTable.jsx";
import { TimeRangeFilter } from "@/shared/ui/TimeRangeFilter.jsx";
import { TimeText } from "@/shared/ui/TimeText.jsx";
import { createOptionsColumnFilter, createUserIdentityColumnFilter } from "@/shared/ui/tableFilters.js";
import {
emptyUserIdentityFilter,
isUserIdentityFilterEmpty,
userIdentityFilterParams,
} from "@/shared/ui/userIdentityFilter.js";
const pageSize = 30;
const sceneOptions = [
{ label: "房间送礼", value: "room" },
{ label: "私聊送礼", value: "direct" },
];
export function GiftRecordTable() {
const [page, setPage] = useState(1);
const [scene, setScene] = useState("");
const [senderFilter, setSenderFilter] = useState(emptyUserIdentityFilter);
const [timeRange, setTimeRange] = useState({ endMs: "", startMs: "" });
const filters = useMemo(
() => ({
end_at_ms: timeRange.endMs || "",
scene,
...userIdentityFilterParams(senderFilter, {
displayUserId: "sender_display_user_id",
userId: "sender_user_id",
username: "sender_username",
}),
start_at_ms: timeRange.startMs || "",
}),
[scene, senderFilter, timeRange.endMs, timeRange.startMs],
);
const query = usePaginatedQuery({
errorMessage: "获取送礼记录失败",
fetcher: listGiftRecords,
filters,
page,
pageSize,
queryKey: ["gift-records", filters, page],
});
const data = query.data || { items: [], page, pageSize, total: 0 };
const items = data.items || [];
const total = data.total || 0;
const hasActiveFilters = Boolean(
!isUserIdentityFilterEmpty(senderFilter) || scene || timeRange.startMs || timeRange.endMs,
);
const changeScene = (value) => {
setScene(value);
setPage(1);
};
const changeSenderFilter = (value) => {
setSenderFilter(value);
setPage(1);
};
const changeTimeRange = (value) => {
setTimeRange(value);
setPage(1);
};
const resetFilters = () => {
setScene("");
setSenderFilter(emptyUserIdentityFilter);
setTimeRange({ endMs: "", startMs: "" });
setPage(1);
};
const columns = useMemo(
() => [
{
key: "index",
label: "序号",
render: (_entry, index) => {index + 1},
resizable: false,
width: "72px",
},
{
filter: createUserIdentityColumnFilter({
value: senderFilter,
onChange: changeSenderFilter,
}),
key: "sender",
label: "送礼人",
render: (entry) =>