Skip to content
Snippets Groups Projects
Extensions.swift 1.8 KiB
Newer Older
Bruno Muniz's avatar
Bruno Muniz committed
import Models
import XXModels
Bruno Muniz's avatar
Bruno Muniz committed
import Bindings

extension Contact {
    init(with contact: BindingsContact, status: Contact.AuthStatus) {
Bruno Muniz's avatar
Bruno Muniz committed
        self.init(
            id: contact.getID()!,
Bruno Muniz's avatar
Bruno Muniz committed
            marshaled: try! contact.marshal(),
            username: contact.retrieve(fact: .username) ?? "",
            email: contact.retrieve(fact: .email),
            phone: contact.retrieve(fact: .phone),
Bruno Muniz's avatar
Bruno Muniz committed
            nickname: nil,
            photo: nil,
            authStatus: status,
            isRecent: false,
            createdAt: Date()
Bruno Muniz's avatar
Bruno Muniz committed
        )
    }
}

extension Message {
    init(with message: BindingsMessage, myId: Data) {
Bruno Muniz's avatar
Bruno Muniz committed
        guard let payload = try? Payload(with: message.getPayload()!) else { fatalError() }

        self.init(
            networkId: message.getID()!,
            senderId: message.getSender()!,
            recipientId: myId,
            groupId: nil,
            date: Date.fromTimestamp(Int(message.getTimestampNano())),
Bruno Muniz's avatar
Bruno Muniz committed
            status: .received,
            isUnread: true,
            text: payload.text,
            replyMessageId: payload.reply?.messageId,
            roundURL: message.getRoundURL(),
            fileTransferId: nil
Bruno Muniz's avatar
Bruno Muniz committed
        )
    }

    init(with message: BindingsGroupMessageReceive) {
        guard let payload = try? Payload(with: message.getPayload()!) else { fatalError() }

        self.init(
            networkId: message.getMessageID()!,
            senderId: message.getSenderID()!,
            recipientId: nil,
Bruno Muniz's avatar
Bruno Muniz committed
            groupId: message.getGroupID()!,
            date: Date.fromTimestamp(Int(message.getTimestampNano())),
Bruno Muniz's avatar
Bruno Muniz committed
            status: .received,
            isUnread: true,
            text: payload.text,
            replyMessageId: payload.reply?.messageId,
            roundURL: message.getRoundURL(),
            fileTransferId: nil
Bruno Muniz's avatar
Bruno Muniz committed
        )
    }
}