From d869e5c17d2d93d0d9104ac5f7057a525e6e464d Mon Sep 17 00:00:00 2001 From: Dmitry Date: Wed, 17 Dec 2025 04:28:42 +0300 Subject: [PATCH] stuff --- mnemo_cards_admin/src/pages/CardsPage.tsx | 17 +++++++++++++---- .../lib/api/v2/admin_cards_api_v2.dart | 9 +++------ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/mnemo_cards_admin/src/pages/CardsPage.tsx b/mnemo_cards_admin/src/pages/CardsPage.tsx index d343511..774a008 100644 --- a/mnemo_cards_admin/src/pages/CardsPage.tsx +++ b/mnemo_cards_admin/src/pages/CardsPage.tsx @@ -202,10 +202,15 @@ export default function CardsPage() { } // Determine if this is an update or create - const isUpdate = selectedCard !== null && selectedCard.id !== undefined && selectedCard.id !== null && selectedCard.id !== '' + // Check if id exists and is not empty (handle both string and number) + const hasValidId = selectedCard?.id != null && + selectedCard.id !== '' && + selectedCard.id !== 0 && + String(selectedCard.id).trim() !== '' + const isUpdate = selectedCard !== null && hasValidId const cardData: GameCardDto = { - id: isUpdate ? selectedCard.id : null, + id: isUpdate ? String(selectedCard.id) : null, packId: formData.packId.trim() || undefined, original: formData.original.trim(), translation: formData.translation.trim(), @@ -230,8 +235,12 @@ export default function CardsPage() { } const confirmDelete = () => { - if (cardToDelete && cardToDelete.id) { - deleteMutation.mutate(cardToDelete.id) + if (cardToDelete && cardToDelete.id != null && cardToDelete.id !== '') { + // Ensure id is a string + const cardId = String(cardToDelete.id) + deleteMutation.mutate(cardId) + } else { + toast.error('Invalid card ID') } } diff --git a/mnemo_cards_backend/lib/api/v2/admin_cards_api_v2.dart b/mnemo_cards_backend/lib/api/v2/admin_cards_api_v2.dart index 5cfdc48..a11e772 100644 --- a/mnemo_cards_backend/lib/api/v2/admin_cards_api_v2.dart +++ b/mnemo_cards_backend/lib/api/v2/admin_cards_api_v2.dart @@ -87,9 +87,8 @@ class AdminCardsApiV2 { for (final card in paginatedCards) { final packs = await _db.packDao.getPacksForCard(card.id); final packId = packs.isNotEmpty ? packs.first.id : null; - final cardId = int.tryParse(card.id) ?? 0; cardsWithPacks.add({ - 'id': cardId, + 'id': card.id, 'packId': packId, 'original': card.original, 'translation': card.translation, @@ -257,7 +256,6 @@ class AdminCardsApiV2 { updatedAt: PgDateTime(DateTime.now()), ); await _db.packDao.updateCard(updated); - final cardIdInt = int.tryParse(updated.id) ?? 0; // Получить паки для карточки final packs = await _db.packDao.getPacksForCard(updated.id); final packId = packs.isNotEmpty ? packs.first.id : null; @@ -266,7 +264,7 @@ class AdminCardsApiV2 { json.encode({ 'success': true, 'card': { - 'id': cardIdInt, + 'id': updated.id, 'packId': packId, 'original': updated.original, 'translation': updated.translation, @@ -319,12 +317,11 @@ class AdminCardsApiV2 { final packs = await _db.packDao.getPacksForCard(cardId); final packId = packs.isNotEmpty ? packs.first.id : null; - final cardIdInt = int.tryParse(created.id) ?? 0; return Response.ok( json.encode({ 'success': true, 'card': { - 'id': cardIdInt, + 'id': created.id, 'packId': packId, 'original': created.original, 'translation': created.translation,