forked from shadowfacts/Tusker
Fix being able to scroll to top while fast account switcher is active
This commit is contained in:
parent
3394c2126c
commit
dcd1b4ad94
|
@ -238,7 +238,7 @@ class MainSceneDelegate: UIResponder, UIWindowSceneDelegate, TuskerSceneDelegate
|
|||
}
|
||||
}
|
||||
|
||||
func createAppUI() -> TuskerRootViewController {
|
||||
func createAppUI() -> AccountSwitchableViewController {
|
||||
let mastodonController = window!.windowScene!.session.mastodonController!
|
||||
mastodonController.initialize()
|
||||
|
||||
|
|
|
@ -11,14 +11,18 @@ import ScreenCorners
|
|||
import UserAccounts
|
||||
import ComposeUI
|
||||
|
||||
protocol AccountSwitchableViewController: TuskerRootViewController {
|
||||
var isFastAccountSwitcherActive: Bool { get }
|
||||
}
|
||||
|
||||
class AccountSwitchingContainerViewController: UIViewController {
|
||||
|
||||
private var currentAccountID: String
|
||||
private(set) var root: TuskerRootViewController
|
||||
private(set) var root: AccountSwitchableViewController
|
||||
|
||||
private var userActivities: [String: NSUserActivity] = [:]
|
||||
|
||||
init(root: TuskerRootViewController, for account: UserAccountInfo) {
|
||||
init(root: AccountSwitchableViewController, for account: UserAccountInfo) {
|
||||
self.currentAccountID = account.id
|
||||
self.root = root
|
||||
|
||||
|
@ -35,7 +39,7 @@ class AccountSwitchingContainerViewController: UIViewController {
|
|||
embedChild(root)
|
||||
}
|
||||
|
||||
func setRoot(_ newRoot: TuskerRootViewController, for account: UserAccountInfo, animating direction: AnimationDirection) {
|
||||
func setRoot(_ newRoot: AccountSwitchableViewController, for account: UserAccountInfo, animating direction: AnimationDirection) {
|
||||
let oldRoot = self.root
|
||||
if direction == .none {
|
||||
oldRoot.removeViewAndController()
|
||||
|
@ -148,8 +152,11 @@ extension AccountSwitchingContainerViewController: TuskerRootViewController {
|
|||
|
||||
func handleStatusBarTapped(xPosition: CGFloat) -> StatusBarTapActionResult {
|
||||
loadViewIfNeeded()
|
||||
// TODO: check if fast account switcher is being presented?
|
||||
return root.handleStatusBarTapped(xPosition: xPosition)
|
||||
if root.isFastAccountSwitcherActive {
|
||||
return .stop
|
||||
} else {
|
||||
return root.handleStatusBarTapped(xPosition: xPosition)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import Duckable
|
|||
import ComposeUI
|
||||
|
||||
@available(iOS 16.0, *)
|
||||
extension DuckableContainerViewController: TuskerRootViewController {
|
||||
extension DuckableContainerViewController: AccountSwitchableViewController {
|
||||
func stateRestorationActivity() -> NSUserActivity? {
|
||||
var activity = (child as? TuskerRootViewController)?.stateRestorationActivity()
|
||||
if let compose = duckedViewController as? ComposeHostingController,
|
||||
|
@ -52,4 +52,8 @@ extension DuckableContainerViewController: TuskerRootViewController {
|
|||
func handleStatusBarTapped(xPosition: CGFloat) -> StatusBarTapActionResult {
|
||||
(child as? TuskerRootViewController)?.handleStatusBarTapped(xPosition: xPosition) ?? .continue
|
||||
}
|
||||
|
||||
var isFastAccountSwitcherActive: Bool {
|
||||
(child as? AccountSwitchableViewController)?.isFastAccountSwitcherActive ?? false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -610,3 +610,15 @@ extension MainSplitViewController: FastAccountSwitcherViewControllerDelegate {
|
|||
return cellRect.contains(point)
|
||||
}
|
||||
}
|
||||
|
||||
extension MainSplitViewController: AccountSwitchableViewController {
|
||||
var isFastAccountSwitcherActive: Bool {
|
||||
if isCollapsed {
|
||||
return tabBarViewController.isFastAccountSwitcherActive
|
||||
} else if let fastAccountSwitcher {
|
||||
return !fastAccountSwitcher.view.isHidden
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -363,3 +363,13 @@ extension MainTabBarViewController: BackgroundableViewController {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension MainTabBarViewController: AccountSwitchableViewController {
|
||||
var isFastAccountSwitcherActive: Bool {
|
||||
if let fastAccountSwitcher {
|
||||
return !fastAccountSwitcher.view.isHidden
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue