1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-20 21:54:58 -04:00

Typings cleanup and improvements

This commit is contained in:
Mark McDowall
2023-04-04 09:21:34 -07:00
parent 5326a102e2
commit b2c43fb2a6
92 changed files with 1019 additions and 346 deletions
@@ -27,6 +27,7 @@ import {
reprocessInteractiveImportItems,
updateInteractiveImportItem,
} from 'Store/Actions/interactiveImportActions';
import { SelectStateInputProps } from 'typings/props';
import Rejection from 'typings/Rejection';
import formatBytes from 'Utilities/Number/formatBytes';
import InteractiveImportRowCellPlaceholder from './InteractiveImportRowCellPlaceholder';
@@ -40,6 +41,10 @@ type SelectType =
| 'quality'
| 'language';
type SelectedChangeProps = SelectStateInputProps & {
hasEpisodeFileId: boolean;
};
interface InteractiveImportRowProps {
id: number;
allowSeriesChange: boolean;
@@ -58,7 +63,7 @@ interface InteractiveImportRowProps {
isReprocessing?: boolean;
isSelected?: boolean;
modalTitle: string;
onSelectedChange(...args: unknown[]): void;
onSelectedChange(result: SelectedChangeProps): void;
onValidRowChange(id: number, isValid: boolean): void;
}
@@ -88,7 +93,7 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
const dispatch = useDispatch();
const isSeriesColumnVisible = useMemo(
() => columns.find((c) => c.name === 'series').isVisible,
() => columns.find((c) => c.name === 'series')?.isVisible ?? false,
[columns]
);
@@ -110,6 +115,7 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
id,
hasEpisodeFileId: !!episodeFileId,
value: true,
shiftKey: false,
});
}
},
@@ -143,7 +149,7 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
]);
const onSelectedChangeWrapper = useCallback(
(result) => {
(result: SelectedChangeProps) => {
onSelectedChange({
...result,
hasEpisodeFileId: !!episodeFileId,
@@ -158,6 +164,7 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
id,
hasEpisodeFileId: !!episodeFileId,
value: true,
shiftKey: false,
});
}
}, [id, episodeFileId, isSelected, onSelectedChange]);
@@ -312,9 +319,10 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
);
});
const requiresSeasonNumber = isNaN(Number(seasonNumber));
const showSeriesPlaceholder = isSelected && !series;
const showSeasonNumberPlaceholder =
isSelected && !!series && isNaN(seasonNumber) && !isReprocessing;
isSelected && !!series && requiresSeasonNumber && !isReprocessing;
const showEpisodeNumbersPlaceholder =
isSelected && Number.isInteger(seasonNumber) && !episodes.length;
const showReleaseGroupPlaceholder = isSelected && !releaseGroup;
@@ -364,9 +372,11 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
</TableRowCellButton>
<TableRowCellButton
isDisabled={!series || isNaN(seasonNumber)}
isDisabled={!series || requiresSeasonNumber}
title={
series && !isNaN(seasonNumber) ? 'Click to change episode' : undefined
series && !requiresSeasonNumber
? 'Click to change episode'
: undefined
}
onPress={onSelectEpisodePress}
>
@@ -456,7 +466,7 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
<SelectSeasonModal
isOpen={selectModalOpen === 'season'}
seriesId={series && series.id}
seriesId={series?.id}
modalTitle={modalTitle}
onSeasonSelect={onSeasonSelect}
onModalClose={onSelectModalClose}
@@ -465,7 +475,7 @@ function InteractiveImportRow(props: InteractiveImportRowProps) {
<SelectEpisodeModal
isOpen={selectModalOpen === 'episode'}
selectedIds={[id]}
seriesId={series && series.id}
seriesId={series?.id}
isAnime={isAnime}
seasonNumber={seasonNumber}
selectedDetails={relativePath}