MCPcopy Create free account
hub / github.com/Dispatcharr/Dispatcharr / VODLogosTable

Function VODLogosTable

frontend/src/components/tables/VODLogosTable.jsx:56–680  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

54};
55
56export default function VODLogosTable() {
57 const theme = useMantineTheme();
58
59 const {
60 logos,
61 totalCount,
62 isLoading,
63 fetchVODLogos,
64 deleteVODLogo,
65 deleteVODLogos,
66 cleanupUnusedVODLogos,
67 getUnusedLogosCount,
68 } = useVODLogosStore();
69
70 const [currentPage, setCurrentPage] = useState(1);
71 const [pageSize, setPageSize] = useState(25);
72 const [nameFilter, setNameFilter] = useState('');
73 const [usageFilter, setUsageFilter] = useState('all');
74 const [selectedRows, setSelectedRows] = useState(new Set());
75 const [confirmDeleteOpen, setConfirmDeleteOpen] = useState(false);
76 const [deleteTarget, setDeleteTarget] = useState(null);
77 const [confirmCleanupOpen, setConfirmCleanupOpen] = useState(false);
78 const [deleting, setDeleting] = useState(false);
79 const [paginationString, setPaginationString] = useState('');
80 const [isCleaningUp, setIsCleaningUp] = useState(false);
81 const [unusedLogosCount, setUnusedLogosCount] = useState(0);
82 const [loadingUnusedCount, setLoadingUnusedCount] = useState(false);
83 const tableRef = React.useRef(null);
84 useEffect(() => {
85 fetchVODLogos({
86 page: currentPage,
87 page_size: pageSize,
88 name: nameFilter,
89 usage: usageFilter === 'all' ? undefined : usageFilter,
90 });
91 }, [currentPage, pageSize, nameFilter, usageFilter, fetchVODLogos]);
92
93 // Fetch the total count of unused logos
94 useEffect(() => {
95 const fetchUnusedCount = async () => {
96 setLoadingUnusedCount(true);
97 try {
98 const count = await getUnusedLogosCount();
99 setUnusedLogosCount(count);
100 } catch (error) {
101 console.error('Failed to fetch unused logos count:', error);
102 } finally {
103 setLoadingUnusedCount(false);
104 }
105 };
106
107 fetchUnusedCount();
108 }, [getUnusedLogosCount]);
109
110 const handleSelectAll = useCallback(
111 (checked) => {
112 if (checked) {
113 setSelectedRows(new Set(logos.map((logo) => logo.id)));

Callers

nothing calls this directly

Calls 4

useTableFunction · 0.90
fetchUnusedCountFunction · 0.85
handleConfirmDeleteFunction · 0.85
deleteMethod · 0.45

Tested by

no test coverage detected