<template>
  <div>
    <Error :error="error" />
    <WebhookForm ref="form" :table="table" @submitted="submit">
      <div class="actions">
        <div class="align-right">
          <button
            class="button button--primary"
            :class="{ 'button--loading': loading }"
            :disabled="loading"
          >
            {{ $t('action.save') }}
          </button>
        </div>
      </div>
    </WebhookForm>
  </div>
</template>

<script>
import error from '@baserow/modules/core/mixins/error'
import { ResponseErrorMessage } from '@baserow/modules/core/plugins/clientHandler'
import WebhookForm from '@baserow/modules/database/components/webhook/WebhookForm'
import WebhookService from '@baserow/modules/database/services/webhook'

export default {
  name: 'CreateWebhook',
  components: { WebhookForm },
  mixins: [error],
  props: {
    table: {
      type: Object,
      required: true,
    },
  },
  data() {
    return {
      loading: false,
    }
  },
  methods: {
    async submit(values) {
      this.loading = true

      try {
        const { data } = await WebhookService(this.$client).create(
          this.table.id,
          values
        )
        this.$emit('created', data)
      } catch (error) {
        this.handleError(
          error,
          'webhook',
          {
            ERROR_TABLE_WEBHOOK_MAX_LIMIT_EXCEEDED: new ResponseErrorMessage(
              this.$t('createWebhook.errorTableWebhookMaxLimitExceededTitle'),
              this.$t(
                'createWebhook.errorTableWebhookMaxLimitExceededDescription'
              )
            ),
          },
          {
            url: {
              invalid_url: new ResponseErrorMessage(
                this.$t('webhook.form.invalidURLTitle'),
                this.$t('webhook.form.invalidURLDescription')
              ),
            },
          }
        )
      }

      this.loading = false
    },
  },
}
</script>