mirror of
git://jb55.com/damus
synced 2024-09-19 19:46:51 +00:00
Configurable zap amount
This commit is contained in:
parent
5a8b29b5cc
commit
4f2bacfaab
@ -52,8 +52,8 @@ struct ZapButton: View {
|
|||||||
damus_state.lnurls.endpoints[target.pubkey] = payreq
|
damus_state.lnurls.endpoints[target.pubkey] = payreq
|
||||||
}
|
}
|
||||||
|
|
||||||
let tip_amount = get_default_tip_amount(pubkey: damus_state.pubkey)
|
let zap_amount = get_default_zap_amount(pubkey: damus_state.pubkey) ?? 1000
|
||||||
guard let inv = await fetch_zap_invoice(payreq, zapreq: zapreq, amount: tip_amount) else {
|
guard let inv = await fetch_zap_invoice(payreq, zapreq: zapreq, sats: zap_amount) else {
|
||||||
DispatchQueue.main.async {
|
DispatchQueue.main.async {
|
||||||
zapping = false
|
zapping = false
|
||||||
}
|
}
|
||||||
|
@ -16,15 +16,22 @@ func pk_setting_key(_ pubkey: String, key: String) -> String {
|
|||||||
return "\(pubkey)_\(key)"
|
return "\(pubkey)_\(key)"
|
||||||
}
|
}
|
||||||
|
|
||||||
let tip_amount_key = "default_tip_amount"
|
func default_zap_setting_key(pubkey: String) -> String {
|
||||||
func set_default_tip_amount(pubkey: String, amount: Int64) {
|
return pk_setting_key(pubkey, key: "default_zap_amount")
|
||||||
let key = pk_setting_key(pubkey, key: tip_amount_key)
|
}
|
||||||
|
|
||||||
|
func set_default_zap_amount(pubkey: String, amount: Int) {
|
||||||
|
let key = default_zap_setting_key(pubkey: pubkey)
|
||||||
UserDefaults.standard.setValue(amount, forKey: key)
|
UserDefaults.standard.setValue(amount, forKey: key)
|
||||||
}
|
}
|
||||||
|
|
||||||
func get_default_tip_amount(pubkey: String) -> Int64 {
|
func get_default_zap_amount(pubkey: String) -> Int? {
|
||||||
let key = "\(pubkey)_\(tip_amount_key)"
|
let key = default_zap_setting_key(pubkey: pubkey)
|
||||||
return UserDefaults.standard.object(forKey: key) as? Int64 ?? 1000000
|
let amt = UserDefaults.standard.integer(forKey: key)
|
||||||
|
if amt == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return amt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -285,12 +285,13 @@ func fetch_static_payreq(_ lnurl: String) async -> LNUrlPayRequest? {
|
|||||||
return endpoint
|
return endpoint
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetch_zap_invoice(_ payreq: LNUrlPayRequest, zapreq: NostrEvent, amount: Int64) async -> String? {
|
func fetch_zap_invoice(_ payreq: LNUrlPayRequest, zapreq: NostrEvent, sats: Int) async -> String? {
|
||||||
guard var base_url = payreq.callback.flatMap({ URLComponents(string: $0) }) else {
|
guard var base_url = payreq.callback.flatMap({ URLComponents(string: $0) }) else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
let zappable = payreq.allowsNostr ?? false
|
let zappable = payreq.allowsNostr ?? false
|
||||||
|
let amount: Int64 = Int64(sats) * 1000
|
||||||
|
|
||||||
var query = [URLQueryItem(name: "amount", value: "\(amount)")]
|
var query = [URLQueryItem(name: "amount", value: "\(amount)")]
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ 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 = ""
|
||||||
|
@State var default_zap_amount: String
|
||||||
|
|
||||||
@ObservedObject var settings: UserSettingsStore
|
@ObservedObject var settings: UserSettingsStore
|
||||||
|
|
||||||
@ -28,6 +29,8 @@ struct ConfigView: View {
|
|||||||
|
|
||||||
init(state: DamusState) {
|
init(state: DamusState) {
|
||||||
self.state = state
|
self.state = state
|
||||||
|
let zap_amt = get_default_zap_amount(pubkey: state.pubkey).map({ "\($0)" }) ?? "1000"
|
||||||
|
_default_zap_amount = State(initialValue: zap_amt)
|
||||||
_privkey = State(initialValue: self.state.keypair.privkey_bech32 ?? "")
|
_privkey = State(initialValue: self.state.keypair.privkey_bech32 ?? "")
|
||||||
_settings = ObservedObject(initialValue: state.settings)
|
_settings = ObservedObject(initialValue: state.settings)
|
||||||
}
|
}
|
||||||
@ -125,6 +128,11 @@ struct ConfigView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Section(NSLocalizedString("Default Zap Amount in sats", comment: "Section title for zap configuration")) {
|
||||||
|
TextField("1000", text: $default_zap_amount)
|
||||||
|
}
|
||||||
|
|
||||||
Section(NSLocalizedString("Translations", comment: "Section title for selecting the translation service.")) {
|
Section(NSLocalizedString("Translations", comment: "Section title for selecting the translation service.")) {
|
||||||
Picker(NSLocalizedString("Service", comment: "Prompt selection of translation service provider."), selection: $settings.translation_service) {
|
Picker(NSLocalizedString("Service", comment: "Prompt selection of translation service provider."), selection: $settings.translation_service) {
|
||||||
ForEach(TranslationService.allCases, id: \.self) { server in
|
ForEach(TranslationService.allCases, id: \.self) { server in
|
||||||
@ -194,6 +202,12 @@ struct ConfigView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onChange(of: default_zap_amount) { val in
|
||||||
|
guard let amt = Int(val) else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
set_default_zap_amount(pubkey: state.pubkey, amount: amt)
|
||||||
|
}
|
||||||
.navigationTitle(NSLocalizedString("Settings", comment: "Navigation title for Settings view."))
|
.navigationTitle(NSLocalizedString("Settings", comment: "Navigation title for Settings view."))
|
||||||
.navigationBarTitleDisplayMode(.large)
|
.navigationBarTitleDisplayMode(.large)
|
||||||
.alert(NSLocalizedString("Permanently Delete Account", comment: "Alert for deleting the users account."), isPresented: $confirm_delete_account) {
|
.alert(NSLocalizedString("Permanently Delete Account", comment: "Alert for deleting the users account."), isPresented: $confirm_delete_account) {
|
||||||
|
@ -88,6 +88,14 @@ class damusTests: XCTestCase {
|
|||||||
XCTAssertEqual(parsed, expected)
|
XCTAssertEqual(parsed, expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testSaveDefaultZapAmount() {
|
||||||
|
let pubkey = "test_pubkey"
|
||||||
|
let amt = 1000
|
||||||
|
set_default_zap_amount(pubkey: pubkey, amount: amt)
|
||||||
|
let loaded = get_default_zap_amount(pubkey: pubkey)!
|
||||||
|
XCTAssertEqual(loaded, amt)
|
||||||
|
}
|
||||||
|
|
||||||
func testSaveRelayFilters() {
|
func testSaveRelayFilters() {
|
||||||
var filters = Set<RelayFilter>()
|
var filters = Set<RelayFilter>()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user