Skip to content
Snippets Groups Projects

[3.3.x] VLCOneDriveController: add pagination of list with more than 200 items

Merged Soomin Lee requested to merge bubu/vlc-ios:cloud/onedrive/pagination/02 into 3.3.x
@@ -196,10 +196,30 @@ static void *ProgressObserverContext = &ProgressObserverContext;
}
- (void)loadODItemsContinueWithRequest:(ODChildrenCollectionRequest *)request
result:(NSMutableArray *)result
{
__weak typeof(self) weakSelf = self;
[request getWithCompletion:^(ODCollection *response,
ODChildrenCollectionRequest *nextRequest, NSError *error) {
if (!error) {
[result addObjectsFromArray:response.value];
if (nextRequest != NULL) {
[weakSelf loadODItemsContinueWithRequest:nextRequest result:result];
} else {
[weakSelf sendMediaListUpdateWithContent:result completionHandler:NULL];
}
} else {
[weakSelf handleLoadODItemErrorWithError:error itemID:@"root"];
}
}];
}
- (void)loadODItemsWithCompletionHandler:(void (^)(void))completionHandler
{
NSString *itemID = _currentItem ? _currentItem.id : @"root";
ODChildrenCollectionRequest * request = [[[[_oneDriveClient drive] items:itemID] children] request];
NSMutableArray<ODItem *> *requestContent = [[NSMutableArray alloc] init];
// Clear all current
[_currentItems removeAllObjects];
@@ -208,9 +228,11 @@ static void *ProgressObserverContext = &ProgressObserverContext;
[request getWithCompletion:^(ODCollection *response, ODChildrenCollectionRequest *nextRequest, NSError *error) {
if (!error) {
[self prepareODItems:response.value];
if (completionHandler) {
completionHandler();
if (nextRequest != NULL) {
[weakSelf loadODItemsContinueWithRequest:nextRequest result:requestContent];
} else {
[weakSelf sendMediaListUpdateWithContent:response.value
completionHandler:completionHandler];
}
} else {
[weakSelf handleLoadODItemErrorWithError:error itemID:itemID];
@@ -218,6 +240,14 @@ static void *ProgressObserverContext = &ProgressObserverContext;
}];
}
- (void)sendMediaListUpdateWithContent:(NSArray *)content completionHandler:(void (^)(void))completionHandler
{
[self prepareODItems:content];
if (completionHandler) {
completionHandler();
}
}
- (void)handleLoadODItemErrorWithError:(NSError *)error itemID:(NSString *)itemID
{
__weak typeof(self) weakSelf = self;
Loading