suspend fun processMessageEvent()

in space-slack-sync/src/main/kotlin/org/jetbrains/spaceSlackSync/slack/SlackMessageEvent.kt [26:65]


suspend fun processMessageEvent(requestBodyJson: JsonElement, requestBody: String) {
    if (isMessagePostedByThisApp(requestBodyJson)) {
        log.debug("SKIP message from Slack: Message was posted by this app")
        return
    }

    val slackMessageEvent = getSlackMessageEvent(requestBodyJson, requestBody) ?: return // reason is logged inside
    withSlackEventLogContext(slackMessageEvent) {
        val context = getContext(slackMessageEvent) ?: return@withSlackEventLogContext // reason is logged inside

        withSyncedChannelLogContext(context.syncedChannel) {
            when (slackMessageEvent) {
                is SlackMessageEvent.MessageCreated -> {
                    log.debug("NEW message from Slack")
                    context.processNewMessage(slackMessageEvent)
                }

                is SlackMessageEvent.MessageUpdated -> {
                    log.debug("UPDATED message from Slack")
                    context.processEditedMessage(slackMessageEvent)
                }

                is SlackMessageEvent.MessageDeleted -> {
                    log.debug("DELETED message from Slack")
                    context.processDeletedMessage(slackMessageEvent)
                }

                is SlackMessageEvent.ChannelJoin -> {
                    log.debug("CHANNEL JOIN message from Slack")
                    context.processChannelJoin(slackMessageEvent)
                }

                is SlackMessageEvent.ChannelLeave -> {
                    log.debug("CHANNEL LEAVE message from Slack")
                    context.processChannelLeave(slackMessageEvent)
                }
            }
        }
    }
}