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
|
@MainActor
|
||||||
func goToViewController(loadObject: MVMCoreLoadObject) async -> UIViewController? {
|
func goToViewController(loadObject: MVMCoreLoadObject) async -> UIViewController? {
|
||||||
guard loadObject.requestParameters?.replaceViewIfOnStackElseLoadWithStyle == true,
|
guard loadObject.requestParameters?.replaceViewIfOnStackElseLoadWithStyle == true,
|
||||||
|
loadObject.requestParameters?.replaceViewControllerIfOnStackGoToOnly == true,
|
||||||
let pageType = loadObject.pageType else {
|
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
|
return nil
|
||||||
}
|
}
|
||||||
let template = loadObject.pageJSON?.optionalStringForKey("template")
|
let template = loadObject.pageJSON?.optionalStringForKey("template")
|
||||||
|
|||||||
@ -79,8 +79,13 @@ typedef NS_ENUM(NSInteger, MFLoadStyle) {
|
|||||||
|
|
||||||
// Determines how it is loaded.
|
// Determines how it is loaded.
|
||||||
@property (nonatomic) MFLoadStyle loadStyle;
|
@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;
|
@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.
|
// 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;
|
@property (nonatomic) BOOL tabWasPressed;
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
// Default load style.
|
// Default load style.
|
||||||
self.loadStyle = MFLoadStyleDefault;
|
self.loadStyle = MFLoadStyleDefault;
|
||||||
self.replaceViewIfOnStackElseLoadWithStyle = YES;
|
self.replaceViewIfOnStackElseLoadWithStyle = YES;
|
||||||
|
self.replaceViewControllerIfOnStackGoToOnly = YES;
|
||||||
self.identifier = [[NSUUID UUID] UUIDString];
|
self.identifier = [[NSUUID UUID] UUIDString];
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
@ -189,6 +190,7 @@
|
|||||||
copyObject.contextRoot = [self.contextRoot copy];
|
copyObject.contextRoot = [self.contextRoot copy];
|
||||||
copyObject.loadStyle = self.loadStyle;
|
copyObject.loadStyle = self.loadStyle;
|
||||||
copyObject.replaceViewIfOnStackElseLoadWithStyle = self.replaceViewIfOnStackElseLoadWithStyle;
|
copyObject.replaceViewIfOnStackElseLoadWithStyle = self.replaceViewIfOnStackElseLoadWithStyle;
|
||||||
|
copyObject.replaceViewControllerIfOnStackGoToOnly = self.replaceViewControllerIfOnStackGoToOnly;
|
||||||
copyObject.noViewControllerToLoad = self.noViewControllerToLoad;
|
copyObject.noViewControllerToLoad = self.noViewControllerToLoad;
|
||||||
copyObject.dontDisplayViewController = self.dontDisplayViewController;
|
copyObject.dontDisplayViewController = self.dontDisplayViewController;
|
||||||
copyObject.noloadingOverlay = self.noloadingOverlay;
|
copyObject.noloadingOverlay = self.noloadingOverlay;
|
||||||
|
|||||||
@ -89,21 +89,21 @@ public extension NavigationHandler {
|
|||||||
switch requestParameters.loadStyle {
|
switch requestParameters.loadStyle {
|
||||||
case .replaceCurrent:
|
case .replaceCurrent:
|
||||||
guard let navigationController = requestParameters.navigationController ?? NavigationHandler.shared().navigationController else { return nil }
|
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:
|
case .onTopOfRoot:
|
||||||
guard let navigationController = requestParameters.navigationController ?? NavigationHandler.shared().navigationController,
|
guard let navigationController = requestParameters.navigationController ?? NavigationHandler.shared().navigationController,
|
||||||
let root = navigationController.viewControllers.first else { return nil }
|
let root = navigationController.viewControllers.first else { return nil }
|
||||||
let viewControllers = [root, viewController]
|
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:
|
case .becomeRoot:
|
||||||
guard let navigationController = requestParameters.navigationController ?? NavigationHandler.shared().navigationController else { return nil }
|
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:
|
case .present:
|
||||||
guard let viewControllerToPresentOn = getViewControllerToPresentOn() else { return nil }
|
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:
|
default:
|
||||||
guard let navigationController = requestParameters.navigationController ?? NavigationHandler.shared().navigationController else { return nil }
|
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