import dayjs from 'dayjs'
import { defineNuxtPlugin, useGlobal, useNuxtApp } from '#imports'

const handleFeedbackForm = async () => {
  let { feedbackForm: currentFeedbackForm } = $(useGlobal())

  if (!currentFeedbackForm) return

  const { $api } = useNuxtApp()

  const isFirstTimePolling = !currentFeedbackForm.lastFormPollDate

  const now = dayjs()

  const lastFormPolledDate = dayjs(currentFeedbackForm.lastFormPollDate)

  if (isFirstTimePolling || dayjs.duration(now.diff(lastFormPolledDate)).days() > 0) {
    $api.instance
      .get('/api/v1/feedback_form')
      .then((response) => {
        try {
          const { data: feedbackForm } = response
          if (!feedbackForm.error) {
            const isFetchedFormDuplicate = currentFeedbackForm.url === feedbackForm.url

            currentFeedbackForm = {
              url: feedbackForm.url,
              lastFormPollDate: now.toISOString(),
              createdAt: feedbackForm.created_at,
              isHidden: isFetchedFormDuplicate ? currentFeedbackForm.isHidden : false,
            }
          }
        } catch (e) {}
      })
      .catch(() => {})
  }
}

export default defineNuxtPlugin(() => {
  handleFeedbackForm()
})