Add Account Settings button to preferences
This commit is contained in:
parent
281585cdf0
commit
efd90bca3e
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue