From 5279339b86f2fc0d1946f0ef53d0842a922117fd Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Tue, 4 Jul 2023 21:53:25 +0200 Subject: [PATCH] Feature/update i18next to v23.x (#391) * Update i18next to v23.x Update to version 23.2.7 * Use new "ParseKeys" (old: "TFuncKey") type * Remove unnecessary casts to string Not needed anymore with the latest version --- package.json | 2 +- src/components/ExtensionCard.tsx | 2 +- src/components/library/LibraryOptionsPanel.tsx | 4 ++-- src/components/manga/ChapterList.tsx | 4 ++-- src/components/manga/ChapterOptions.tsx | 4 ++-- src/components/navbar/navigation/DesktopSideBar.tsx | 2 +- src/components/navbar/navigation/MobileBottomBar.tsx | 2 +- src/screens/Library.tsx | 4 ++-- src/screens/Reader.tsx | 2 +- src/screens/SourceMangas.tsx | 2 +- src/screens/util/Extensions.ts | 2 +- src/typings.ts | 4 ++-- yarn.lock | 10 +++++----- 13 files changed, 22 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 00a332e8..a30946a9 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@vitejs/plugin-react": "^4.0.0", "axios": "^1.4.0", "file-selector": "^0.6.0", - "i18next": "^22.5.0", + "i18next": "^23.2.7", "i18next-browser-languagedetector": "^7.0.2", "react": "^18.2.0", "react-beautiful-dnd": "^13.1.1", diff --git a/src/components/ExtensionCard.tsx b/src/components/ExtensionCard.tsx index e38e3bcc..0941014f 100644 --- a/src/components/ExtensionCard.tsx +++ b/src/components/ExtensionCard.tsx @@ -159,7 +159,7 @@ export default function ExtensionCard(props: IProps) { sx={{ color: installedState === InstalledState.OBSOLETE ? 'red' : 'inherit' }} onClick={() => handleButtonClick()} > - {t(INSTALLED_STATE_TO_TRANSLATION_KEY_MAP[installedState]) as string} + {t(INSTALLED_STATE_TO_TRANSLATION_KEY_MAP[installedState])} diff --git a/src/components/library/LibraryOptionsPanel.tsx b/src/components/library/LibraryOptionsPanel.tsx index 31f61af8..0f660a9c 100644 --- a/src/components/library/LibraryOptionsPanel.tsx +++ b/src/components/library/LibraryOptionsPanel.tsx @@ -48,7 +48,7 @@ const LibraryOptionsPanel: React.FC = ({ open, onClose }) => { open={open} onClose={onClose} tabs={['filter', 'sort', 'display']} - tabTitle={(key) => t(TITLES[key]) as string} + tabTitle={(key) => t(TITLES[key])} tabContent={(key) => { if (key === 'filter') { return ( @@ -70,7 +70,7 @@ const LibraryOptionsPanel: React.FC = ({ open, onClose }) => { return SORT_OPTIONS.map(([mode, label]) => ( diff --git a/src/components/manga/ChapterList.tsx b/src/components/manga/ChapterList.tsx index 77167807..1514bcce 100644 --- a/src/components/manga/ChapterList.tsx +++ b/src/components/manga/ChapterList.tsx @@ -168,9 +168,9 @@ const ChapterList: React.FC = ({ mangaId }) => { } actionPromise - .then(() => makeToast(t(actionsStrings[action].success, { count: chapterIds.length }) as string, 'success')) + .then(() => makeToast(t(actionsStrings[action].success, { count: chapterIds.length }), 'success')) .then(() => mutate()) - .catch(() => makeToast(t(actionsStrings[action].error, { count: chapterIds.length }) as string, 'error')); + .catch(() => makeToast(t(actionsStrings[action].error, { count: chapterIds.length }), 'error')); }; if (isLoading) { diff --git a/src/components/manga/ChapterOptions.tsx b/src/components/manga/ChapterOptions.tsx index 63c02252..b029f3b0 100644 --- a/src/components/manga/ChapterOptions.tsx +++ b/src/components/manga/ChapterOptions.tsx @@ -38,7 +38,7 @@ const ChapterOptions: React.FC = ({ open, onClose, options, optionsDispa onClose={onClose} minHeight={150} tabs={['filter', 'sort', 'display']} - tabTitle={(key) => t(TITLES[key]) as string} + tabTitle={(key) => t(TITLES[key])} tabContent={(key) => { if (key === 'filter') { return ( @@ -83,7 +83,7 @@ const ChapterOptions: React.FC = ({ open, onClose, options, optionsDispa return SORT_OPTIONS.map(([mode, label]) => ( diff --git a/src/components/navbar/navigation/DesktopSideBar.tsx b/src/components/navbar/navigation/DesktopSideBar.tsx index 3b28b25b..1711c403 100644 --- a/src/components/navbar/navigation/DesktopSideBar.tsx +++ b/src/components/navbar/navigation/DesktopSideBar.tsx @@ -48,7 +48,7 @@ export default function DesktopSideBar({ navBarItems }: IProps) { - + {iconFor(path, IconComponent, SelectedIconComponent)} diff --git a/src/components/navbar/navigation/MobileBottomBar.tsx b/src/components/navbar/navigation/MobileBottomBar.tsx index 3c865865..823d67a5 100644 --- a/src/components/navbar/navigation/MobileBottomBar.tsx +++ b/src/components/navbar/navigation/MobileBottomBar.tsx @@ -70,7 +70,7 @@ export default function MobileBottomBar({ navBarItems }: IProps) { : 'grey.600', }} > - {t(title) as string} + {t(title)} diff --git a/src/screens/Library.tsx b/src/screens/Library.tsx index c5644f4e..b0539cec 100644 --- a/src/screens/Library.tsx +++ b/src/screens/Library.tsx @@ -126,7 +126,7 @@ export default function Library() { ); @@ -173,7 +173,7 @@ export default function Library() { ))} diff --git a/src/screens/Reader.tsx b/src/screens/Reader.tsx index 38d5642f..63e68cc9 100644 --- a/src/screens/Reader.tsx +++ b/src/screens/Reader.tsx @@ -143,7 +143,7 @@ export default function Reader() { [ChapterOffset.NEXT]: 'reader.error.label.unable_to_get_next_chapter_skip_dup', }; - makeToast(t(offsetToTranslationKeyMap[offset]) as string, 'error'); + makeToast(t(offsetToTranslationKeyMap[offset]), 'error'); } finally { setRetrievingNextChapter(false); } diff --git a/src/screens/SourceMangas.tsx b/src/screens/SourceMangas.tsx index 9ce8d96d..d50445a7 100644 --- a/src/screens/SourceMangas.tsx +++ b/src/screens/SourceMangas.tsx @@ -191,7 +191,7 @@ export default function SourceMangas() { const { data: source } = requestManager.useGetSource(sourceId); const [triggerDataRefresh, setTriggerDataRefresh] = useState(false); - const message = !isLoading ? (t(SOURCE_CONTENT_TYPE_TO_ERROR_MSG_KEY[contentType]) as string) : undefined; + const message = !isLoading ? t(SOURCE_CONTENT_TYPE_TO_ERROR_MSG_KEY[contentType]) : undefined; const isLocalSource = sourceId === '0'; const messageExtra = isLocalSource ? ( <> diff --git a/src/screens/util/Extensions.ts b/src/screens/util/Extensions.ts index 10d3e3e2..2ed2dcee 100644 --- a/src/screens/util/Extensions.ts +++ b/src/screens/util/Extensions.ts @@ -51,5 +51,5 @@ export const isExtensionStateOrLanguage = (languageCode: string): boolean => export const translateExtensionLanguage = (languageCode: string): string => isExtensionStateOrLanguage(languageCode) - ? (t(extensionLanguageToTranslationKey[languageCode as ExtensionState | DefaultLanguage]) as string) + ? t(extensionLanguageToTranslationKey[languageCode as ExtensionState | DefaultLanguage]) : langCodeToName(languageCode); diff --git a/src/typings.ts b/src/typings.ts index e18acfcb..56ac5ebe 100644 --- a/src/typings.ts +++ b/src/typings.ts @@ -8,7 +8,7 @@ import { OverridableComponent } from '@mui/material/OverridableComponent'; import { SvgIconTypeMap } from '@mui/material/SvgIcon/SvgIcon'; -import { TFuncKey } from 'i18next'; +import { ParseKeys } from 'i18next'; import { Location } from 'react-router-dom'; type GenericLocation = Omit & { state?: State }; @@ -19,7 +19,7 @@ declare module 'react-router-dom' { export function useLocation(): GenericLocation; } -export type TranslationKey = TFuncKey; +export type TranslationKey = ParseKeys; export interface IExtension { name: string; diff --git a/yarn.lock b/yarn.lock index 4e0ccb6a..db6bad94 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1877,12 +1877,12 @@ i18next-browser-languagedetector@^7.0.2: dependencies: "@babel/runtime" "^7.19.4" -i18next@^22.5.0: - version "22.5.1" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.5.1.tgz#99df0b318741a506000c243429a7352e5f44d424" - integrity sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA== +i18next@^23.2.7: + version "23.2.7" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.2.7.tgz#1e528b71061ca62668d7d2b6586fb4e6cfe5adb4" + integrity sha512-EsbHHvF6b+p+B6Cht5fYWY7VE/WYOrqB1+DNwa1UpLTw6mG5g4tc8KCEjUUOSMUA2yqCsdYQP+PqVq5nBMtOtQ== dependencies: - "@babel/runtime" "^7.20.6" + "@babel/runtime" "^7.22.5" ignore@^5.2.0: version "5.2.4"