You can now change the default zap type
Changelog-Added: You can now change the default zap type
This commit is contained in:
@@ -86,7 +86,7 @@ struct ZapButton: View {
|
||||
return
|
||||
}
|
||||
|
||||
send_zap(damus_state: damus_state, event: event, lnurl: lnurl, is_custom: false, comment: nil, amount_sats: nil, zap_type: ZapType.pub)
|
||||
send_zap(damus_state: damus_state, event: event, lnurl: lnurl, is_custom: false, comment: nil, amount_sats: nil, zap_type: damus_state.settings.default_zap_type)
|
||||
self.zapping = true
|
||||
})
|
||||
.accessibilityLabel(NSLocalizedString("Zap", comment: "Accessibility label for zap button"))
|
||||
|
||||
@@ -99,6 +99,9 @@ class UserSettingsStore: ObservableObject {
|
||||
|
||||
@Setting(key: "mention_notification", default_value: true)
|
||||
var mention_notification: Bool
|
||||
|
||||
@StringSetting(key: "zap_type", default_value: ZapType.pub)
|
||||
var default_zap_type: ZapType
|
||||
|
||||
@Setting(key: "repost_notification", default_value: true)
|
||||
var repost_notification: Bool
|
||||
|
||||
@@ -73,7 +73,7 @@ struct CustomizeZapView: View {
|
||||
self._error = State(initialValue: nil)
|
||||
self._invoice = State(initialValue: "")
|
||||
self._showing_wallet_selector = State(initialValue: false)
|
||||
self._zap_type = State(initialValue: .pub)
|
||||
self._zap_type = State(initialValue: state.settings.default_zap_type)
|
||||
self._custom_amount = State(initialValue: String(state.settings.default_zap_amount))
|
||||
self._custom_amount_sats = State(initialValue: nil)
|
||||
self._zapping = State(initialValue: false)
|
||||
@@ -294,15 +294,19 @@ struct CustomizeZapView: View {
|
||||
}
|
||||
.sheet(isPresented: $show_zap_types) {
|
||||
if #available(iOS 16.0, *) {
|
||||
ZapTypePicker(zap_type: $zap_type, profiles: state.profiles, pubkey: event.pubkey)
|
||||
ZapPicker
|
||||
.presentationDetents([.medium])
|
||||
.presentationDragIndicator(.visible)
|
||||
} else {
|
||||
ZapTypePicker(zap_type: $zap_type, profiles: state.profiles, pubkey: event.pubkey)
|
||||
ZapPicker
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var ZapPicker: some View {
|
||||
ZapTypePicker(zap_type: $zap_type, settings: state.settings, profiles: state.profiles, pubkey: event.pubkey)
|
||||
}
|
||||
|
||||
var MainContent: some View {
|
||||
CustomZap
|
||||
}
|
||||
|
||||
@@ -7,15 +7,29 @@
|
||||
|
||||
import SwiftUI
|
||||
|
||||
enum ZapType {
|
||||
enum ZapType: String, StringCodable {
|
||||
case pub
|
||||
case anon
|
||||
case priv
|
||||
case non_zap
|
||||
|
||||
init?(from string: String) {
|
||||
guard let v = ZapType(rawValue: string) else {
|
||||
return nil
|
||||
}
|
||||
|
||||
self = v
|
||||
}
|
||||
|
||||
func to_string() -> String {
|
||||
return self.rawValue
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
struct ZapTypePicker: View {
|
||||
@Binding var zap_type: ZapType
|
||||
@ObservedObject var settings: UserSettingsStore
|
||||
let profiles: Profiles
|
||||
let pubkey: String
|
||||
|
||||
@@ -29,10 +43,24 @@ struct ZapTypePicker: View {
|
||||
colorScheme == .light ? DamusColors.black : DamusColors.white
|
||||
}
|
||||
|
||||
var is_default: Bool {
|
||||
zap_type == settings.default_zap_type
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 20) {
|
||||
Text("Zap type")
|
||||
.font(.system(size: 18, weight: .heavy))
|
||||
HStack {
|
||||
Text("Zap type")
|
||||
.font(.system(size: 25, weight: .heavy))
|
||||
Spacer()
|
||||
if !is_default {
|
||||
Button(action: {
|
||||
settings.default_zap_type = zap_type
|
||||
}) {
|
||||
Label("Make Default", image: "checkmark.circle.fill")
|
||||
}
|
||||
}
|
||||
}
|
||||
ZapTypeSelection(text: "Public", comment: "Picker option to indicate that a zap should be sent publicly and identify the user as who sent it.", img: "person.2.circle.fill", action: {zap_type = ZapType.pub}, type: ZapType.pub)
|
||||
ZapTypeSelection(text: "Private", comment: "Picker option to indicate that a zap should be sent privately and not identify the user to the public.", img: "lock.circle.fill", action: {zap_type = ZapType.priv}, type: ZapType.priv)
|
||||
ZapTypeSelection(text: "Anonymous", comment: "Picker option to indicate that a zap should be sent anonymously and not identify the user as who sent it.", img: "person.crop.circle.fill.badge.questionmark", action: {zap_type = ZapType.anon}, type: ZapType.anon)
|
||||
@@ -70,9 +98,10 @@ struct ZapTypePicker: View {
|
||||
|
||||
struct ZapTypePicker_Previews: PreviewProvider {
|
||||
@State static var zap_type: ZapType = .pub
|
||||
@State static var default_type: ZapType = .pub
|
||||
static var previews: some View {
|
||||
let ds = test_damus_state()
|
||||
ZapTypePicker(zap_type: $zap_type, profiles: ds.profiles, pubkey: "bob")
|
||||
ZapTypePicker(zap_type: $zap_type, settings: ds.settings, profiles: ds.profiles, pubkey: "bob")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user