deleteDocument property
Implementation
late final deleteDocument =
mutationSignal<({bool deleted, DeskDocument? newDefault}), String>((
documentId,
) async {
final docTypeName = currentDocumentType.value?.name ?? '';
// Snapshot whether this doc is currently the default
final snapshot = untracked(() => documentsContainer(docTypeName).value);
final wasDefault = snapshot.map(
data: (d) =>
d.documents.any((doc) => doc.id == documentId && doc.isDefault),
loading: () => false,
error: (_, _) => false,
);
final result = await dataSource.deleteDocument(documentId);
if (!result) return (deleted: false, newDefault: null);
if (selectedDocumentId.value == documentId) {
selectedDocumentId.value = null;
selectedVersionId.value = null;
}
await documentsContainer(docTypeName).awaitableReload();
if (wasDefault) {
final refreshed = untracked(
() => documentsContainer(docTypeName).value,
);
final newDefault = refreshed.map(
data: (d) => d.documents.firstWhereOrNull((doc) => doc.isDefault),
loading: () => null,
error: (_, _) => null,
);
return (deleted: true, newDefault: newDefault);
}
return (deleted: true, newDefault: null);
}, debugLabel: 'deleteDocument');