mirror of
https://github.com/ichmagmaus111/ghostgram.git
synced 2026-11-03 14:17:19 +01:00
Ghostgram for iOS, rebuilt from scratch on Telegram iOS 13.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
48 lines
1.4 KiB
Swift
48 lines
1.4 KiB
Swift
import Foundation
|
|
import TelegramCore
|
|
|
|
struct WalletSendPeerAddressResolution {
|
|
enum State: Equatable {
|
|
case notRequested
|
|
case loading
|
|
case resolved
|
|
case failed
|
|
case errorPresented
|
|
case cancelled
|
|
}
|
|
|
|
var state: State = .notRequested
|
|
private(set) var recipient: WalletUserAddress?
|
|
private var generation = 0
|
|
|
|
mutating func reset(resolvedAddress: WalletUserAddress?) {
|
|
self.generation &+= 1
|
|
self.recipient = resolvedAddress
|
|
self.state = resolvedAddress == nil ? .notRequested : .resolved
|
|
}
|
|
|
|
mutating func begin() -> Int? {
|
|
guard self.state == .notRequested else {
|
|
return nil
|
|
}
|
|
self.generation &+= 1
|
|
self.state = .loading
|
|
return self.generation
|
|
}
|
|
|
|
mutating func complete(generation: Int, recipient: WalletUserAddress?) -> Bool {
|
|
guard self.state == .loading, self.generation == generation else {
|
|
return false
|
|
}
|
|
let address = recipient?.address.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
if let recipient, let address, !address.isEmpty {
|
|
self.recipient = WalletUserAddress(userId: recipient.userId, address: address, publicKey: recipient.publicKey)
|
|
self.state = .resolved
|
|
} else {
|
|
self.recipient = nil
|
|
self.state = .failed
|
|
}
|
|
return true
|
|
}
|
|
}
|