From 0ff563e144d43e496f9f923fde29fffedf5f1e01 Mon Sep 17 00:00:00 2001 From: Thomas Williamson Date: Thu, 13 Nov 2025 16:14:06 +0100 Subject: [PATCH] Refactor ValidateListingResponse to include AFSDirectoryContent for improved pagination handling #5500 --- .../App/src/ExtFileShareConnectorImpl.Codeunit.al | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Apps/W1/External File Storage - Azure File Service Connector/App/src/ExtFileShareConnectorImpl.Codeunit.al b/src/Apps/W1/External File Storage - Azure File Service Connector/App/src/ExtFileShareConnectorImpl.Codeunit.al index e8985dff94..bfb759c612 100644 --- a/src/Apps/W1/External File Storage - Azure File Service Connector/App/src/ExtFileShareConnectorImpl.Codeunit.al +++ b/src/Apps/W1/External File Storage - Azure File Service Connector/App/src/ExtFileShareConnectorImpl.Codeunit.al @@ -416,12 +416,16 @@ codeunit 4570 "Ext. File Share Connector Impl" implements "External File Storage AFSOptionalParameters.Marker(FilePaginationData.GetMarker()); end; - local procedure ValidateListingResponse(var FilePaginationData: Codeunit "File Pagination Data"; var AFSOperationResponse: Codeunit "AFS Operation Response") + local procedure ValidateListingResponse(var FilePaginationData: Codeunit "File Pagination Data"; var AFSDirectoryContent: Record "AFS Directory Content"; var AFSOperationResponse: Codeunit "AFS Operation Response") begin if not AFSOperationResponse.IsSuccessful() then Error(AFSOperationResponse.GetError()); - FilePaginationData.SetEndOfListing(true); + if not AFSDirectoryContent.FindLast() then + FilePaginationData.SetEndOfListing(true); + + FilePaginationData.SetMarker(AFSDirectoryContent."Next Marker"); + FilePaginationData.SetEndOfListing(AFSDirectoryContent."Next Marker" = ''); end; local procedure GetDirectoryContent(var AccountId: Guid; var PassedPath: Text; var FilePaginationData: Codeunit "File Pagination Data"; var AFSDirectoryContent: Record "AFS Directory Content") @@ -437,7 +441,7 @@ codeunit 4570 "Ext. File Share Connector Impl" implements "External File Storage Path := CopyStr(PassedPath, 1, MaxStrLen(Path)); AFSOperationResponse := AFSFileClient.ListDirectory(Path, AFSDirectoryContent, AFSOptionalParameters); PassedPath := Path; - ValidateListingResponse(FilePaginationData, AFSOperationResponse); + ValidateListingResponse(FilePaginationData, AFSDirectoryContent, AFSOperationResponse); end; local procedure SetReadySAS(var StorageServiceAuthorization: Codeunit "Storage Service Authorization"; Secret: SecretText): Interface System.Azure.Storage."Storage Service Authorization"