fix(sbp-recurring): toast ошибки отмены + per-sub ключ inline-confirm в админке

- cancelSbpMutation: onError-тост с detail бэкенда (зеркально enable) —
  молчаливый провал отмены выглядел как успех
- SubscriptionTab: ключ подтверждения cancelSbpRecurring_{subId} —
  взведённый confirm не переживает переключение подписки в пикере
- Локали: subscription.sbpRecurring.cancelError (en/ru/zh/fa)
This commit is contained in:
Fringg
2026-07-24 07:28:50 +03:00
parent 9fb80a6af4
commit 42a7190241
6 changed files with 21 additions and 3 deletions

View File

@@ -408,15 +408,19 @@ export function SubscriptionTab(props: SubscriptionTabProps) {
</div>
{hasPermission('users:subscription') && (
<button
onClick={() => onInlineConfirm('cancelSbpRecurring', onCancelSbpRecurring)}
// Per-subscription confirm key: an armed confirm must not
// survive switching to another subscription in the picker.
onClick={() =>
onInlineConfirm(`cancelSbpRecurring_${selectedSub.id}`, onCancelSbpRecurring)
}
disabled={actionLoading}
className={`rounded-lg px-3 py-2 text-sm font-medium transition-all disabled:opacity-50 ${
confirmingAction === 'cancelSbpRecurring'
confirmingAction === `cancelSbpRecurring_${selectedSub.id}`
? 'bg-warning-500 text-white'
: 'bg-warning-500/15 text-warning-400 hover:bg-warning-500/25'
}`}
>
{confirmingAction === 'cancelSbpRecurring'
{confirmingAction === `cancelSbpRecurring_${selectedSub.id}`
? t('admin.users.detail.actions.areYouSure')
: t('admin.users.detail.subscription.sbpCancel')}
</button>