From efd90bca3ebe2eb7fb91cf558910ec11c0e05365 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sun, 7 Apr 2024 22:28:30 -0400 Subject: [PATCH] Add Account Settings button to preferences --- .../PreferencesNavigationController.swift | 13 +++++++++++++ Tusker/Screens/Preferences/PreferencesView.swift | 11 +++++++++++ 2 files changed, 24 insertions(+) diff --git a/Tusker/Screens/Preferences/PreferencesNavigationController.swift b/Tusker/Screens/Preferences/PreferencesNavigationController.swift index a36aee6d..165a2841 100644 --- a/Tusker/Screens/Preferences/PreferencesNavigationController.swift +++ b/Tusker/Screens/Preferences/PreferencesNavigationController.swift @@ -9,12 +9,17 @@ import UIKit import SwiftUI import UserAccounts +import SafariServices class PreferencesNavigationController: UINavigationController { + private let mastodonController: MastodonController + private var isSwitchingAccounts = false init(mastodonController: MastodonController) { + self.mastodonController = mastodonController + let view = PreferencesView(mastodonController: mastodonController) let hostingController = UIHostingController(rootView: view) super.init(rootViewController: hostingController) @@ -31,6 +36,7 @@ class PreferencesNavigationController: UINavigationController { NotificationCenter.default.addObserver(self, selector: #selector(showAddAccount), name: .addAccount, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(activateAccount(_:)), name: .activateAccount, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(userLoggedOut), name: .userLoggedOut, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(showMastodonSettings), name: .showMastodonSettings, object: nil) } override func viewWillDisappear(_ animated: Bool) { @@ -92,6 +98,13 @@ class PreferencesNavigationController: UINavigationController { UIApplication.shared.requestSceneSessionDestruction(windowScene.session, options: nil) } } + + @objc private func showMastodonSettings() { + var components = URLComponents(url: mastodonController.accountInfo!.instanceURL, resolvingAgainstBaseURL: false)! + components.path = "/auth/edit" + let vc = SFSafariViewController(url: components.url!) + present(vc, animated: true) + } } diff --git a/Tusker/Screens/Preferences/PreferencesView.swift b/Tusker/Screens/Preferences/PreferencesView.swift index 6739d89e..7169a826 100644 --- a/Tusker/Screens/Preferences/PreferencesView.swift +++ b/Tusker/Screens/Preferences/PreferencesView.swift @@ -82,6 +82,7 @@ struct PreferencesView: View { }) { Text("Add Account...") } + Button(action: { self.showingLogoutConfirmation = true }) { @@ -89,6 +90,12 @@ struct PreferencesView: View { }.alert(isPresented: $showingLogoutConfirmation) { Alert(title: Text("Are you sure you want to logout?"), message: nil, primaryButton: .destructive(Text("Logout"), action: self.logoutPressed), secondaryButton: .cancel()) } + + Button { + NotificationCenter.default.post(name: .showMastodonSettings, object: nil) + } label: { + Text("Account Settings") + } } header: { Text("Accounts") } @@ -139,6 +146,10 @@ struct PreferencesView: View { } } +extension Notification.Name { + static let showMastodonSettings = Notification.Name("Tusker.showMastodonSettings") +} + //#if DEBUG //struct PreferencesView_Previews : PreviewProvider { // static var previews: some View {