Fix controller stack after upgrading a supergroup

This commit is contained in:
Ali
2019-11-09 23:51:37 +04:00
parent ff3f3b4a57
commit bb11b4e266
2 changed files with 19 additions and 8 deletions

View File

@@ -782,11 +782,8 @@ public func channelAdminsController(context: AccountContext, peerId: PeerId, loa
guard let controller = controller, let navigationController = controller.navigationController as? NavigationController else { guard let controller = controller, let navigationController = controller.navigationController as? NavigationController else {
return return
} }
context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(upgradedPeerId), keepStack: .never, animated: false, completion: {
navigationController.pushViewController(channelAdminsController(context: context, peerId: upgradedPeerId, loadCompleted: { rebuildControllerStackAfterSupergroupUpgrade(controller: controller, navigationController: navigationController)
f()
}), animated: false)
}))
} }
controller.visibleBottomContentOffsetChanged = { offset in controller.visibleBottomContentOffsetChanged = { offset in
if case let .known(value) = offset, value < 40.0 { if case let .known(value) = offset, value < 40.0 {
@@ -795,3 +792,19 @@ public func channelAdminsController(context: AccountContext, peerId: PeerId, loa
} }
return controller return controller
} }
func rebuildControllerStackAfterSupergroupUpgrade(controller: ViewController, navigationController: NavigationController) {
var controllers = navigationController.viewControllers
for i in 0 ..< controllers.count {
if controllers[i] === controller {
for j in 0 ..< i {
if controllers[j] is ChatController {
controllers.removeSubrange(j + 1 ... i - 1)
break
}
}
break
}
}
navigationController.setViewControllers(controllers, animated: false)
}

View File

@@ -858,9 +858,7 @@ public func channelPermissionsController(context: AccountContext, peerId origina
return return
} }
sourcePeerId.set(.single((upgradedPeerId, true))) sourcePeerId.set(.single((upgradedPeerId, true)))
context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(upgradedPeerId), keepStack: .never, animated: false, completion: { rebuildControllerStackAfterSupergroupUpgrade(controller: controller, navigationController: navigationController)
navigationController.pushViewController(controller, animated: false)
}))
} }
controller.visibleBottomContentOffsetChanged = { offset in controller.visibleBottomContentOffsetChanged = { offset in