gRPC 101 - process the results (3)
def getMessages: RIO[MailBoxServiceClient, Unit] =
for {
response <- MailBoxServiceClient.getMailBox(GetMailBoxRequest(“
[email protected]"))
q <- Queue.unbounded[Event]
_ <- fillTable(response, q)
_ <- Stream
.fromQueue(q)
.foldM(Idle: State) {
case (Idle, RowClickEvent(msgId)) =>
for {
msg <- MailBoxServiceClient
.getMessage(GetMessageRequest(“
[email protected]", msgId))
_ <- q.offer(MessageReceivedEvent(msg.body))
} yield Idle
case (Idle, MessageReceivedEvent(body)) =>
for {
_ <- ZIO.effectTotal {
dom.document.getElementById("mailbody").innerHTML = body
}
} yield Idle
}
} yield ()