feat: Add left handed option for post button

Added a left handed toggle in the app configuration section to turn on
left handed mode which moves the post button to the left side. Nearly
done. May just need to fix an initialization bug.

Closes: #282
Changelog-Added: Left hand option for post button
This commit is contained in:
Jonathan Milligan
2023-01-07 13:21:15 -07:00
committed by William Casarin
parent aee29f145a
commit 4d8088d0d0
4 changed files with 30 additions and 10 deletions

View File

@@ -121,7 +121,7 @@ struct ContentView: View {
TimelineView(events: $home.events, loading: $home.loading, damus: damus, show_friend_icon: false, filter: filter)
}
if privkey != nil {
PostButtonContainer {
PostButtonContainer(userSettings: user_settings) {
self.active_sheet = .post
}
}

View File

@@ -20,13 +20,22 @@ class UserSettingsStore: ObservableObject {
}
}
@Published var left_handed: Bool {
didSet {
UserDefaults.standard.set(left_handed, forKey: "left_handed")
}
}
init() {
if let defaultWalletName = UserDefaults.standard.string(forKey: "default_wallet"),
let default_wallet = Wallet(rawValue: defaultWalletName) {
let default_wallet = Wallet(rawValue: defaultWalletName)
{
self.default_wallet = default_wallet
} else {
self.default_wallet = .system_default_wallet
default_wallet = .system_default_wallet
}
self.show_wallet_selector = UserDefaults.standard.object(forKey: "show_wallet_selector") as? Bool ?? true
show_wallet_selector = UserDefaults.standard.object(forKey: "show_wallet_selector") as? Bool ?? true
left_handed = UserDefaults.standard.object(forKey: "left_handed") as? Bool ?? false
}
}

View File

@@ -115,7 +115,12 @@ struct ConfigView: View {
}
}
}
Section(NSLocalizedString("Left Handed", comment: "Moves the post button to the left side of the screen")) {
Toggle(NSLocalizedString("Left Handed", comment: "Moves the post button to the left side of the screen"), isOn: $user_settings.left_handed)
.toggleStyle(.switch)
}
Section(NSLocalizedString("Clear Cache", comment: "Section title for clearing cached data.")) {
Button(NSLocalizedString("Clear", comment: "Button for clearing cached data.")) {
KingfisherManager.shared.cache.clearMemoryCache()
@@ -123,7 +128,7 @@ struct ConfigView: View {
KingfisherManager.shared.cache.cleanExpiredDiskCache()
}
}
Section(NSLocalizedString("Reset", comment: "Section title for resetting the user")) {
Button(NSLocalizedString("Logout", comment: "Button to logout the user.")) {
confirm_logout = true

View File

@@ -34,14 +34,20 @@ func PostButton(action: @escaping () -> ()) -> some View {
.keyboardShortcut("n", modifiers: [.command, .shift])
}
func PostButtonContainer(action: @escaping () -> ()) -> some View {
func PostButtonContainer(userSettings: UserSettingsStore, action: @escaping () -> Void) -> some View {
let is_left_handed = userSettings.left_handed.self
return VStack {
Spacer()
HStack {
Spacer()
PostButton(action: action)
if is_left_handed != true {
Spacer()
PostButton(action: action)
} else {
PostButton(action: action)
Spacer()
}
}
}
}