ReadReceipt implementation + small corrections
							parent
							
								
									8f409faefc
								
							
						
					
					
						commit
						746df2240a
					
				@ -1,17 +1,53 @@
 | 
			
		||||
package org.session.libsession.messaging.messages.control
 | 
			
		||||
 | 
			
		||||
import org.session.libsignal.libsignal.logging.Log
 | 
			
		||||
import org.session.libsignal.service.internal.push.SignalServiceProtos
 | 
			
		||||
 | 
			
		||||
class ReadReceipt() : ControlMessage() {
 | 
			
		||||
 | 
			
		||||
    var timestamps: LongArray? = null
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
        fun fromProto(proto: SignalServiceProtos.Content): ExpirationTimerUpdate? {
 | 
			
		||||
            TODO("Not yet implemented")
 | 
			
		||||
        const val TAG = "ReadReceipt"
 | 
			
		||||
 | 
			
		||||
        fun fromProto(proto: SignalServiceProtos.Content): ReadReceipt? {
 | 
			
		||||
            val receiptProto = proto.receiptMessage ?: return null
 | 
			
		||||
            if (receiptProto.type != SignalServiceProtos.ReceiptMessage.Type.READ) return null
 | 
			
		||||
            val timestamps = receiptProto.timestampList
 | 
			
		||||
            if (timestamps.isEmpty()) return null
 | 
			
		||||
            return ReadReceipt(timestamps = timestamps.toLongArray())
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //constructor
 | 
			
		||||
    internal constructor(timestamps: LongArray?) : this() {
 | 
			
		||||
        this.timestamps = timestamps
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // validation
 | 
			
		||||
    override fun isValid(): Boolean {
 | 
			
		||||
        if (!super.isValid()) return false
 | 
			
		||||
        val timestamps = timestamps ?: return false
 | 
			
		||||
        if (timestamps.isNotEmpty()) { return true }
 | 
			
		||||
        return false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun toProto(): SignalServiceProtos.Content? {
 | 
			
		||||
        TODO("Not yet implemented")
 | 
			
		||||
        val timestamps = timestamps ?: return null
 | 
			
		||||
        if (timestamps == null) {
 | 
			
		||||
            Log.w(ExpirationTimerUpdate.TAG, "Couldn't construct read receipt proto from: $this")
 | 
			
		||||
            return null
 | 
			
		||||
        }
 | 
			
		||||
        val receiptProto = SignalServiceProtos.ReceiptMessage.newBuilder()
 | 
			
		||||
        receiptProto.type = SignalServiceProtos.ReceiptMessage.Type.READ
 | 
			
		||||
        receiptProto.addAllTimestamp(timestamps.asIterable())
 | 
			
		||||
        val contentProto = SignalServiceProtos.Content.newBuilder()
 | 
			
		||||
        try {
 | 
			
		||||
            contentProto.receiptMessage = receiptProto.build()
 | 
			
		||||
            return contentProto.build()
 | 
			
		||||
        } catch (e: Exception) {
 | 
			
		||||
            Log.w(ExpirationTimerUpdate.TAG, "Couldn't construct read receipt proto from: $this")
 | 
			
		||||
            return null
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue