From 8d72d5dbabe925cfe8cc5a53cfa0515378a7cbf2 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Wed, 26 Mar 2025 12:45:53 +0200 Subject: [PATCH] Convert QualityProfileName to TypeScript --- .../src/Author/Details/AuthorDetailsHeader.js | 4 +-- .../Profiles/Quality/QualityProfileName.tsx | 18 +++++++++++ .../Quality/QualityProfileNameConnector.js | 31 ------------------- src/NzbDrone.Core/Localization/Core/en.json | 1 + 4 files changed, 21 insertions(+), 33 deletions(-) create mode 100644 frontend/src/Settings/Profiles/Quality/QualityProfileName.tsx delete mode 100644 frontend/src/Settings/Profiles/Quality/QualityProfileNameConnector.js diff --git a/frontend/src/Author/Details/AuthorDetailsHeader.js b/frontend/src/Author/Details/AuthorDetailsHeader.js index 261fdcc35..da6723258 100644 --- a/frontend/src/Author/Details/AuthorDetailsHeader.js +++ b/frontend/src/Author/Details/AuthorDetailsHeader.js @@ -11,7 +11,7 @@ import MonitorToggleButton from 'Components/MonitorToggleButton'; import Popover from 'Components/Tooltip/Popover'; import Tooltip from 'Components/Tooltip/Tooltip'; import { icons, kinds, sizes, tooltipPositions } from 'Helpers/Props'; -import QualityProfileNameConnector from 'Settings/Profiles/Quality/QualityProfileNameConnector'; +import QualityProfileName from 'Settings/Profiles/Quality/QualityProfileName'; import fonts from 'Styles/Variables/fonts'; import formatBytes from 'Utilities/Number/formatBytes'; import stripHtml from 'Utilities/String/stripHtml'; @@ -213,7 +213,7 @@ class AuthorDetailsHeader extends Component { { - } diff --git a/frontend/src/Settings/Profiles/Quality/QualityProfileName.tsx b/frontend/src/Settings/Profiles/Quality/QualityProfileName.tsx new file mode 100644 index 000000000..bbb3e6f08 --- /dev/null +++ b/frontend/src/Settings/Profiles/Quality/QualityProfileName.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; +import { createQualityProfileSelectorForHook } from 'Store/Selectors/createQualityProfileSelector'; +import translate from 'Utilities/String/translate'; + +interface QualityProfileNameProps { + qualityProfileId: number; +} + +function QualityProfileName({ qualityProfileId }: QualityProfileNameProps) { + const qualityProfile = useSelector( + createQualityProfileSelectorForHook(qualityProfileId) + ); + + return {qualityProfile?.name ?? translate('Unknown')}; +} + +export default QualityProfileName; diff --git a/frontend/src/Settings/Profiles/Quality/QualityProfileNameConnector.js b/frontend/src/Settings/Profiles/Quality/QualityProfileNameConnector.js deleted file mode 100644 index bf13815ff..000000000 --- a/frontend/src/Settings/Profiles/Quality/QualityProfileNameConnector.js +++ /dev/null @@ -1,31 +0,0 @@ -import PropTypes from 'prop-types'; -import React from 'react'; -import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import createQualityProfileSelector from 'Store/Selectors/createQualityProfileSelector'; - -function createMapStateToProps() { - return createSelector( - createQualityProfileSelector(), - (qualityProfile) => { - return { - name: qualityProfile.name - }; - } - ); -} - -function QualityProfileNameConnector({ name, ...otherProps }) { - return ( - - {name} - - ); -} - -QualityProfileNameConnector.propTypes = { - qualityProfileId: PropTypes.number.isRequired, - name: PropTypes.string.isRequired -}; - -export default connect(createMapStateToProps)(QualityProfileNameConnector); diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index a2ad52366..ea034cbb1 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -1063,6 +1063,7 @@ "UnableToLoadTheCalendar": "Unable to load the calendar", "UnableToLoadUISettings": "Unable to load UI settings", "Ungroup": "Ungroup", + "Unknown": "Unknown", "UnmappedFiles": "Unmapped Files", "Unmonitored": "Unmonitored", "UnmonitoredHelpText": "Include unmonitored books in the iCal feed",