mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
80 lines
2.0 KiB
Swift
80 lines
2.0 KiB
Swift
import Foundation
|
|
import TelegramCore
|
|
|
|
enum SecureIdVerificationLocalDocumentState: Equatable {
|
|
case uploading(Float)
|
|
case uploaded(UploadedSecureIdFile)
|
|
}
|
|
|
|
struct SecureIdVerificationLocalDocument: Equatable {
|
|
let id: Int64
|
|
let resource: TelegramMediaResource
|
|
let timestamp: Int32
|
|
var state: SecureIdVerificationLocalDocumentState
|
|
|
|
static func ==(lhs: SecureIdVerificationLocalDocument, rhs: SecureIdVerificationLocalDocument) -> Bool {
|
|
if lhs.id != rhs.id {
|
|
return false
|
|
}
|
|
if !lhs.resource.isEqual(to: rhs.resource) {
|
|
return false
|
|
}
|
|
if lhs.timestamp != rhs.timestamp {
|
|
return false
|
|
}
|
|
if lhs.state != rhs.state {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
}
|
|
|
|
enum SecureIdVerificationDocumentId: Hashable {
|
|
case remote(Int64)
|
|
case local(Int64)
|
|
}
|
|
|
|
enum SecureIdVerificationDocument: Equatable {
|
|
case remote(SecureIdFileReference)
|
|
case local(SecureIdVerificationLocalDocument)
|
|
|
|
var id: SecureIdVerificationDocumentId {
|
|
switch self {
|
|
case let .remote(file):
|
|
return .remote(file.id)
|
|
case let .local(file):
|
|
return .local(file.id)
|
|
}
|
|
}
|
|
|
|
var timestamp: Int32 {
|
|
switch self {
|
|
case let .remote(file):
|
|
return file.timestamp
|
|
case let .local(file):
|
|
return file.timestamp
|
|
}
|
|
}
|
|
|
|
var resource: TelegramMediaResource {
|
|
switch self {
|
|
case let .remote(file):
|
|
return SecureFileMediaResource(file: file)
|
|
case let .local(file):
|
|
return file.resource
|
|
}
|
|
}
|
|
}
|
|
|
|
extension SecureIdVerificationDocument {
|
|
init?(_ reference: SecureIdVerificationDocumentReference) {
|
|
switch reference {
|
|
case let .remote(file):
|
|
self = .remote(file)
|
|
case .uploaded:
|
|
return nil
|
|
}
|
|
}
|
|
}
|
|
|