suspend fun onSlackInteractive()

in src/main/kotlin/org/jetbrains/slackUnfurls/spaceUnfurlsInSlack/SpaceUnfurlsInSlack.kt [104:134]


suspend fun onSlackInteractive(call: ApplicationCall) {
    val payloadJson = call.receiveParameters()["payload"]
        ?: run {
            call.respondError(
                HttpStatusCode.BadRequest,
                log,
                "Expected form parameter payload in interactive payload request body"
            )
            return
        }

    val payload = gson.fromJson(payloadJson, BlockActionPayload::class.java)
    val action = payload.actions.singleOrNull() ?: run {
        call.respondError(HttpStatusCode.BadRequest, log, "Expected a single action in block_actions payload")
        return
    }

    when (action.actionId) {
        AuthAction.Authenticate.id, AuthAction.NotNow.id -> {
            ActionResponseSender(Slack.getInstance()).send(
                payload.responseUrl,
                ActionResponse.builder().deleteOriginal(true).build()
            )
        }
        AuthAction.Never.id -> {
            disableUnfurling(payload, spaceOrgId = action.value)
        }
    }

    call.respond(HttpStatusCode.OK)
}