From cb5880f861432d5d28319e907e4a6c0b522aaa52 Mon Sep 17 00:00:00 2001 From: gabriel20xx Date: Wed, 12 Nov 2025 00:03:39 +0100 Subject: [PATCH] feat: implement soft delete for fields and clear items if last field is removed --- .../com/collabtable/app/ui/screens/ListDetailViewModel.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailViewModel.kt b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailViewModel.kt index a85acd2..cdedc48 100644 --- a/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailViewModel.kt +++ b/CollabTableAndroid/app/src/main/java/com/collabtable/app/ui/screens/ListDetailViewModel.kt @@ -207,7 +207,15 @@ class ListDetailViewModel( viewModelScope.launch { val ts = System.currentTimeMillis() database.withTransaction { + // Soft delete the field database.fieldDao().softDeleteField(fieldId, ts) + // Determine remaining active fields by consulting the current state flow (already up-to-date via collector) + // Fields state already excludes soft-deleted ones (query filters isDeleted = 0), so just check size after removal + val remainingFields = _fields.value + if (remainingFields.isEmpty()) { + // Last column deleted: soft-delete all items for this list to clear table content + database.itemDao().softDeleteItemsByList(listId, ts) + } database.listDao().getListById(listId)?.let { l -> database.listDao().updateList(l.copy(updatedAt = ts)) }