override fun doOKAction()

in jetbrains-core/src/software/aws/toolkits/jetbrains/services/sqs/SubscribeSnsDialog.kt [63:102]


    override fun doOKAction() {
        if (!isOKActionEnabled) {
            return
        }
        val topicArn = topicSelected()
        setOKButtonText(message("sqs.subscribe.sns.in_progress"))
        isOKActionEnabled = false

        coroutineScope.launch {
            try {
                val policy = sqsClient.getQueueAttributes {
                    it.queueUrl(queue.queueUrl)
                    it.attributeNames(QueueAttributeName.POLICY)
                }.attributes()[QueueAttributeName.POLICY]

                if (needToEditPolicy(policy)) {
                    val continueAdding = withContext(getCoroutineUiContext()) {
                        ConfirmQueuePolicyDialog(project, sqsClient, queue, topicArn, policy, view.component).showAndGet()
                    }
                    if (!continueAdding) {
                        setOKButtonText(message("sqs.subscribe.sns.subscribe"))
                        isOKActionEnabled = true
                        return@launch
                    }
                }
                subscribe(topicArn)
                withContext(getCoroutineUiContext()) {
                    close(OK_EXIT_CODE)
                }
                notifyInfo(message("sqs.service_name"), message("sqs.subscribe.sns.success", topicSelected()), project)
                SqsTelemetry.subscribeSns(project, Result.Succeeded, queue.telemetryType())
            } catch (e: Exception) {
                LOG.warn(e) { message("sqs.subscribe.sns.failed", queue.queueName, topicArn) }
                setErrorText(e.message)
                setOKButtonText(message("sqs.subscribe.sns.subscribe"))
                isOKActionEnabled = true
                SqsTelemetry.subscribeSns(project, Result.Failed, queue.telemetryType())
            }
        }
    }