From f10a02ceb6649b2dd4301365919fc066d604e95f Mon Sep 17 00:00:00 2001 From: Fringg Date: Mon, 9 Feb 2026 22:30:28 +0300 Subject: [PATCH] feat: show affected subscriptions count on tariff deletion Update delete mutation to use affected_subscriptions from API response. Show contextual success notification with subscription count. Add deleteSuccessWithSubscriptions translation key in all 4 locales. --- src/api/tariffs.ts | 4 +++- src/locales/en.json | 1 + src/locales/fa.json | 1 + src/locales/ru.json | 1 + src/locales/zh.json | 1 + src/pages/AdminTariffs.tsx | 10 ++++++++-- 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/api/tariffs.ts b/src/api/tariffs.ts index bd8ba11..5e4234f 100644 --- a/src/api/tariffs.ts +++ b/src/api/tariffs.ts @@ -208,7 +208,9 @@ export const tariffsApi = { }, // Delete tariff - deleteTariff: async (tariffId: number): Promise<{ message: string }> => { + deleteTariff: async ( + tariffId: number, + ): Promise<{ message: string; affected_subscriptions: number }> => { const response = await apiClient.delete(`/cabinet/admin/tariffs/${tariffId}`); return response.data; }, diff --git a/src/locales/en.json b/src/locales/en.json index 395d587..deb3be8 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1370,6 +1370,7 @@ "confirmDeleteText": "This action cannot be undone. The tariff will be permanently deleted.", "confirmDeleteWithSubscriptions": "This tariff has {{count}} active subscriptions. After deletion, users will need to select a new tariff when renewing.", "deleteSuccess": "Tariff deleted successfully", + "deleteSuccessWithSubscriptions": "Tariff deleted. {{count}} subscriptions reset — users will choose a new tariff on renewal.", "saveOrder": "Save order", "orderSaved": "Order saved", "dragToReorder": "Drag to reorder", diff --git a/src/locales/fa.json b/src/locales/fa.json index 5ffd5a5..de083f3 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -1076,6 +1076,7 @@ "confirmDeleteText": "این عمل قابل بازگشت نیست. تعرفه برای همیشه حذف می‌شود.", "confirmDeleteWithSubscriptions": "این تعرفه {{count}} اشتراک فعال دارد. پس از حذف، کاربران هنگام تمدید باید تعرفه جدید انتخاب کنند.", "deleteSuccess": "تعرفه با موفقیت حذف شد", + "deleteSuccessWithSubscriptions": "تعرفه حذف شد. تعرفه {{count}} اشتراک بازنشانی شد — کاربران هنگام تمدید تعرفه جدید انتخاب می‌کنند.", "saveOrder": "ذخیره ترتیب", "orderSaved": "ترتیب ذخیره شد", "dragToReorder": "برای تغییر ترتیب بکشید", diff --git a/src/locales/ru.json b/src/locales/ru.json index e4bb5c1..8108aa2 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1888,6 +1888,7 @@ "confirmDeleteText": "Это действие нельзя отменить. Тариф будет удалён навсегда.", "confirmDeleteWithSubscriptions": "У этого тарифа {{count}} активных подписок. При удалении пользователям потребуется выбрать новый тариф при продлении.", "deleteSuccess": "Тариф успешно удален", + "deleteSuccessWithSubscriptions": "Тариф удален. У {{count}} подписок сброшен тариф — при продлении пользователи выберут новый.", "saveOrder": "Сохранить порядок", "orderSaved": "Порядок сохранён", "dragToReorder": "Перетащите для изменения порядка", diff --git a/src/locales/zh.json b/src/locales/zh.json index 61f417d..f99142b 100644 --- a/src/locales/zh.json +++ b/src/locales/zh.json @@ -1114,6 +1114,7 @@ "confirmDeleteText": "此操作不可撤销。套餐将被永久删除。", "confirmDeleteWithSubscriptions": "此套餐有 {{count}} 个活跃订阅。删除后,用户续订时需要选择新套餐。", "deleteSuccess": "套餐删除成功", + "deleteSuccessWithSubscriptions": "套餐已删除。{{count}} 个订阅已重置 — 用户续订时将选择新套餐。", "saveOrder": "保存排序", "orderSaved": "排序已保存", "dragToReorder": "拖动以重新排序", diff --git a/src/pages/AdminTariffs.tsx b/src/pages/AdminTariffs.tsx index ba93d31..c45831c 100644 --- a/src/pages/AdminTariffs.tsx +++ b/src/pages/AdminTariffs.tsx @@ -282,9 +282,15 @@ export default function AdminTariffs() { // Mutations const deleteMutation = useMutation({ mutationFn: tariffsApi.deleteTariff, - onSuccess: () => { + onSuccess: (data) => { queryClient.invalidateQueries({ queryKey: ['admin-tariffs'] }); - notify.success(t('admin.tariffs.deleteSuccess')); + if (data.affected_subscriptions > 0) { + notify.success( + t('admin.tariffs.deleteSuccessWithSubscriptions', { count: data.affected_subscriptions }), + ); + } else { + notify.success(t('admin.tariffs.deleteSuccess')); + } }, });