Tusker/Tusker/Screens/Preferences/BehaviorPrefsView.swift

95 lines
3.0 KiB
Swift

// BehaviorPrefsView.swift
// Tusker
//
// Created by Shadowfacts on 6/13/19.
// Copyright © 2019 Shadowfacts. All rights reserved.
//
import SwiftUI
import Pachyderm
struct BehaviorPrefsView: View {
@ObservedObject var preferences = Preferences.shared
var body: some View {
List {
untitledSection
timelineSection
linksSection
contentWarningsSection
}
.listStyle(.insetGrouped)
.appGroupedListBackground(container: PreferencesNavigationController.self)
.navigationBarTitle(Text("Behavior"))
}
private var untitledSection: some View {
Section {
Toggle(isOn: $preferences.confirmBeforeReblog) {
Text("Require Confirmation Before Reblogging")
}
}
.appGroupedListRowBackground()
}
private var timelineSection: some View {
Section {
Toggle(isOn: $preferences.timelineStateRestoration) {
Text("Maintain Position Across App Launches")
}
Picker(selection: $preferences.timelineSyncMode) {
Text("iCloud").tag(Preferences.TimelineSyncMode.icloud)
Text("Mastodon").tag(Preferences.TimelineSyncMode.mastodon)
} label: {
Text("Sync Timeline Position via")
}
} header: {
Text("Timeline")
} footer: {
Text("Syncing via the Mastodon API can be more reliable than iCloud, but is not compatible with the Mastodon web interface. Only the Home timeline can be synced via the Mastodon API.")
}
.appGroupedListRowBackground()
}
private var linksSection: some View {
Section(header: Text("Links")) {
Toggle(isOn: $preferences.openLinksInApps) {
Text("Open Links in Apps")
}
Toggle(isOn: $preferences.useInAppSafari) {
Text("Use In-App Safari")
}
Toggle(isOn: $preferences.inAppSafariAutomaticReaderMode) {
Text("Always Use Reader Mode in In-App Safari")
}.disabled(!preferences.useInAppSafari)
}
.appGroupedListRowBackground()
}
private var contentWarningsSection: some View {
Section(header: Text("Content Warnings")) {
Toggle(isOn: $preferences.collapseLongPosts) {
Text("Collapse Long Posts")
}
Toggle(isOn: $preferences.expandAllContentWarnings) {
Text("Expand All Content Warnings")
}
NavigationLink(destination: OppositeCollapseKeywordsView()) {
Text(preferences.expandAllContentWarnings ? "Collapse Posts with Keywords in CWs" : "Expand Posts with Keywords in CWs")
}
}
.appGroupedListRowBackground()
}
}
#if DEBUG
struct BehaviorPrefsView_Previews : PreviewProvider {
static var previews: some View {
BehaviorPrefsView()
}
}
#endif