From 63dd39c7e4f85d5b29cf6101a444311ecd17bc17 Mon Sep 17 00:00:00 2001 From: Thomas <31560900+0xtlt@users.noreply.github.com> Date: Sat, 24 Dec 2022 13:30:12 +0100 Subject: [PATCH] Using enum --- damus/Views/ConfigView.swift | 46 ++++++++++++++++++-------------- damus/Views/ProfilePicView.swift | 5 ++-- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/damus/Views/ConfigView.swift b/damus/Views/ConfigView.swift index 0f69c8b4..3ddd6f0d 100644 --- a/damus/Views/ConfigView.swift +++ b/damus/Views/ConfigView.swift @@ -8,6 +8,23 @@ import AVFoundation import Kingfisher import SwiftUI +enum RemoteImagePolicy: String, CaseIterable { + case everyone + case friendsOnly + case restricted +} + +func remoteImagePolicyText(_ fs: RemoteImagePolicy) -> String { + switch fs { + case .everyone: + return "Everyone" + case .friendsOnly: + return "Friends Only" + case .restricted: + return "Restricted (no remote image)" + } +} + struct ConfigView: View { let state: DamusState @Environment(\.dismiss) var dismiss @@ -19,8 +36,8 @@ struct ConfigView: View { @State var privkey_copied: Bool = false @State var pubkey_copied: Bool = false @State var delete_text: String = "" - @ObservedObject var settings: UserSettingsStore - @AppStorage("remote_image_policy") var remote_image_policy: String = "everyone" + @EnvironmentObject var user_settings: UserSettingsStore + @AppStorage("remote_image_policy") var remote_image_policy: RemoteImagePolicy = .everyone let generator = UIImpactFeedbackGenerator(style: .light) @@ -133,22 +150,22 @@ struct ConfigView: View { Section("Profile Image Loading Policy") { Menu { Button { - UserDefaults.standard.set("everyone", forKey:"remote_image_policy") + self.remote_image_policy = .everyone } label: { - Text("Everyone") + Text(remoteImagePolicyText(.everyone)) } Button { - UserDefaults.standard.set("friends", forKey:"remote_image_policy") + self.remote_image_policy = .friendsOnly } label: { - Text("Friends Only") + Text(remoteImagePolicyText(.friendsOnly)) } Button { - UserDefaults.standard.set("restricted", forKey:"remote_image_policy") + self.remote_image_policy = .restricted } label: { - Text("Restricted") + Text(remoteImagePolicyText(.restricted)) } } label: { - Text("\(convertImageLoadPolicyTxt(policy:remote_image_policy))") + Text("\(remoteImagePolicyText(remote_image_policy))") .frame(maxWidth: .infinity, alignment: .leading) } } @@ -199,17 +216,6 @@ struct ConfigView: View { } } -func convertImageLoadPolicyTxt(policy: String) -> String { - switch policy { - case "restricted": - return "Restricted" - case "friends": - return "Friends Only" - default: - return "Everyone" - } -} - struct ConfigView_Previews: PreviewProvider { static var previews: some View { NavigationView { diff --git a/damus/Views/ProfilePicView.swift b/damus/Views/ProfilePicView.swift index b4ac298b..1ce2a21d 100644 --- a/damus/Views/ProfilePicView.swift +++ b/damus/Views/ProfilePicView.swift @@ -129,8 +129,9 @@ struct ProfilePicView: View { func get_profile_url(picture: String?, pubkey: String, profiles: Profiles) -> URL { var pic: String - let remote_image_policy = UserDefaults.standard.string(forKey: "remote_image_policy") - if remote_image_policy == "restricted" || (remote_image_policy == "friends" && !contacts.is_friend(pubkey)) { + let remote_image_policy: RemoteImagePolicy = RemoteImagePolicy(rawValue: UserDefaults.standard.string(forKey: "remote_image_policy")!) ?? .everyone + + if remote_image_policy == .restricted || (remote_image_policy == .friendsOnly && !contacts.is_friend(pubkey)) { pic = robohash(pubkey) } else { pic = picture ?? profiles.lookup(id: pubkey)?.picture ?? robohash(pubkey)