diff --git a/lib/controller/document/document_details_controller.dart b/lib/controller/document/document_details_controller.dart index 83f0564..c160a0d 100644 --- a/lib/controller/document/document_details_controller.dart +++ b/lib/controller/document/document_details_controller.dart @@ -11,17 +11,16 @@ class DocumentDetailsController extends GetxController { var versions = [].obs; var isVersionsLoading = false.obs; + // Loading states for buttons + var isVerifyLoading = false.obs; + var isRejectLoading = false.obs; + /// Fetch document details by id Future fetchDocumentDetails(String documentId) async { try { isLoading.value = true; final response = await ApiService.getDocumentDetailsApi(documentId); - - if (response != null) { - documentDetails.value = response; - } else { - documentDetails.value = null; - } + documentDetails.value = response; } finally { isLoading.value = false; } @@ -34,7 +33,6 @@ class DocumentDetailsController extends GetxController { final response = await ApiService.getDocumentVersionsApi( parentAttachmentId: parentAttachmentId, ); - if (response != null) { versions.assignAll(response.data.data); } else { @@ -47,22 +45,28 @@ class DocumentDetailsController extends GetxController { /// Verify document Future verifyDocument(String documentId) async { - final result = - await ApiService.verifyDocumentApi(id: documentId, isVerify: true); - if (result) { - await fetchDocumentDetails(documentId); // refresh details + try { + isVerifyLoading.value = true; + final result = + await ApiService.verifyDocumentApi(id: documentId, isVerify: true); + if (result) await fetchDocumentDetails(documentId); + return result; + } finally { + isVerifyLoading.value = false; } - return result; } /// Reject document Future rejectDocument(String documentId) async { - final result = - await ApiService.verifyDocumentApi(id: documentId, isVerify: false); - if (result) { - await fetchDocumentDetails(documentId); // refresh details + try { + isRejectLoading.value = true; + final result = + await ApiService.verifyDocumentApi(id: documentId, isVerify: false); + if (result) await fetchDocumentDetails(documentId); + return result; + } finally { + isRejectLoading.value = false; } - return result; } /// Fetch Pre-Signed URL for a given version diff --git a/lib/view/document/document_details_page.dart b/lib/view/document/document_details_page.dart index 695f590..b931844 100644 --- a/lib/view/document/document_details_page.dart +++ b/lib/view/document/document_details_page.dart @@ -230,8 +230,9 @@ class _DocumentDetailsPageState extends State { if (doc.updatedAt != null) _buildDetailRow("Last Updated On", updateDate), MySpacing.height(12), - if (permissionController - .hasPermission(Permissions.verifyDocument)) ...[ + // Show buttons only if user has permission AND document is not verified yet + if (permissionController.hasPermission(Permissions.verifyDocument) && + doc.isVerified == null) ...[ Row( children: [ Expanded(