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
|
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
|
self.zapping = true
|
||||||
})
|
})
|
||||||
.accessibilityLabel(NSLocalizedString("Zap", comment: "Accessibility label for zap button"))
|
.accessibilityLabel(NSLocalizedString("Zap", comment: "Accessibility label for zap button"))
|
||||||
|
|||||||
@@ -99,6 +99,9 @@ class UserSettingsStore: ObservableObject {
|
|||||||
|
|
||||||
@Setting(key: "mention_notification", default_value: true)
|
@Setting(key: "mention_notification", default_value: true)
|
||||||
var mention_notification: Bool
|
var mention_notification: Bool
|
||||||
|
|
||||||
|
@StringSetting(key: "zap_type", default_value: ZapType.pub)
|
||||||
|
var default_zap_type: ZapType
|
||||||
|
|
||||||
@Setting(key: "repost_notification", default_value: true)
|
@Setting(key: "repost_notification", default_value: true)
|
||||||
var repost_notification: Bool
|
var repost_notification: Bool
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ struct CustomizeZapView: View {
|
|||||||
self._error = State(initialValue: nil)
|
self._error = State(initialValue: nil)
|
||||||
self._invoice = State(initialValue: "")
|
self._invoice = State(initialValue: "")
|
||||||
self._showing_wallet_selector = State(initialValue: false)
|
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 = State(initialValue: String(state.settings.default_zap_amount))
|
||||||
self._custom_amount_sats = State(initialValue: nil)
|
self._custom_amount_sats = State(initialValue: nil)
|
||||||
self._zapping = State(initialValue: false)
|
self._zapping = State(initialValue: false)
|
||||||
@@ -294,15 +294,19 @@ struct CustomizeZapView: View {
|
|||||||
}
|
}
|
||||||
.sheet(isPresented: $show_zap_types) {
|
.sheet(isPresented: $show_zap_types) {
|
||||||
if #available(iOS 16.0, *) {
|
if #available(iOS 16.0, *) {
|
||||||
ZapTypePicker(zap_type: $zap_type, profiles: state.profiles, pubkey: event.pubkey)
|
ZapPicker
|
||||||
.presentationDetents([.medium])
|
.presentationDetents([.medium])
|
||||||
.presentationDragIndicator(.visible)
|
.presentationDragIndicator(.visible)
|
||||||
} else {
|
} 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 {
|
var MainContent: some View {
|
||||||
CustomZap
|
CustomZap
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,15 +7,29 @@
|
|||||||
|
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
enum ZapType {
|
enum ZapType: String, StringCodable {
|
||||||
case pub
|
case pub
|
||||||
case anon
|
case anon
|
||||||
case priv
|
case priv
|
||||||
case non_zap
|
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 {
|
struct ZapTypePicker: View {
|
||||||
@Binding var zap_type: ZapType
|
@Binding var zap_type: ZapType
|
||||||
|
@ObservedObject var settings: UserSettingsStore
|
||||||
let profiles: Profiles
|
let profiles: Profiles
|
||||||
let pubkey: String
|
let pubkey: String
|
||||||
|
|
||||||
@@ -29,10 +43,24 @@ struct ZapTypePicker: View {
|
|||||||
colorScheme == .light ? DamusColors.black : DamusColors.white
|
colorScheme == .light ? DamusColors.black : DamusColors.white
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var is_default: Bool {
|
||||||
|
zap_type == settings.default_zap_type
|
||||||
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(spacing: 20) {
|
VStack(spacing: 20) {
|
||||||
Text("Zap type")
|
HStack {
|
||||||
.font(.system(size: 18, weight: .heavy))
|
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: "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: "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)
|
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 {
|
struct ZapTypePicker_Previews: PreviewProvider {
|
||||||
@State static var zap_type: ZapType = .pub
|
@State static var zap_type: ZapType = .pub
|
||||||
|
@State static var default_type: ZapType = .pub
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
let ds = test_damus_state()
|
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