static async Task <List <SharedFolderModel> > GetTeamMemberShares(DropboxTeamClient teamClient, string memberId) { if (_debug) { Console.WriteLine("-------------------------------------"); Console.WriteLine("GetTeamMemberShares() called..."); } // initialize here so sharedFolders in scope of return statement List <SharedFolderModel> sharedFolders = new List <SharedFolderModel>(); _sharedFoldersListCount = 0; using (DropboxClient userClient = teamClient.AsMember(memberId)) { ListFoldersResult sharedFoldersList = await userClient.Sharing.ListFoldersAsync(); sharedFolders = await ProcessSharedFoldersList(userClient, sharedFoldersList); if (_debug) { // before ...ContinueAsync() count Console.WriteLine("----------------"); Console.WriteLine($"Total shared folders count: {_sharedFoldersListCount}"); Console.WriteLine($"Any more shared folders? sharedFoldersList.Cursor: {sharedFoldersList.Cursor}"); } // iterate over pages from userClient.Sharing.ListFoldersContinueAsync if list.Cursor is set while (sharedFoldersList.Cursor != null) { if (_debug) { Console.WriteLine("----------------"); Console.WriteLine($"sharedFoldersList.Cursor not null: {sharedFoldersList.Cursor}"); Console.WriteLine("Preparing to continue..."); } // sharedFoldersList.Cursor flips to null once all folders are listed via ListFoldersContinueAsync() sharedFoldersList = await userClient.Sharing.ListFoldersContinueAsync(sharedFoldersList.Cursor); List <SharedFolderModel> sharedFoldersCursorList = await ProcessSharedFoldersList(userClient, sharedFoldersList); sharedFolders.AddRange(sharedFoldersCursorList); if (_debug) { // after ...ContinueAsync() count Console.WriteLine("----------------"); Console.WriteLine($"Total shared folders count with continue: {_sharedFoldersListCount}"); } } } return(sharedFolders); }
static async Task <List <SharedFolderModel> > ProcessSharedFoldersList(DropboxClient userClient, ListFoldersResult listFoldersResult) { if (_debug) { Console.WriteLine("ProcessSharedFoldersList() called..."); } List <SharedFolderModel> sharedFolders = new List <SharedFolderModel>(); SharedFolderModel sharedFolder; foreach (SharedFolderMetadata sharedFolderMetadata in listFoldersResult.Entries) { if (_debug) { Console.WriteLine($"sharedFolderMetadata.PathLower: {sharedFolderMetadata.PathLower}"); } // filter out shared folder has \"Not added\" status (no path or parent folder specified) if (!String.IsNullOrEmpty(sharedFolderMetadata.PathLower)) { sharedFolder = await MapSharedFolderMetadata(userClient, sharedFolderMetadata); _sharedFoldersListCount++; sharedFolders.Add(sharedFolder); } } return(sharedFolders); }