mirror of
https://github.com/Sonarr/Sonarr.git
synced 2026-04-20 21:54:58 -04:00
c64f4adfc4
Closes #5110
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import { useMemo } from 'react';
|
|
import { useSelect } from 'App/Select/SelectContext';
|
|
import Series from 'Series/Series';
|
|
import useSeries from 'Series/useSeries';
|
|
import sortByProp from 'Utilities/Array/sortByProp';
|
|
|
|
function useSelectedSeriesStats() {
|
|
const { data: allSeries } = useSeries();
|
|
const { useSelectedIds } = useSelect<Series>();
|
|
const seriesIds = useSelectedIds();
|
|
|
|
const series = useMemo((): Series[] => {
|
|
const seriesList = seriesIds.map((id) => {
|
|
return allSeries.find((s) => s.id === id);
|
|
}) as Series[];
|
|
|
|
return seriesList.sort(sortByProp('sortTitle'));
|
|
}, [allSeries, seriesIds]);
|
|
|
|
const { totalEpisodeFileCount, totalSizeOnDisk } = useMemo(() => {
|
|
return series.reduce(
|
|
(acc, { statistics = {} }) => {
|
|
const { episodeFileCount = 0, sizeOnDisk = 0 } = statistics;
|
|
|
|
acc.totalEpisodeFileCount += episodeFileCount;
|
|
acc.totalSizeOnDisk += sizeOnDisk;
|
|
|
|
return acc;
|
|
},
|
|
{
|
|
totalEpisodeFileCount: 0,
|
|
totalSizeOnDisk: 0,
|
|
}
|
|
);
|
|
}, [series]);
|
|
|
|
return {
|
|
series,
|
|
seriesIds,
|
|
totalEpisodeFileCount,
|
|
totalSizeOnDisk,
|
|
};
|
|
}
|
|
|
|
export default useSelectedSeriesStats;
|