// PreferencesView.swift // Tusker // // Created by Shadowfacts on 6/13/19. // Copyright © 2019 Shadowfacts. All rights reserved. // import SwiftUI struct PreferencesView : View { var currentAccount: LocalData.UserAccountInfo @State private var showingLogoutConfirmation = false var body: some View { // workaround: the navigation view is provided by MyProfileTableViewController so that it can inject the Done button // NavigationView { List { Section { Button(action: { self.showingLogoutConfirmation = true }) { Text("Logout") }.alert(isPresented: $showingLogoutConfirmation) { Alert(title: Text("Are you sure you want to logout?"), message: nil, primaryButton: .destructive(Text("Logout"), action: self.logoutPressed), secondaryButton: .cancel()) } } Section { NavigationLink(destination: AppearancePrefsView()) { Text("Appearance") } NavigationLink(destination: BehaviorPrefsView()) { Text("Behavior") } NavigationLink(destination: WellnessPrefsView()) { Text("Digital Wellness") } NavigationLink(destination: AdvancedPrefsView()) { Text("Advanced") } } } .listStyle(GroupedListStyle()) .navigationBarTitle(Text("Preferences"), displayMode: .inline) .onDisappear { // todo: this onDisappear callback is not called in beta 4, check again in beta 5 NotificationCenter.default.post(name: .preferencesChanged, object: nil) } // } } func logoutPressed() { LocalData.shared.removeAccount(currentAccount) NotificationCenter.default.post(name: .userLoggedOut, object: nil) } } #if DEBUG struct PreferencesView_Previews : PreviewProvider { static var previews: some View { let account = LocalData.UserAccountInfo(instanceURL: URL(string: "https://mastodon.social")!, clientID: "clientID", clientSecret: "clientSecret", username: "example", accessToken: "accessToken") return PreferencesView(currentAccount: account) } } #endif