From f960bf61cf456f0cd876eced20654f6bfa3639c9 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Wed, 17 Jun 2026 00:39:27 +0200 Subject: [PATCH] Require confirmation before category deletion closes #1118 --- CHANGELOG.md | 1 + .../category/components/CategorySettingsCard.tsx | 16 ++++++++++++++-- src/i18n/locales/en.po | 10 ++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd011cd0..e14fb9c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - (**Reader**) Simplify changing settings in desktop sidebar - (**Reader**) Ignore tap zone clicks while window does not have focus - (**Reader**) Improve preloading pages from the previous/next chapter +- (**Category**) Require confirmation before deleting a category ### Fixed diff --git a/src/features/category/components/CategorySettingsCard.tsx b/src/features/category/components/CategorySettingsCard.tsx index fe5d940c..e3525def 100644 --- a/src/features/category/components/CategorySettingsCard.tsx +++ b/src/features/category/components/CategorySettingsCard.tsx @@ -19,6 +19,9 @@ import { CustomTooltip } from '@/base/components/CustomTooltip.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; import { ListCardContent } from '@/base/components/lists/cards/ListCardContent.tsx'; import type { CategoryIdInfo, CategoryNameInfo } from '@/features/category/Category.types.ts'; +import { Confirmation } from '@/base/AppAwaitableComponent.ts'; +import { makeToast } from '@/base/utils/Toast.ts'; +import { getErrorMessage } from '@/lib/HelperFunctions.ts'; export const CategorySettingsCard = ({ category, @@ -29,8 +32,17 @@ export const CategorySettingsCard = ({ }) => { const { t } = useLingui(); - const deleteCategory = () => { - requestManager.deleteCategory(category.id); + const deleteCategory = async () => { + await Confirmation.show({ + title: t`Are you sure?`, + message: t`You are about to delete category "${category.name}"`, + }); + + try { + await requestManager.deleteCategory(category.id).response; + } catch (e) { + makeToast(t`Could not delete category`, 'error', getErrorMessage(e)); + } }; return ( diff --git a/src/i18n/locales/en.po b/src/i18n/locales/en.po index df839fb4..47f5ab1d 100644 --- a/src/i18n/locales/en.po +++ b/src/i18n/locales/en.po @@ -450,6 +450,7 @@ msgstr "Apply safe area padding" msgid "Are you sure you want to abort the migration?" msgstr "Are you sure you want to abort the migration?" +#: src/features/category/components/CategorySettingsCard.tsx #: src/features/chapter/services/Chapters.ts #: src/features/manga/hooks/useManageMangaLibraryState.tsx #: src/features/manga/services/Mangas.ts @@ -1011,6 +1012,10 @@ msgstr "Could not create category" msgid "Could not create theme" msgstr "Could not create theme" +#: src/features/category/components/CategorySettingsCard.tsx +msgid "Could not delete category" +msgstr "Could not delete category" + #. placeholder {0}: theme.getName() #: src/features/theme/components/ThemeList.tsx msgid "Could not delete theme \"{0}\"" @@ -3974,6 +3979,11 @@ msgstr "Yesterday at {timeString}" msgid "Ying & Yang" msgstr "Ying & Yang" +#. placeholder {0}: category.name +#: src/features/category/components/CategorySettingsCard.tsx +msgid "You are about to delete category \"{0}\"" +msgstr "You are about to delete category \"{0}\"" + #. placeholder {0}: manga.title #: src/features/manga/hooks/useManageMangaLibraryState.tsx msgid "You are about to remove \"{0}\" from your library"