Digital PCT265 story MVAPCT-48 - code fixes for cache optimizations

This commit is contained in:
Scott Pfeil 2024-03-21 10:39:25 -04:00
parent 8c32dbbd7d
commit 84f4a1ac46
3 changed files with 25 additions and 7 deletions

View File

@ -383,13 +383,27 @@
if (requestParameters.backgroundRequest) { if (requestParameters.backgroundRequest) {
return [self loadBackgroundRequest:requestParameters dataForPage:dataForPage delegateObject:delegateObject]; return [self loadBackgroundRequest:requestParameters dataForPage:dataForPage delegateObject:delegateObject];
} else { } else {
if (!requestParameters.noloadingOverlay) { BOOL loadingOverlay = NO;
if (!requestParameters.noloadingOverlay && [self.blockingLoadQueue.operations indexOfObjectPassingTest:^BOOL(__kindof NSOperation * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (!obj.isExecuting) {
[MVMCoreLoggingHandler logDebugMessageWithDelegate:[NSString stringWithFormat:@"CACHEDFEED: T No executor"]];
return NO; }
if (![obj isKindOfClass:[MVMCoreLoadRequestOperation class]]) {
[MVMCoreLoggingHandler logDebugMessageWithDelegate:[NSString stringWithFormat:@"CACHEDFEED: T Not load request"]];
return NO; }
[MVMCoreLoggingHandler logDebugMessageWithDelegate:[NSString stringWithFormat:@"CACHEDFEED: T %@ %i",((MVMCoreLoadRequestOperation *)obj).loadObject.requestParameters.pageType,((MVMCoreLoadRequestOperation *)obj).loadObject.requestParameters.noloadingOverlay]];
return ((MVMCoreLoadRequestOperation *)obj).requestParameters.noloadingOverlay;
}] != NSNotFound) {
loadingOverlay = YES;
[MVMCoreLoggingHandler logDebugMessageWithDelegate:[NSString stringWithFormat:@"CACHEDFEED: We need a loading indicator"]];
[[MVMCoreLoadingOverlayHandler sharedLoadingOverlay] startLoading]; [[MVMCoreLoadingOverlayHandler sharedLoadingOverlay] startLoading];
} }
MVMCoreLoadRequestOperation *loadOperation = [[MVMCoreLoadRequestOperation alloc] initWithRequestParameters:requestParameters dataForPage:dataForPage delegateObject:delegateObject backgroundLoad:NO]; MVMCoreLoadRequestOperation *loadOperation = [[MVMCoreLoadRequestOperation alloc] initWithRequestParameters:requestParameters dataForPage:dataForPage delegateObject:delegateObject backgroundLoad:NO];
loadOperation.identifier = requestParameters.identifier; loadOperation.identifier = requestParameters.identifier;
[loadOperation setCompletionBlock:^{ [loadOperation setCompletionBlock:^{
[[MVMCoreLoadingOverlayHandler sharedLoadingOverlay] stopLoading:YES]; if (loadingOverlay) {
[[MVMCoreLoadingOverlayHandler sharedLoadingOverlay] stopLoading:YES];
}
}]; }];
[self.blockingLoadQueue addOperation:loadOperation]; [self.blockingLoadQueue addOperation:loadOperation];
return loadOperation; return loadOperation;

View File

@ -47,10 +47,14 @@ public extension MVMCoreLoadRequestOperation {
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Controller shouldn't be replaced.") MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Controller shouldn't be replaced.")
return true return true
} }
let newVC = MVMCoreViewControllerMappingObject.shared()?.createMFViewController(ofTemplate: loadObject.pageJSON?.optionalStringForKey("template"), pageType: pageType) guard let newVC = MVMCoreViewControllerMappingObject.shared()?.createMFViewController(ofTemplate: loadObject.pageJSON?.optionalStringForKey("template"), pageType: pageType) else {
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Failed to create a new controller")
return true
}
guard let index = NavigationHandler.shared().navigationController?.viewControllers.firstIndex(where: { controller in guard let index = NavigationHandler.shared().navigationController?.viewControllers.firstIndex(where: { controller in
(controller as? MVMCoreViewControllerProtocol)?.pageType == pageType && type(of: controller) == type(of: newVC) MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Compare controller pageType:\(pageType) controllerPageType:\((controller as? MVMCoreViewControllerProtocol)?.pageType) type:\(type(of: controller)) newType:\(type(of: newVC))")
}) else { return (controller as? MVMCoreViewControllerProtocol)?.pageType == pageType && type(of: controller) == type(of: newVC)
}) else {
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: No matching controller found.") MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: No matching controller found.")
return true return true
} }

View File

@ -132,7 +132,7 @@
} else { } else {
// No provided load object, check the cache for data first.. // No provided load object, check the cache for data first..
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 3 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[MVMCoreLoadRequestOperation checkCacheForDataForRequest:self.requestParameters completionHandler:^(NSDictionary *pageFromCache, NSDictionary *modulesFromCache) { [MVMCoreLoadRequestOperation checkCacheForDataForRequest:self.requestParameters completionHandler:^(NSDictionary *pageFromCache, NSDictionary *modulesFromCache) {
@ -199,7 +199,7 @@
}]; }];
} }
}]; }];
}); // });
} }
} }