Merge branch 'bugfix/CXTDT-573619' into 'release/20_0_0'
Digital PCT265 defect CXTDT-573619 - Add a flag to create a new controller instead of go to ### Summary Add a flag to create a new controller instead of go to ### JIRA Ticket https://onejira.verizon.com/browse/CXTDT-573619 Co-authored-by: Scott Pfeil <Scott.Pfeil3@verizonwireless.com> See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core/-/merge_requests/336
This commit is contained in:
commit
317815d44a
@ -44,8 +44,9 @@ public extension MVMCoreLoadRequestOperation {
|
||||
@MainActor
|
||||
func goToViewController(loadObject: MVMCoreLoadObject) async -> UIViewController? {
|
||||
guard loadObject.requestParameters?.replaceViewIfOnStackElseLoadWithStyle == true,
|
||||
loadObject.requestParameters?.replaceViewControllerIfOnStackGoToOnly == true,
|
||||
let pageType = loadObject.pageType else {
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "\(type(of: self)): A new controller should be made and any existing shouldn't be replaced. pageType:\(String(describing: loadObject.pageType))")
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "\(type(of: self)): A new controller should be made. pageType:\(String(describing: loadObject.pageType))")
|
||||
return nil
|
||||
}
|
||||
let template = loadObject.pageJSON?.optionalStringForKey("template")
|
||||
|
||||
@ -79,8 +79,13 @@ typedef NS_ENUM(NSInteger, MFLoadStyle) {
|
||||
|
||||
// Determines how it is loaded.
|
||||
@property (nonatomic) MFLoadStyle loadStyle;
|
||||
|
||||
/// Determines if we should search the stack for a controller with the same pageType or just load a new controller with style. Default true
|
||||
@property (nonatomic) BOOL replaceViewIfOnStackElseLoadWithStyle;
|
||||
|
||||
/// Determines if, when replaceViewIfOnStackElseLoadWithStyle is true, we should create a new controller or only pop back to the existing controller. Default true
|
||||
@property (nonatomic) BOOL replaceViewControllerIfOnStackGoToOnly;
|
||||
|
||||
// A flag for if a tab was pressed to cause this load. This will ensure that we do not load a new tab page.
|
||||
@property (nonatomic) BOOL tabWasPressed;
|
||||
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
// Default load style.
|
||||
self.loadStyle = MFLoadStyleDefault;
|
||||
self.replaceViewIfOnStackElseLoadWithStyle = YES;
|
||||
self.replaceViewControllerIfOnStackGoToOnly = YES;
|
||||
self.identifier = [[NSUUID UUID] UUIDString];
|
||||
}
|
||||
return self;
|
||||
@ -189,6 +190,7 @@
|
||||
copyObject.contextRoot = [self.contextRoot copy];
|
||||
copyObject.loadStyle = self.loadStyle;
|
||||
copyObject.replaceViewIfOnStackElseLoadWithStyle = self.replaceViewIfOnStackElseLoadWithStyle;
|
||||
copyObject.replaceViewControllerIfOnStackGoToOnly = self.replaceViewControllerIfOnStackGoToOnly;
|
||||
copyObject.noViewControllerToLoad = self.noViewControllerToLoad;
|
||||
copyObject.dontDisplayViewController = self.dontDisplayViewController;
|
||||
copyObject.noloadingOverlay = self.noloadingOverlay;
|
||||
|
||||
@ -89,21 +89,21 @@ public extension NavigationHandler {
|
||||
switch requestParameters.loadStyle {
|
||||
case .replaceCurrent:
|
||||
guard let navigationController = requestParameters.navigationController ?? NavigationHandler.shared().navigationController else { return nil }
|
||||
return NavigationOperation(with: .replace(viewController: viewController, navigationController: navigationController, animated: shouldAnimate), tryToReplace: true, delegate: delegateObject?.presentationDelegate)
|
||||
return NavigationOperation(with: .replace(viewController: viewController, navigationController: navigationController, animated: shouldAnimate), tryToReplace: requestParameters.replaceViewIfOnStackElseLoadWithStyle, delegate: delegateObject?.presentationDelegate)
|
||||
case .onTopOfRoot:
|
||||
guard let navigationController = requestParameters.navigationController ?? NavigationHandler.shared().navigationController,
|
||||
let root = navigationController.viewControllers.first else { return nil }
|
||||
let viewControllers = [root, viewController]
|
||||
return NavigationOperation(with: .set(viewControllers: viewControllers, navigationController: navigationController, animated: shouldAnimate), tryToReplace: true, delegate: delegateObject?.presentationDelegate)
|
||||
return NavigationOperation(with: .set(viewControllers: viewControllers, navigationController: navigationController, animated: shouldAnimate), tryToReplace: requestParameters.replaceViewIfOnStackElseLoadWithStyle, delegate: delegateObject?.presentationDelegate)
|
||||
case .becomeRoot:
|
||||
guard let navigationController = requestParameters.navigationController ?? NavigationHandler.shared().navigationController else { return nil }
|
||||
return NavigationOperation(with: .set(viewControllers: [viewController], navigationController: navigationController, animated: shouldAnimate), tryToReplace: true, delegate: delegateObject?.presentationDelegate)
|
||||
return NavigationOperation(with: .set(viewControllers: [viewController], navigationController: navigationController, animated: shouldAnimate), tryToReplace: requestParameters.replaceViewIfOnStackElseLoadWithStyle, delegate: delegateObject?.presentationDelegate)
|
||||
case .present:
|
||||
guard let viewControllerToPresentOn = getViewControllerToPresentOn() else { return nil }
|
||||
return NavigationOperation(with: .present(viewController: viewController, onController: viewControllerToPresentOn, animated: shouldAnimate), tryToReplace: true, delegate: delegateObject?.presentationDelegate)
|
||||
return NavigationOperation(with: .present(viewController: viewController, onController: viewControllerToPresentOn, animated: shouldAnimate), tryToReplace: requestParameters.replaceViewIfOnStackElseLoadWithStyle, delegate: delegateObject?.presentationDelegate)
|
||||
default:
|
||||
guard let navigationController = requestParameters.navigationController ?? NavigationHandler.shared().navigationController else { return nil }
|
||||
return NavigationOperation(with: .push(viewController: viewController, navigationController: navigationController, animated: shouldAnimate), tryToReplace: true, delegate: delegateObject?.presentationDelegate)
|
||||
return NavigationOperation(with: .push(viewController: viewController, navigationController: navigationController, animated: shouldAnimate), tryToReplace: requestParameters.replaceViewIfOnStackElseLoadWithStyle, delegate: delegateObject?.presentationDelegate)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user