import PostboxDataTypes
import PostboxCoding

public enum TelegramChannelInfo: Int32 {
    case broadcast = 0
    case group = 1
}

public final class TelegramChannel: Peer {
    public let id: PeerId
    public let username: String?
    public let info: TelegramChannelInfo
    
    public let associatedPeerId: PeerId? = nil
    public let notificationSettingsPeerId: PeerId? = nil
    
    public init(decoder: PostboxDecoder) {
        self.id = PeerId(decoder.decodeInt64ForKey("i", orElse: 0))
        self.username = decoder.decodeOptionalStringForKey("un")
        self.info = TelegramChannelInfo(rawValue: decoder.decodeInt32ForKey("i.t", orElse: 0)) ?? .broadcast
    }
    
    public func encode(_ encoder: PostboxEncoder) {
        preconditionFailure()
    }
    
    public func isEqual(_ other: Peer) -> Bool {
        guard let other = other as? TelegramChannel else {
            return false
        }
        
        if self.username != other.username {
            return false
        }
        
        return true
    }
}