Digital PCT265 story MVAPCT-48 - Code cleanup
This commit is contained in:
parent
8235aff75f
commit
25b79530eb
@ -39,49 +39,37 @@ public enum PopBackError: MVMError, CustomStringConvertible {
|
||||
@objc
|
||||
public extension MVMCoreLoadRequestOperation {
|
||||
|
||||
/// Attempt to navigate to the controller with the given load object. Return the controller that we navigated to if successful.
|
||||
@objc
|
||||
@MainActor
|
||||
func goToViewController(loadObject: MVMCoreLoadObject) async -> UIViewController? {
|
||||
guard loadObject.requestParameters?.replaceViewIfOnStackElseLoadWithStyle == true,
|
||||
let pageType = loadObject.pageType else {
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Controller shouldn't be replaced.")
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "\(type(of: self)): A new controller should be made and any existing shouldn't be replaced. pageType:\(String(describing: loadObject.pageType))")
|
||||
return nil
|
||||
}
|
||||
guard let newVC = MVMCoreViewControllerMappingObject.shared()?.createMFViewController(ofTemplate: loadObject.pageJSON?.optionalStringForKey("template"), pageType: pageType) else {
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Failed to create a new controller")
|
||||
let template = loadObject.pageJSON?.optionalStringForKey("template")
|
||||
guard let controllerMappingObject = MVMCoreViewControllerMappingObject.shared()?.getViewControllerMapping(forTemplate: template, pageType: pageType) else {
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "\(type(of: self)): Failed to create a new controller. template:\(String(describing: template)) page:\(pageType)")
|
||||
return nil
|
||||
}
|
||||
let type = type(of: newVC)
|
||||
guard let viewController = await NavigationHandler.shared().navigateToViewController(of: pageType, controllerType: type) else {
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: No matching controller found for \(pageType) \(type).")
|
||||
var controllerType: AnyClass?
|
||||
if let programmaticMapping = controllerMappingObject as? MVMCoreViewControllerProgrammaticMappingObject {
|
||||
controllerType = programmaticMapping.viewControllerClass
|
||||
} else if let newVC = MVMCoreViewControllerMappingObject.shared()?.createMFViewController(ofTemplate: loadObject.pageJSON?.optionalStringForKey("template"), pageType: pageType) {
|
||||
// Need to create the view controller to fetch the type.
|
||||
controllerType = type(of: newVC)
|
||||
} else {
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "\(type(of: self)): Failed to create a new controller. template:\(String(describing: template)) page:\(pageType)")
|
||||
return nil
|
||||
}
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Navigated to controller of \(pageType) \(type).")
|
||||
|
||||
guard let viewController = await NavigationHandler.shared().navigateToViewController(of: pageType, controllerType: controllerType) else {
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "\(type(of: self)): No matching controller found in the hierarchy. Will need to create a new controller. pageType:\(pageType) controllerType:\(String(describing: controllerType)).")
|
||||
return nil
|
||||
}
|
||||
MVMCoreLoggingHandler.logDebugMessage(withDelegate: "\(type(of: self)): Navigated to controller. pageType:\(pageType) controllerType:\(String(describing: controllerType))")
|
||||
return viewController
|
||||
// MVMCoreLoadRequestOperation.loadFinished(loadObject, loadedViewController: nil, errorObject: nil)
|
||||
//
|
||||
//
|
||||
// guard let index = NavigationHandler.shared().navigationController?.viewControllers.firstIndex(where: { controller in
|
||||
// MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Compare controller pageType:\(pageType) controllerPageType:\((controller as? MVMCoreViewControllerProtocol)?.pageType) type:\(type(of: controller)) newType:\(type(of: newVC))")
|
||||
// return (controller as? MVMCoreViewControllerProtocol)?.pageType == pageType && type(of: controller) == type(of: newVC)
|
||||
// }) else {
|
||||
// MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: No matching controller found.")
|
||||
// return true
|
||||
// }
|
||||
// if index == NavigationHandler.shared().navigationController!.viewControllers.count - 1 {
|
||||
// MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Controller is already showing.")
|
||||
// Task {
|
||||
// MVMCoreLoadRequestOperation.loadFinished(loadObject, loadedViewController: nil, errorObject: nil)
|
||||
// }
|
||||
// } else {
|
||||
// MVMCoreLoggingHandler.logDebugMessage(withDelegate: "CACHEDFEED: Pop back to controller.")
|
||||
// guard let operation = try? NavigationHandler.shared().getOperationPopToViewController(with: pageType, navigationController: loadObject.requestParameters?.navigationController, delegateObject: loadObject.delegateObject, animated: !(loadObject.requestParameters?.shouldNotAnimatePush ?? false)) else { return true }
|
||||
// Task {
|
||||
// await navigate(with: operation, loadObject: loadObject)
|
||||
// MVMCoreLoadRequestOperation.loadFinished(loadObject, loadedViewController: nil, errorObject: nil)
|
||||
// }
|
||||
// }
|
||||
// return false
|
||||
}
|
||||
|
||||
@objc
|
||||
@ -117,11 +105,9 @@ public extension MVMCoreLoadRequestOperation {
|
||||
func navigate(with navigationOperation: NavigationOperation, loadObject: MVMCoreLoadObject?) async {
|
||||
// stop any loading animation we may have started if we are about to display
|
||||
cancellable = NavigationHandler.shared().onNavigation
|
||||
.filter { $0.0 == .willNavigate }
|
||||
.filter { $0.0 == .willNavigate && navigationOperation == $0.1 }
|
||||
.sink { [weak self] (event, operation) in
|
||||
if navigationOperation == operation {
|
||||
self?.stopLoadingAnimationIfNeeded()
|
||||
}
|
||||
self?.stopLoadingAnimationIfNeeded()
|
||||
}
|
||||
await NavigationHandler.shared().navigate(with: navigationOperation)
|
||||
cancellable = nil
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
- (nullable NSArray*)getAccessibilityElements; //AccessibilityElements that are owned by Manager.
|
||||
|
||||
/// Attempt to navigate to the controller. Return true if navigation occured.
|
||||
/// Attempt to navigate to the controller. Return the controller that we navigated to if successful.
|
||||
- (void)navigateToViewControllerOfPageType:(nonnull NSString *)pageType controllerType:(_Nullable Class)controllerType completionHandler:(void (^ __nullable)(UIViewController * _Nullable viewController))completionHandler;
|
||||
|
||||
@optional
|
||||
|
||||
@ -47,6 +47,9 @@
|
||||
// For pages external to the mobile first framework to be added to the view controller mapping.
|
||||
- (void)addToTemplateViewControllerMapping:(nullable NSDictionary <NSString *,NSObject <MVMCoreViewControllerMappingProtocol>*>*)map;
|
||||
|
||||
// Transition function: A mix of new and legacy.
|
||||
- (nullable NSObject <MVMCoreViewControllerMappingProtocol>*)getViewControllerMappingForTemplate:(nullable NSString *)templateID pageType:(nullable NSString *)pageType;
|
||||
|
||||
// Transition function: A mix of new and legacy.
|
||||
- (nullable UIViewController <MVMCoreViewControllerProtocol> *)createMFViewControllerOfTemplate:(nullable NSString *)templateID pageType:(nullable NSString *)pageType;
|
||||
|
||||
|
||||
@ -46,6 +46,16 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (nullable NSObject <MVMCoreViewControllerMappingProtocol>*)getViewControllerMappingForTemplate:(nullable NSString *)templateID pageType:(nullable NSString *)pageType {
|
||||
if (templateID) {
|
||||
return [self getViewControllerMappingForTemplate:templateID];
|
||||
} else if (pageType) {
|
||||
return [self getViewControllerMappingForPageType:pageType];
|
||||
} else {
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
// Transition function: A mix of new and legacy.
|
||||
- (nullable UIViewController <MVMCoreViewControllerProtocol> *)createMFViewControllerOfTemplate:(nullable NSString *)templateID pageType:(nullable NSString *)pageType {
|
||||
if (templateID) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user