mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
62 lines
2.6 KiB
Swift
62 lines
2.6 KiB
Swift
import SwiftSignalKit
|
|
import Postbox
|
|
|
|
public enum AddressNameValidationStatus: Equatable {
|
|
case checking
|
|
case invalidFormat(AddressNameFormatError)
|
|
case availability(AddressNameAvailability)
|
|
}
|
|
|
|
public extension TelegramEngine {
|
|
final class PeerNames {
|
|
private let account: Account
|
|
|
|
init(account: Account) {
|
|
self.account = account
|
|
}
|
|
|
|
public func addressNameAvailability(domain: AddressNameDomain, name: String) -> Signal<AddressNameAvailability, NoError> {
|
|
return _internal_addressNameAvailability(account: self.account, domain: domain, name: name)
|
|
}
|
|
|
|
public func updateAddressName(domain: AddressNameDomain, name: String?) -> Signal<Void, UpdateAddressNameError> {
|
|
return _internal_updateAddressName(account: self.account, domain: domain, name: name)
|
|
}
|
|
|
|
public func checkPublicChannelCreationAvailability(location: Bool = false) -> Signal<Bool, NoError> {
|
|
return _internal_checkPublicChannelCreationAvailability(account: self.account, location: location)
|
|
}
|
|
|
|
public func adminedPublicChannels(scope: AdminedPublicChannelsScope = .all) -> Signal<[Peer], NoError> {
|
|
return _internal_adminedPublicChannels(account: self.account, scope: scope)
|
|
}
|
|
|
|
public func channelAddressNameAssignmentAvailability(peerId: PeerId?) -> Signal<ChannelAddressNameAssignmentAvailability, NoError> {
|
|
return _internal_channelAddressNameAssignmentAvailability(account: self.account, peerId: peerId)
|
|
}
|
|
|
|
public func validateAddressNameInteractive(domain: AddressNameDomain, name: String) -> Signal<AddressNameValidationStatus, NoError> {
|
|
if let error = _internal_checkAddressNameFormat(name) {
|
|
return .single(.invalidFormat(error))
|
|
} else {
|
|
return .single(.checking)
|
|
|> then(
|
|
self.addressNameAvailability(domain: domain, name: name)
|
|
|> delay(0.3, queue: Queue.concurrentDefaultQueue())
|
|
|> map { result -> AddressNameValidationStatus in
|
|
.availability(result)
|
|
}
|
|
)
|
|
}
|
|
}
|
|
|
|
public func findChannelById(channelId: Int32) -> Signal<Peer?, NoError> {
|
|
return _internal_findChannelById(postbox: self.account.postbox, network: self.account.network, channelId: channelId)
|
|
}
|
|
|
|
public func supportPeerId() -> Signal<PeerId?, NoError> {
|
|
return _internal_supportPeerId(account: self.account)
|
|
}
|
|
}
|
|
}
|