import Foundation import Postbox import TelegramApi extension ExportedInvitation { init(apiExportedInvite: Api.ExportedChatInvite) { switch apiExportedInvite { case let .chatInviteExported(flags, link, adminId, date, startDate, expireDate, usageLimit, usage, requested, title): self = .link(link: link, title: title, isPermanent: (flags & (1 << 5)) != 0, requestApproval: (flags & (1 << 6)) != 0, isRevoked: (flags & (1 << 0)) != 0, adminId: PeerId(namespace: Namespaces.Peer.CloudUser, id: PeerId.Id._internalFromInt64Value(adminId)), date: date, startDate: startDate, expireDate: expireDate, usageLimit: usageLimit, count: usage, requestedCount: requested) case .chatInvitePublicJoinRequests: self = .publicJoinRequest } } } public extension ExportedInvitation { var link: String? { switch self { case let .link(link, _, _, _, _, _, _, _, _, _, _, _): return link case .publicJoinRequest: return nil } } var date: Int32? { switch self { case let .link(_, _, _, _, _, _, _, date, _, _, _, _): return date case .publicJoinRequest: return nil } } var isPermanent: Bool { switch self { case let .link(_, _, isPermanent, _, _, _, _, _, _, _, _, _): return isPermanent case .publicJoinRequest: return false } } var isRevoked: Bool { switch self { case let .link(_, _, _, _, isRevoked, _, _, _, _, _, _, _): return isRevoked case .publicJoinRequest: return false } } }