mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
2 years ago
|
import type { Dayjs } from 'dayjs'
|
||
|
import dayjs from 'dayjs'
|
||
|
import { defineNuxtPlugin } from '#app'
|
||
|
|
||
|
const handleFeedbackForm = async () => {
|
||
|
let { feedbackForm: currentFeedbackForm } = $(useGlobalState())
|
||
|
if (!currentFeedbackForm) return
|
||
|
|
||
|
const { $api } = useNuxtApp()
|
||
|
|
||
|
const fetchFeedbackForm = async (now: Dayjs) => {
|
||
|
try {
|
||
|
const { data: feedbackForm } = await $api.instance.get('/api/v1/feedback_form')
|
||
|
const isFetchedFormDuplicate = currentFeedbackForm.url === feedbackForm.url
|
||
|
|
||
|
currentFeedbackForm = {
|
||
|
url: feedbackForm.url,
|
||
|
lastFormPollDate: now.toISOString(),
|
||
|
createdAt: feedbackForm.created_at,
|
||
|
isHidden: isFetchedFormDuplicate ? currentFeedbackForm.isHidden : false,
|
||
|
}
|
||
|
} catch (e) {
|
||
|
console.error(e)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const isFirstTimePolling = !currentFeedbackForm.lastFormPollDate
|
||
|
|
||
|
const now = dayjs()
|
||
|
const lastFormPolledDate = dayjs(currentFeedbackForm.lastFormPollDate)
|
||
|
|
||
|
if (isFirstTimePolling || dayjs.duration(now.diff(lastFormPolledDate)).days() > 0) {
|
||
|
await fetchFeedbackForm(now)
|
||
|
}
|
||
|
}
|
||
|
|
||
2 years ago
|
export default defineNuxtPlugin(async () => {
|
||
2 years ago
|
await handleFeedbackForm()
|
||
|
})
|