65 lines
1.7 KiB
Swift
65 lines
1.7 KiB
Swift
//
|
|
// WalletModel.swift
|
|
// damus
|
|
//
|
|
// Created by William Casarin on 2023-05-09.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
enum WalletConnectState {
|
|
case new(WalletConnectURL)
|
|
case existing(WalletConnectURL)
|
|
case none
|
|
}
|
|
|
|
class WalletModel: ObservableObject {
|
|
var settings: UserSettingsStore
|
|
private(set) var previous_state: WalletConnectState
|
|
var initial_percent: Int
|
|
|
|
@Published private(set) var connect_state: WalletConnectState
|
|
|
|
init(state: WalletConnectState, settings: UserSettingsStore) {
|
|
self.connect_state = state
|
|
self.previous_state = .none
|
|
self.settings = settings
|
|
self.initial_percent = settings.donation_percent
|
|
}
|
|
|
|
init(settings: UserSettingsStore) {
|
|
self.settings = settings
|
|
if let str = settings.nostr_wallet_connect,
|
|
let nwc = WalletConnectURL(str: str) {
|
|
self.previous_state = .existing(nwc)
|
|
self.connect_state = .existing(nwc)
|
|
} else {
|
|
self.previous_state = .none
|
|
self.connect_state = .none
|
|
}
|
|
self.initial_percent = settings.donation_percent
|
|
}
|
|
|
|
func cancel() {
|
|
self.connect_state = previous_state
|
|
self.objectWillChange.send()
|
|
}
|
|
|
|
func disconnect() {
|
|
self.settings.nostr_wallet_connect = nil
|
|
self.connect_state = .none
|
|
self.previous_state = .none
|
|
}
|
|
|
|
func new(_ nwc: WalletConnectURL) {
|
|
self.connect_state = .new(nwc)
|
|
}
|
|
|
|
func connect(_ nwc: WalletConnectURL) {
|
|
self.settings.nostr_wallet_connect = nwc.to_url().absoluteString
|
|
notify(.attached_wallet(nwc))
|
|
self.connect_state = .existing(nwc)
|
|
self.previous_state = .existing(nwc)
|
|
}
|
|
}
|