1
0
mirror of git://jb55.com/damus synced 2024-10-06 19:53:22 +00:00

Using enum

This commit is contained in:
Thomas 2022-12-24 13:30:12 +01:00 committed by radixrat
parent 40be9885c5
commit 63dd39c7e4
2 changed files with 29 additions and 22 deletions

View File

@ -8,6 +8,23 @@ import AVFoundation
import Kingfisher import Kingfisher
import SwiftUI 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 { struct ConfigView: View {
let state: DamusState let state: DamusState
@Environment(\.dismiss) var dismiss @Environment(\.dismiss) var dismiss
@ -19,8 +36,8 @@ struct ConfigView: View {
@State var privkey_copied: Bool = false @State var privkey_copied: Bool = false
@State var pubkey_copied: Bool = false @State var pubkey_copied: Bool = false
@State var delete_text: String = "" @State var delete_text: String = ""
@ObservedObject var settings: UserSettingsStore @EnvironmentObject var user_settings: UserSettingsStore
@AppStorage("remote_image_policy") var remote_image_policy: String = "everyone" @AppStorage("remote_image_policy") var remote_image_policy: RemoteImagePolicy = .everyone
let generator = UIImpactFeedbackGenerator(style: .light) let generator = UIImpactFeedbackGenerator(style: .light)
@ -133,22 +150,22 @@ struct ConfigView: View {
Section("Profile Image Loading Policy") { Section("Profile Image Loading Policy") {
Menu { Menu {
Button { Button {
UserDefaults.standard.set("everyone", forKey:"remote_image_policy") self.remote_image_policy = .everyone
} label: { } label: {
Text("Everyone") Text(remoteImagePolicyText(.everyone))
} }
Button { Button {
UserDefaults.standard.set("friends", forKey:"remote_image_policy") self.remote_image_policy = .friendsOnly
} label: { } label: {
Text("Friends Only") Text(remoteImagePolicyText(.friendsOnly))
} }
Button { Button {
UserDefaults.standard.set("restricted", forKey:"remote_image_policy") self.remote_image_policy = .restricted
} label: { } label: {
Text("Restricted") Text(remoteImagePolicyText(.restricted))
} }
} label: { } label: {
Text("\(convertImageLoadPolicyTxt(policy:remote_image_policy))") Text("\(remoteImagePolicyText(remote_image_policy))")
.frame(maxWidth: .infinity, alignment: .leading) .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 { struct ConfigView_Previews: PreviewProvider {
static var previews: some View { static var previews: some View {
NavigationView { NavigationView {

View File

@ -129,8 +129,9 @@ struct ProfilePicView: View {
func get_profile_url(picture: String?, pubkey: String, profiles: Profiles) -> URL { func get_profile_url(picture: String?, pubkey: String, profiles: Profiles) -> URL {
var pic: String var pic: String
let remote_image_policy = UserDefaults.standard.string(forKey: "remote_image_policy") let remote_image_policy: RemoteImagePolicy = RemoteImagePolicy(rawValue: UserDefaults.standard.string(forKey: "remote_image_policy")!) ?? .everyone
if remote_image_policy == "restricted" || (remote_image_policy == "friends" && !contacts.is_friend(pubkey)) {
if remote_image_policy == .restricted || (remote_image_policy == .friendsOnly && !contacts.is_friend(pubkey)) {
pic = robohash(pubkey) pic = robohash(pubkey)
} else { } else {
pic = picture ?? profiles.lookup(id: pubkey)?.picture ?? robohash(pubkey) pic = picture ?? profiles.lookup(id: pubkey)?.picture ?? robohash(pubkey)