From 64c0539cec4da4524c74340e450adf03a5985b24 Mon Sep 17 00:00:00 2001 From: "Khan, Arshad" Date: Fri, 30 Jul 2021 21:23:17 +0530 Subject: [PATCH 1/7] Don't throw error if no Page and response info is success --- MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m index 3231d11..68c451a 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m @@ -485,10 +485,7 @@ // If the server told us there is an error screen but did not provide the page, show a critical error and log so we can have them fix it. if (error.errorScreenError && !error.nativeDrivenErrorScreen && loadObject.pageType.length == 0) { - error.logError = YES; - error.errorScreenError = NO; - error.location = [NSString stringWithFormat:@"%li-%@",(long)ErrorCodeNoErrorPageSent,error.location]; - [MVMCoreLoadRequestOperation handleError:error loadObject:loadObject showAlertForErrorIfApplicable:YES]; + // do not throw error if Page is not present in response [MVMCoreLoadRequestOperation loadFinished:loadObject loadedViewController:nil errorObject:error]; } else { // No screen to load, finish the load. From 09803cb411e9910c3a6686b95d5e1db4dcc3d205 Mon Sep 17 00:00:00 2001 From: "Khan, Arshad" Date: Tue, 3 Aug 2021 13:52:14 +0530 Subject: [PATCH 2/7] adding logs for testing no page error --- .../LoadHandling/MVMCoreLoadRequestOperation.m | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m index 56bb8ed..3f957b3 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m @@ -166,13 +166,14 @@ // Can continue loading with the page. [MVMCoreLoadRequestOperation handleLoadObject:loadObject error:error]; - } else if (loadObject.operation.backgroundLoad || loadObject.requestParameters.noViewControllerToLoad || ([[MVMCoreObject sharedInstance].globalLoadDelegate respondsToSelector:@selector(hasContentToShow:error:)] && [[MVMCoreObject sharedInstance].globalLoadDelegate hasContentToShow:loadObject error:error])) { - + } else if (loadObject.operation.backgroundLoad || loadObject.requestParameters.noViewControllerToLoad || ([[MVMCoreObject sharedInstance].globalLoadDelegate respondsToSelector:@selector(hasContentToShow:error:)] && [[MVMCoreObject sharedInstance].globalLoadDelegate hasContentToShow:loadObject error:error]) || (loadObject.pageType.length == 0 && [[loadObject.responseInfoMap stringForKey:KeyType] isEqualToString:ValueTypeSuccess])) { + MVMCoreLog(@"handling no page Error gracefully1"); + // handle gracefully even if no pageType/page in response, but success response info provided // Something to show, or nothing was expected to show, can finish. [MVMCoreLoadRequestOperation loadFinished:loadObject loadedViewController:nil errorObject:error]; } else { - - // Error, foreground request with no page, alert, action, or anything else to show. Abort with error. + MVMCoreLog(@"no page Error: "); + // Error, foreground request with no alert, action, or anything else to show. Abort with error. MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorCritical] code:ErrorCodeNoPageType domain:ErrorDomainNative location:[[MVMCoreLoadHandler sharedGlobal] errorLocationForRequest:loadObject]]; [MVMCoreLoadRequestOperation loadAbortedWithError:error loadObject:loadObject]; } @@ -499,6 +500,7 @@ // If the server told us there is an error screen but did not provide the page, show a critical error and log so we can have them fix it. if (error.errorScreenError && !error.nativeDrivenErrorScreen && loadObject.pageType.length == 0) { + MVMCoreLog(@"handling no page Error gracefully2"); // do not throw error if Page is not present in response [MVMCoreLoadRequestOperation loadFinished:loadObject loadedViewController:nil errorObject:error]; } else { @@ -666,6 +668,7 @@ if (pageType) { [[MVMCoreCache sharedCache] addPageToCache:obj pageType:pageType queue:nil waitUntilFinished:YES completionBlock:NULL]; } else { + MVMCoreLog(@"Cache no page Error: "); errorObject = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorCritical] code:ErrorCodeNoPageType domain:ErrorDomainNative location:[[MVMCoreLoadHandler sharedGlobal] errorLocationForRequest:loadObject]]; } } else { From b3c0673c834dfdd1f8b6a26b4a8f9c6303a9d0d0 Mon Sep 17 00:00:00 2001 From: "Khan, Arshad" Date: Tue, 3 Aug 2021 15:18:32 +0530 Subject: [PATCH 3/7] no page error fix --- MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m b/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m index 4f307f5..ebaf52a 100644 --- a/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m +++ b/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m @@ -166,9 +166,10 @@ NSString * const KeyActionTypeOpen = @"openPage"; NSString *pageType = [actionInformation stringForKey:KeyPageType]; if (pageType.length == 0) { + MVMCoreLog(@"handling no page Error gracefully3"); // No page type to load, show error. - MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] code:ErrorCodeNoPageType domain:ErrorDomainNative location:[NSString stringWithFormat:@"%@_%@",NSStringFromClass([delegateObject.actionDelegate class]),KeyActionTypeOpen]]; - [self handleActionError:error actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject]; +// MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] code:ErrorCodeNoPageType domain:ErrorDomainNative location:[NSString stringWithFormat:@"%@_%@",NSStringFromClass([delegateObject.actionDelegate class]),KeyActionTypeOpen]]; +// [self handleActionError:error actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject]; return; } From 2c9e39434793859fa0c853bd788c49daa363c1ec Mon Sep 17 00:00:00 2001 From: "Khan, Arshad" Date: Tue, 3 Aug 2021 16:02:48 +0530 Subject: [PATCH 4/7] adding more logs to understand the point of failure --- MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m index 3f957b3..d254be8 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m @@ -408,6 +408,7 @@ // Handle any module caching error and continue load. if (moduleCachingError) { + MVMCoreLog(@"possible point 1 for no page error"); [MVMCoreLoadRequestOperation handleError:moduleCachingError loadObject:loadObject showAlertForErrorIfApplicable:YES]; } @@ -423,6 +424,7 @@ // Handle any page caching error and continue load. if (pagesCachingError) { + MVMCoreLog(@"possible point 2 for no page error"); [MVMCoreLoadRequestOperation handleError:pagesCachingError loadObject:loadObject showAlertForErrorIfApplicable:YES]; } @@ -434,6 +436,7 @@ [MVMCoreLoadRequestOperation notifyListenersOfNewResponse:pages modules:modules systemParameters:systemParameters loadObject:loadObject]; } continueBlock:^{ if (error) { + MVMCoreLog(@"possible point 3 for no page error"); // Hold onto any error until we establish a delegate [MVMCoreLoadRequestOperation handleError:error loadObject:loadObject showAlertForErrorIfApplicable:NO]; loadObject.operation.alertToShow = YES; @@ -753,7 +756,7 @@ MVMCoreLog(@"Error: %@ %@ %@ %@ %@",[error stringErrorCode], error.domain, error.location,error.messageToDisplay, error.messageToLog); if (showAlertForErrorIfApplicable && (!loadObject.operation.backgroundLoad || loadObject.requestParameters.allowAlertsIfBackgroundRequest) && !loadObject.requestParameters.handleErrorsSilently && !error.silentError && !error.errorScreenError) { - + MVMCoreLog(@"last point for no page error"); // Show alert for error. [MVMCoreLoadRequestOperation createAndShowAlertForLoadObject:loadObject error:error delegateObject:loadObject.operation.delegateObject]; } @@ -773,9 +776,11 @@ // Native driven error screens still need to be loaded. (as long as the delegate desires) if (!loadObject.requestParameters.handleErrorsSilently && !error.silentError && error.errorScreenError && (![loadObject.delegateObject.loadDelegate respondsToSelector:@selector(shouldContinueToErrorPage:error:)] || [loadObject.delegateObject.loadDelegate shouldContinueToErrorPage:loadObject error:error])) { + MVMCoreLog(@"possible point 4 for no page error"); [MVMCoreLoadRequestOperation handleError:error loadObject:loadObject showAlertForErrorIfApplicable:YES]; [MVMCoreLoadRequestOperation handleLoadObject:loadObject error:error]; } else { + MVMCoreLog(@"possible point 5 for no page error"); [MVMCoreLoadRequestOperation handleError:error loadObject:loadObject showAlertForErrorIfApplicable:YES]; [MVMCoreLoadRequestOperation loadFinished:loadObject loadedViewController:nil errorObject:error]; } From 7460f5b210a16d5e994c987c63060c481f526c2f Mon Sep 17 00:00:00 2001 From: "Khan, Arshad" Date: Tue, 3 Aug 2021 18:04:07 +0530 Subject: [PATCH 5/7] Removing unwanted testing logs code --- .../MVMCoreLoadRequestOperation.m | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m index d254be8..8b85d04 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m @@ -167,13 +167,12 @@ // Can continue loading with the page. [MVMCoreLoadRequestOperation handleLoadObject:loadObject error:error]; } else if (loadObject.operation.backgroundLoad || loadObject.requestParameters.noViewControllerToLoad || ([[MVMCoreObject sharedInstance].globalLoadDelegate respondsToSelector:@selector(hasContentToShow:error:)] && [[MVMCoreObject sharedInstance].globalLoadDelegate hasContentToShow:loadObject error:error]) || (loadObject.pageType.length == 0 && [[loadObject.responseInfoMap stringForKey:KeyType] isEqualToString:ValueTypeSuccess])) { - MVMCoreLog(@"handling no page Error gracefully1"); - // handle gracefully even if no pageType/page in response, but success response info provided + // handle no page error gracefully even if no pageType/page in response, but ResponseInfo has success // Something to show, or nothing was expected to show, can finish. [MVMCoreLoadRequestOperation loadFinished:loadObject loadedViewController:nil errorObject:error]; } else { - MVMCoreLog(@"no page Error: "); - // Error, foreground request with no alert, action, or anything else to show. Abort with error. + + // Error, foreground request with no page, alert, action, or anything else to show. Abort with error. MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorCritical] code:ErrorCodeNoPageType domain:ErrorDomainNative location:[[MVMCoreLoadHandler sharedGlobal] errorLocationForRequest:loadObject]]; [MVMCoreLoadRequestOperation loadAbortedWithError:error loadObject:loadObject]; } @@ -408,7 +407,6 @@ // Handle any module caching error and continue load. if (moduleCachingError) { - MVMCoreLog(@"possible point 1 for no page error"); [MVMCoreLoadRequestOperation handleError:moduleCachingError loadObject:loadObject showAlertForErrorIfApplicable:YES]; } @@ -424,7 +422,6 @@ // Handle any page caching error and continue load. if (pagesCachingError) { - MVMCoreLog(@"possible point 2 for no page error"); [MVMCoreLoadRequestOperation handleError:pagesCachingError loadObject:loadObject showAlertForErrorIfApplicable:YES]; } @@ -436,7 +433,6 @@ [MVMCoreLoadRequestOperation notifyListenersOfNewResponse:pages modules:modules systemParameters:systemParameters loadObject:loadObject]; } continueBlock:^{ if (error) { - MVMCoreLog(@"possible point 3 for no page error"); // Hold onto any error until we establish a delegate [MVMCoreLoadRequestOperation handleError:error loadObject:loadObject showAlertForErrorIfApplicable:NO]; loadObject.operation.alertToShow = YES; @@ -503,8 +499,10 @@ // If the server told us there is an error screen but did not provide the page, show a critical error and log so we can have them fix it. if (error.errorScreenError && !error.nativeDrivenErrorScreen && loadObject.pageType.length == 0) { - MVMCoreLog(@"handling no page Error gracefully2"); - // do not throw error if Page is not present in response + error.logError = YES; + error.errorScreenError = NO; + error.location = [NSString stringWithFormat:@"%li-%@",(long)ErrorCodeNoErrorPageSent,error.location]; + [MVMCoreLoadRequestOperation handleError:error loadObject:loadObject showAlertForErrorIfApplicable:YES]; [MVMCoreLoadRequestOperation loadFinished:loadObject loadedViewController:nil errorObject:error]; } else { // No screen to load, finish the load. @@ -671,7 +669,6 @@ if (pageType) { [[MVMCoreCache sharedCache] addPageToCache:obj pageType:pageType queue:nil waitUntilFinished:YES completionBlock:NULL]; } else { - MVMCoreLog(@"Cache no page Error: "); errorObject = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorCritical] code:ErrorCodeNoPageType domain:ErrorDomainNative location:[[MVMCoreLoadHandler sharedGlobal] errorLocationForRequest:loadObject]]; } } else { @@ -756,7 +753,7 @@ MVMCoreLog(@"Error: %@ %@ %@ %@ %@",[error stringErrorCode], error.domain, error.location,error.messageToDisplay, error.messageToLog); if (showAlertForErrorIfApplicable && (!loadObject.operation.backgroundLoad || loadObject.requestParameters.allowAlertsIfBackgroundRequest) && !loadObject.requestParameters.handleErrorsSilently && !error.silentError && !error.errorScreenError) { - MVMCoreLog(@"last point for no page error"); + // Show alert for error. [MVMCoreLoadRequestOperation createAndShowAlertForLoadObject:loadObject error:error delegateObject:loadObject.operation.delegateObject]; } @@ -776,11 +773,9 @@ // Native driven error screens still need to be loaded. (as long as the delegate desires) if (!loadObject.requestParameters.handleErrorsSilently && !error.silentError && error.errorScreenError && (![loadObject.delegateObject.loadDelegate respondsToSelector:@selector(shouldContinueToErrorPage:error:)] || [loadObject.delegateObject.loadDelegate shouldContinueToErrorPage:loadObject error:error])) { - MVMCoreLog(@"possible point 4 for no page error"); [MVMCoreLoadRequestOperation handleError:error loadObject:loadObject showAlertForErrorIfApplicable:YES]; [MVMCoreLoadRequestOperation handleLoadObject:loadObject error:error]; } else { - MVMCoreLog(@"possible point 5 for no page error"); [MVMCoreLoadRequestOperation handleError:error loadObject:loadObject showAlertForErrorIfApplicable:YES]; [MVMCoreLoadRequestOperation loadFinished:loadObject loadedViewController:nil errorObject:error]; } From 590293754c06f3836fa42b49813d2a6a4c4072ff Mon Sep 17 00:00:00 2001 From: "Khan, Arshad" Date: Tue, 3 Aug 2021 18:06:21 +0530 Subject: [PATCH 6/7] removing unwanted code --- MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m b/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m index ebaf52a..4f307f5 100644 --- a/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m +++ b/MVMCore/MVMCore/ActionHandling/MVMCoreActionHandler.m @@ -166,10 +166,9 @@ NSString * const KeyActionTypeOpen = @"openPage"; NSString *pageType = [actionInformation stringForKey:KeyPageType]; if (pageType.length == 0) { - MVMCoreLog(@"handling no page Error gracefully3"); // No page type to load, show error. -// MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] code:ErrorCodeNoPageType domain:ErrorDomainNative location:[NSString stringWithFormat:@"%@_%@",NSStringFromClass([delegateObject.actionDelegate class]),KeyActionTypeOpen]]; -// [self handleActionError:error actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject]; + MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorUnableToProcess] code:ErrorCodeNoPageType domain:ErrorDomainNative location:[NSString stringWithFormat:@"%@_%@",NSStringFromClass([delegateObject.actionDelegate class]),KeyActionTypeOpen]]; + [self handleActionError:error actionInformation:actionInformation additionalData:additionalData delegateObject:delegateObject]; return; } From 74e08ca87a1822fb0521771090227a218bb080ba Mon Sep 17 00:00:00 2001 From: "Khan, Arshad" Date: Tue, 3 Aug 2021 19:38:32 +0530 Subject: [PATCH 7/7] Removing loadAborted to handle No Page errors gracefully. --- .../MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m index 8b85d04..de1488b 100644 --- a/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m +++ b/MVMCore/MVMCore/LoadHandling/MVMCoreLoadRequestOperation.m @@ -166,15 +166,9 @@ // Can continue loading with the page. [MVMCoreLoadRequestOperation handleLoadObject:loadObject error:error]; - } else if (loadObject.operation.backgroundLoad || loadObject.requestParameters.noViewControllerToLoad || ([[MVMCoreObject sharedInstance].globalLoadDelegate respondsToSelector:@selector(hasContentToShow:error:)] && [[MVMCoreObject sharedInstance].globalLoadDelegate hasContentToShow:loadObject error:error]) || (loadObject.pageType.length == 0 && [[loadObject.responseInfoMap stringForKey:KeyType] isEqualToString:ValueTypeSuccess])) { - // handle no page error gracefully even if no pageType/page in response, but ResponseInfo has success + } else { // Something to show, or nothing was expected to show, can finish. [MVMCoreLoadRequestOperation loadFinished:loadObject loadedViewController:nil errorObject:error]; - } else { - - // Error, foreground request with no page, alert, action, or anything else to show. Abort with error. - MVMCoreErrorObject *error = [[MVMCoreErrorObject alloc] initWithTitle:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorTitle] message:[MVMCoreGetterUtility hardcodedStringWithKey:HardcodedErrorCritical] code:ErrorCodeNoPageType domain:ErrorDomainNative location:[[MVMCoreLoadHandler sharedGlobal] errorLocationForRequest:loadObject]]; - [MVMCoreLoadRequestOperation loadAbortedWithError:error loadObject:loadObject]; } }]; }];