@@ -4,6 +4,7 @@ import com.codeinc.gen.chat.v2.ChatService
44import com.codeinc.gen.chat.v2.ChatService.ChatMemberId
55import com.codeinc.gen.chat.v2.ChatService.OpenChatEventStream
66import com.codeinc.gen.chat.v2.ChatService.PointerType
7+ import com.codeinc.gen.chat.v2.ChatService.RevealIdentityResponse
78import com.codeinc.gen.chat.v2.ChatService.SendMessageResponse
89import com.codeinc.gen.chat.v2.ChatService.StreamChatEventsRequest
910import com.codeinc.gen.chat.v2.ChatService.StreamChatEventsResponse
@@ -21,6 +22,7 @@ import com.getcode.model.chat.Chat
2122import com.getcode.model.chat.ChatStreamEventUpdate
2223import com.getcode.model.chat.ChatType
2324import com.getcode.model.chat.OutgoingMessageContent
25+ import com.getcode.model.chat.Platform
2426import com.getcode.model.description
2527import com.getcode.network.api.ChatApiV2
2628import com.getcode.network.client.ChatMessageStreamReference
@@ -237,8 +239,8 @@ class ChatServiceV2 @Inject constructor(
237239
238240 val type = when (status) {
239241 MessageStatus .Sent -> PointerType .SENT
240- MessageStatus .Delivered -> PointerType .DELIVERED
241- MessageStatus .Read -> PointerType .READ
242+ MessageStatus .Delivered -> PointerType .DELIVERED
243+ MessageStatus .Read -> PointerType .READ
242244 MessageStatus .Unknown -> return Result .failure(Throwable (" Can't update a pointer to Unknown" ))
243245 }
244246 return try {
@@ -531,6 +533,86 @@ class ChatServiceV2 @Inject constructor(
531533 Timber .e(t = error)
532534 Result .failure(error)
533535 }
536+
537+ else -> {
538+ val error = Throwable (" Error: Unknown" )
539+ Timber .e(t = error)
540+ Result .failure(error)
541+ }
542+ }
543+
544+ cont.resume(result)
545+ }
546+
547+ override fun onError (t : Throwable ? ) {
548+ val error = t ? : Throwable (" Error: Hit a snag" )
549+ ErrorUtils .handleError(error)
550+ cont.resume(Result .failure(error))
551+ }
552+
553+ override fun onCompleted () {
554+
555+ }
556+
557+ }
558+ )
559+ } catch (e: Exception ) {
560+ ErrorUtils .handleError(e)
561+ cont.resume(Result .failure(e))
562+ }
563+ }
564+
565+ suspend fun revealIdentity (
566+ owner : KeyPair ,
567+ chat : Chat ,
568+ memberId : UUID ,
569+ platform : Platform ,
570+ username : String ,
571+ ): Result <ChatMessage > = suspendCancellableCoroutine { cont ->
572+ val chatId = chat.id
573+ try {
574+ api.revealIdentity(
575+ owner,
576+ chatId,
577+ memberId,
578+ platform,
579+ username,
580+ observer = object : StreamObserver <RevealIdentityResponse > {
581+ override fun onNext (value : RevealIdentityResponse ? ) {
582+ val requestResult = value?.result
583+ if (requestResult == null ) {
584+ trace(
585+ message = " Chat SendMessage Server returned empty message. This is unexpected." ,
586+ type = TraceType .Error
587+ )
588+ return
589+ }
590+
591+ val result = when (requestResult) {
592+ RevealIdentityResponse .Result .OK -> {
593+ trace(" Chat message sent =: ${value.message.messageId.value.toList().description} " )
594+ val message = messageMapper.map(chat to value.message)
595+ Result .success(message)
596+ }
597+
598+ RevealIdentityResponse .Result .DENIED -> {
599+ val error = Throwable (" Error: Send Message: Denied" )
600+ Timber .e(t = error)
601+ Result .failure(error)
602+ }
603+
604+ RevealIdentityResponse .Result .CHAT_NOT_FOUND -> {
605+ val error = Throwable (" Error: Send Message: chat not found $chatId " )
606+ Timber .e(t = error)
607+ Result .failure(error)
608+ }
609+
610+ RevealIdentityResponse .Result .UNRECOGNIZED -> {
611+ val error = Throwable (" Error: Send Message: Unrecognized request." )
612+ Timber .e(t = error)
613+ Result .failure(error)
614+ }
615+
534616 else -> {
535617 val error = Throwable (" Error: Unknown" )
536618 Timber .e(t = error)
0 commit comments