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 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 {

View File

@ -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)