From 63039b8707979c5fdef0eb214f16a62b91235e44 Mon Sep 17 00:00:00 2001 From: sdarbinyan Date: Thu, 13 Aug 2026 08:28:56 +0400 Subject: [PATCH] fix: review 'Archive' button was mislabeled delete, zero confirmation The bulk button read 'Archive' but called applyBulkDelete() -> gateway.deleteReview() - a real hard delete, and reviews have no archived status in the model at all, so 'archive' was never a real concept here. Relabeled to 'Delete' and added an app-confirm-dialog gate, same pattern as products/categories/orders. Co-Authored-By: Claude Sonnet 5 --- .../pages/admin-reviews-list-page.component.html | 9 ++++++++- .../pages/admin-reviews-list-page.component.ts | 13 ++++++++++++- src/app/i18n/en.ts | 3 ++- src/app/i18n/hy.ts | 3 ++- src/app/i18n/ru.ts | 3 ++- src/app/i18n/translations.ts | 3 ++- 6 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/app/features/admin/moderation/pages/admin-reviews-list-page.component.html b/src/app/features/admin/moderation/pages/admin-reviews-list-page.component.html index a257208..968d979 100644 --- a/src/app/features/admin/moderation/pages/admin-reviews-list-page.component.html +++ b/src/app/features/admin/moderation/pages/admin-reviews-list-page.component.html @@ -53,9 +53,16 @@ {{ 'adminOrders.applyStatus' | translate }} {{ 'adminModeration.hideSelected' | translate }} {{ 'adminProducts.bulkExportAction' | translate }} - {{ 'adminModeration.archiveSelected' | translate }} + {{ 'adminModeration.deleteSelected' | translate }} } + @if (facade.loading()) {
diff --git a/src/app/features/admin/moderation/pages/admin-reviews-list-page.component.ts b/src/app/features/admin/moderation/pages/admin-reviews-list-page.component.ts index 5bf8cee..608da48 100644 --- a/src/app/features/admin/moderation/pages/admin-reviews-list-page.component.ts +++ b/src/app/features/admin/moderation/pages/admin-reviews-list-page.component.ts @@ -16,11 +16,12 @@ import { SkeletonComponent } from '../../../../shared/ui/skeleton/skeleton.compo import { CardComponent } from '../../../../shared/ui/card/card.component'; import { ModerationDashboardComponent } from '../components/moderation-dashboard/moderation-dashboard.component'; import { ReviewHealthWidgetComponent, ReviewHealthItem } from '../components/review-health-widget/review-health-widget.component'; +import { ConfirmDialogComponent } from '../../../../shared/ui/confirm-dialog/confirm-dialog.component'; @Component({ selector: 'app-admin-reviews-list-page', standalone: true, - imports: [CommonModule, FormsModule, TranslatePipe, ButtonComponent, InputComponent, BadgeComponent, TableComponent, PaginationComponent, EmptyStateComponent, SkeletonComponent, CardComponent, ModerationDashboardComponent, ReviewHealthWidgetComponent], + imports: [CommonModule, FormsModule, TranslatePipe, ButtonComponent, InputComponent, BadgeComponent, TableComponent, PaginationComponent, EmptyStateComponent, SkeletonComponent, CardComponent, ModerationDashboardComponent, ReviewHealthWidgetComponent, ConfirmDialogComponent], templateUrl: './admin-reviews-list-page.component.html', styleUrls: ['./admin-reviews-list-page.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush @@ -35,6 +36,7 @@ export class AdminReviewsListPageComponent { readonly allColumns = ALL_REVIEW_COLUMNS; protected readonly columnsPanelOpen = signal(false); protected readonly bulkStatusValue = signal('approved'); + protected readonly bulkDeleteConfirmOpen = signal(false); constructor() { this.facade.loadList(); @@ -45,6 +47,15 @@ export class AdminReviewsListPageComponent { return Math.max(1, Math.ceil(this.facade.total() / this.facade.filters().pageSize)); } + bulkDelete(): void { + this.bulkDeleteConfirmOpen.set(true); + } + + confirmBulkDelete(): void { + this.facade.applyBulkDelete(); + this.bulkDeleteConfirmOpen.set(false); + } + view(id: string): void { void this.router.navigate([this.languageService.currentLanguage(), 'backoffice', 'moderation', id]); } diff --git a/src/app/i18n/en.ts b/src/app/i18n/en.ts index a8093d6..749cd3c 100644 --- a/src/app/i18n/en.ts +++ b/src/app/i18n/en.ts @@ -1302,7 +1302,8 @@ export const en: Translations = { notAvailable: 'Not available yet', changeStatus: 'Change status', hideSelected: 'Hide', - archiveSelected: 'Archive', + deleteSelected: 'Delete', + confirmBulkDelete: 'Delete the selected reviews? This cannot be undone.', reportsQueue: 'Reports queue', reportsColumn: 'Reports', reportTarget: 'Reported item', diff --git a/src/app/i18n/hy.ts b/src/app/i18n/hy.ts index 7f1100e..539d2a0 100644 --- a/src/app/i18n/hy.ts +++ b/src/app/i18n/hy.ts @@ -1297,7 +1297,8 @@ export const hy: Translations = { notAvailable: 'Դեռ հասանելի չէ', changeStatus: 'Փոխել կարգավիճակը', hideSelected: 'Թաքցնել', - archiveSelected: 'Արխիվացնել', + deleteSelected: 'Ջնջել', + confirmBulkDelete: 'Ջնջե՞լ ընտրված կարծիքները։ Հնարավոր չէ հետարկել։', reportsQueue: 'Բողոքների հերթ', reportsColumn: 'Բողոքներ', reportTarget: 'Բողոքարկված օբյեկտ', diff --git a/src/app/i18n/ru.ts b/src/app/i18n/ru.ts index b841604..6c06518 100644 --- a/src/app/i18n/ru.ts +++ b/src/app/i18n/ru.ts @@ -1297,7 +1297,8 @@ export const ru: Translations = { notAvailable: 'Пока недоступно', changeStatus: 'Изменить статус', hideSelected: 'Скрыть', - archiveSelected: 'В архив', + deleteSelected: 'Удалить', + confirmBulkDelete: 'Удалить выбранные отзывы? Это действие нельзя отменить.', reportsQueue: 'Очередь жалоб', reportsColumn: 'Жалобы', reportTarget: 'Объект жалобы', diff --git a/src/app/i18n/translations.ts b/src/app/i18n/translations.ts index 4d60970..a52246f 100644 --- a/src/app/i18n/translations.ts +++ b/src/app/i18n/translations.ts @@ -1301,7 +1301,8 @@ export interface Translations { notAvailable: string; changeStatus: string; hideSelected: string; - archiveSelected: string; + deleteSelected: string; + confirmBulkDelete: string; reportsQueue: string; reportsColumn: string; reportTarget: string;