mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-07-18 00:55:50 +00:00
Moved RecordingList outside of DVRPage
Helps to prevent renders
This commit is contained in:
parent
ffa1331c3b
commit
43525ca32a
1 changed files with 30 additions and 16 deletions
|
|
@ -18,16 +18,29 @@ import useSettingsStore from '../store/settings';
|
||||||
import useVideoStore from '../store/useVideoStore';
|
import useVideoStore from '../store/useVideoStore';
|
||||||
import RecordingForm from '../components/forms/Recording';
|
import RecordingForm from '../components/forms/Recording';
|
||||||
import {
|
import {
|
||||||
isAfter, isBefore,
|
isAfter,
|
||||||
|
isBefore,
|
||||||
useTimeHelpers,
|
useTimeHelpers,
|
||||||
} from '../utils/dateTimeUtils.js';
|
} from '../utils/dateTimeUtils.js';
|
||||||
const RecordingDetailsModal = lazy(() => import('../components/forms/RecordingDetailsModal'));
|
const RecordingDetailsModal = lazy(() =>
|
||||||
|
import('../components/forms/RecordingDetailsModal'));
|
||||||
import RecurringRuleModal from '../components/forms/RecurringRuleModal.jsx';
|
import RecurringRuleModal from '../components/forms/RecurringRuleModal.jsx';
|
||||||
import RecordingCard from '../components/cards/RecordingCard.jsx';
|
import RecordingCard from '../components/cards/RecordingCard.jsx';
|
||||||
import { categorizeRecordings } from '../utils/pages/DVRUtils.js';
|
import { categorizeRecordings } from '../utils/pages/DVRUtils.js';
|
||||||
import { getPosterUrl, getRecordingUrl, getShowVideoUrl } from '../utils/cards/RecordingCardUtils.js';
|
import { getPosterUrl, getRecordingUrl, getShowVideoUrl } from '../utils/cards/RecordingCardUtils.js';
|
||||||
import ErrorBoundary from '../components/ErrorBoundary.jsx';
|
import ErrorBoundary from '../components/ErrorBoundary.jsx';
|
||||||
|
|
||||||
|
const RecordingList = ({ list, onOpenDetails, onOpenRecurring }) => {
|
||||||
|
return list.map((rec) => (
|
||||||
|
<RecordingCard
|
||||||
|
key={`rec-${rec.id}`}
|
||||||
|
recording={rec}
|
||||||
|
onOpenDetails={onOpenDetails}
|
||||||
|
onOpenRecurring={onOpenRecurring}
|
||||||
|
/>
|
||||||
|
));
|
||||||
|
};
|
||||||
|
|
||||||
const DVRPage = () => {
|
const DVRPage = () => {
|
||||||
const theme = useMantineTheme();
|
const theme = useMantineTheme();
|
||||||
const recordings = useChannelsStore((s) => s.recordings);
|
const recordings = useChannelsStore((s) => s.recordings);
|
||||||
|
|
@ -95,17 +108,6 @@ const DVRPage = () => {
|
||||||
return categorizeRecordings(recordings, toUserTime, now);
|
return categorizeRecordings(recordings, toUserTime, now);
|
||||||
}, [recordings, now, toUserTime]);
|
}, [recordings, now, toUserTime]);
|
||||||
|
|
||||||
const RecordingList = ({ list }) => {
|
|
||||||
return list.map((rec) => (
|
|
||||||
<RecordingCard
|
|
||||||
key={`rec-${rec.id}`}
|
|
||||||
recording={rec}
|
|
||||||
onOpenDetails={openDetails}
|
|
||||||
onOpenRecurring={openRuleModal}
|
|
||||||
/>
|
|
||||||
));
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleOnWatchLive = () => {
|
const handleOnWatchLive = () => {
|
||||||
const rec = detailsRecording;
|
const rec = detailsRecording;
|
||||||
const now = userNow();
|
const now = userNow();
|
||||||
|
|
@ -168,7 +170,11 @@ const DVRPage = () => {
|
||||||
{ maxWidth: '36rem', cols: 1 },
|
{ maxWidth: '36rem', cols: 1 },
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
{<RecordingList list={inProgress} />}
|
{<RecordingList
|
||||||
|
list={inProgress}
|
||||||
|
onOpenDetails={openDetails}
|
||||||
|
onOpenRecurring={openRuleModal}
|
||||||
|
/>}
|
||||||
{inProgress.length === 0 && (
|
{inProgress.length === 0 && (
|
||||||
<Text size="sm" c="dimmed">
|
<Text size="sm" c="dimmed">
|
||||||
Nothing recording right now.
|
Nothing recording right now.
|
||||||
|
|
@ -190,7 +196,11 @@ const DVRPage = () => {
|
||||||
{ maxWidth: '36rem', cols: 1 },
|
{ maxWidth: '36rem', cols: 1 },
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
{<RecordingList list={upcoming} />}
|
{<RecordingList
|
||||||
|
list={upcoming}
|
||||||
|
onOpenDetails={openDetails}
|
||||||
|
onOpenRecurring={openRuleModal}
|
||||||
|
/>}
|
||||||
{upcoming.length === 0 && (
|
{upcoming.length === 0 && (
|
||||||
<Text size="sm" c="dimmed">
|
<Text size="sm" c="dimmed">
|
||||||
No upcoming recordings.
|
No upcoming recordings.
|
||||||
|
|
@ -212,7 +222,11 @@ const DVRPage = () => {
|
||||||
{ maxWidth: '36rem', cols: 1 },
|
{ maxWidth: '36rem', cols: 1 },
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
{<RecordingList list={completed} />}
|
{<RecordingList
|
||||||
|
list={completed}
|
||||||
|
onOpenDetails={openDetails}
|
||||||
|
onOpenRecurring={openRuleModal}
|
||||||
|
/>}
|
||||||
{completed.length === 0 && (
|
{completed.length === 0 && (
|
||||||
<Text size="sm" c="dimmed">
|
<Text size="sm" c="dimmed">
|
||||||
No completed recordings yet.
|
No completed recordings yet.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue