Files
ichmagmaus111andClaude Opus 5.5 0622057a4f Ghostgram: open-source release
Ghostgram for iOS, rebuilt from scratch on Telegram iOS 13.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 17:57:09 +01:00

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
}
}