@@ -2,8 +2,11 @@ package com.getcode.network.api
22
33import com.codeinc.gen.chat.v1.ChatGrpc
44import com.codeinc.gen.chat.v1.ChatService
5+ import com.codeinc.gen.chat.v1.ChatService.AdvancePointerRequest
6+ import com.codeinc.gen.chat.v1.ChatService.AdvancePointerResponse
57import com.codeinc.gen.chat.v1.ChatService.GetChatsRequest
68import com.codeinc.gen.chat.v1.ChatService.GetMessagesRequest
9+ import com.codeinc.gen.chat.v1.ChatService.Pointer.Kind
710import com.codeinc.gen.chat.v1.ChatService.SetMuteStateRequest
811import com.codeinc.gen.chat.v1.ChatService.SetMuteStateResponse
912import com.getcode.ed25519.Ed25519
@@ -65,6 +68,25 @@ class ChatApi @Inject constructor(
6568 .flowOn(Dispatchers .IO )
6669 }
6770
71+ fun advancePointer (owner : KeyPair , chatId : ID , to : ID ): Flow <AdvancePointerResponse > {
72+ val request = AdvancePointerRequest .newBuilder()
73+ .setChatId(ChatService .ChatId .newBuilder()
74+ .setValue(chatId.toByteArray().toByteString())
75+ .build()
76+ ).setPointer(ChatService .Pointer .newBuilder()
77+ .setKindValue(Kind .READ_VALUE )
78+ .setValue(ChatService .ChatMessageId .newBuilder()
79+ .setValue(to.toByteArray().toByteString())
80+ )
81+ ).setOwner(owner.publicKeyBytes.toSolanaAccount())
82+ .setSignature(owner)
83+ .build()
84+
85+ return api::advancePointer
86+ .callAsCancellableFlow(request)
87+ .flowOn(Dispatchers .IO )
88+ }
89+
6890 fun setMuteState (owner : KeyPair , chatId : ID , muted : Boolean ): Flow <SetMuteStateResponse > {
6991 val request = SetMuteStateRequest .newBuilder()
7092 .setChatId(ChatService .ChatId .newBuilder()
@@ -81,23 +103,31 @@ class ChatApi @Inject constructor(
81103 }
82104}
83105
84- fun GetChatsRequest.Builder.setSignature (owner : KeyPair ): GetChatsRequest .Builder {
106+ private fun GetChatsRequest.Builder.setSignature (owner : KeyPair ): GetChatsRequest .Builder {
107+ val bos = ByteArrayOutputStream ()
108+ buildPartial().writeTo(bos)
109+ setSignature(Ed25519 .sign(bos.toByteArray(), owner).toSignature())
110+
111+ return this
112+ }
113+
114+ private fun GetMessagesRequest.Builder.setSignature (owner : KeyPair ): GetMessagesRequest .Builder {
85115 val bos = ByteArrayOutputStream ()
86116 buildPartial().writeTo(bos)
87117 setSignature(Ed25519 .sign(bos.toByteArray(), owner).toSignature())
88118
89119 return this
90120}
91121
92- fun GetMessagesRequest .Builder.setSignature (owner : KeyPair ): GetMessagesRequest .Builder {
122+ private fun SetMuteStateRequest .Builder.setSignature (owner : KeyPair ): SetMuteStateRequest .Builder {
93123 val bos = ByteArrayOutputStream ()
94124 buildPartial().writeTo(bos)
95125 setSignature(Ed25519 .sign(bos.toByteArray(), owner).toSignature())
96126
97127 return this
98128}
99129
100- fun SetMuteStateRequest .Builder.setSignature (owner : KeyPair ): SetMuteStateRequest .Builder {
130+ private fun AdvancePointerRequest .Builder.setSignature (owner : KeyPair ): AdvancePointerRequest .Builder {
101131 val bos = ByteArrayOutputStream ()
102132 buildPartial().writeTo(bos)
103133 setSignature(Ed25519 .sign(bos.toByteArray(), owner).toSignature())
0 commit comments