mirror of
https://github.com/Sonarr/Sonarr
synced 2026-05-07 04:20:50 +02:00
88 lines
2.2 KiB
TypeScript
88 lines
2.2 KiB
TypeScript
import React, { SyntheticEvent, useCallback } from 'react';
|
|
import IconButton from 'Components/Link/IconButton';
|
|
import RelativeDateCell from 'Components/Table/Cells/RelativeDateCell';
|
|
import TableRowCell from 'Components/Table/Cells/TableRowCell';
|
|
import TableRowButton from 'Components/Table/TableRowButton';
|
|
import { icons } from 'Helpers/Props';
|
|
import {
|
|
addFavoriteFolder,
|
|
removeFavoriteFolder,
|
|
removeRecentFolder,
|
|
} from 'InteractiveImport/interactiveImportFoldersStore';
|
|
import translate from 'Utilities/String/translate';
|
|
import styles from './RecentFolderRow.css';
|
|
|
|
interface RecentFolderRowProps {
|
|
folder: string;
|
|
lastUsed: string;
|
|
isFavorite: boolean;
|
|
onPress: (folder: string) => unknown;
|
|
}
|
|
|
|
function RecentFolderRow({
|
|
folder,
|
|
lastUsed,
|
|
isFavorite,
|
|
onPress,
|
|
}: RecentFolderRowProps) {
|
|
const handlePress = useCallback(() => {
|
|
onPress(folder);
|
|
}, [folder, onPress]);
|
|
|
|
const handleFavoritePress = useCallback(
|
|
(e: SyntheticEvent) => {
|
|
e.stopPropagation();
|
|
|
|
if (isFavorite) {
|
|
removeFavoriteFolder(folder);
|
|
} else {
|
|
addFavoriteFolder(folder);
|
|
}
|
|
},
|
|
[folder, isFavorite]
|
|
);
|
|
|
|
const handleRemovePress = useCallback(
|
|
(e: SyntheticEvent) => {
|
|
e.stopPropagation();
|
|
|
|
removeRecentFolder(folder);
|
|
},
|
|
[folder]
|
|
);
|
|
|
|
return (
|
|
<TableRowButton onPress={handlePress}>
|
|
<TableRowCell>{folder}</TableRowCell>
|
|
|
|
<RelativeDateCell date={lastUsed} />
|
|
|
|
<TableRowCell className={styles.actions}>
|
|
<IconButton
|
|
title={
|
|
isFavorite
|
|
? translate('FavoriteFolderRemove')
|
|
: translate('FavoriteFolderAdd')
|
|
}
|
|
aria-label={
|
|
isFavorite
|
|
? translate('FavoriteFolderRemove')
|
|
: translate('FavoriteFolderAdd')
|
|
}
|
|
kind={isFavorite ? 'danger' : 'default'}
|
|
name={isFavorite ? icons.HEART : icons.HEART_OUTLINE}
|
|
onPress={handleFavoritePress}
|
|
/>
|
|
|
|
<IconButton
|
|
title={translate('Remove')}
|
|
aria-label={translate('Remove')}
|
|
name={icons.REMOVE}
|
|
onPress={handleRemovePress}
|
|
/>
|
|
</TableRowCell>
|
|
</TableRowButton>
|
|
);
|
|
}
|
|
|
|
export default RecentFolderRow;
|