From 9f906829f95d1012d7839c4eea4d8eb5ee07babe Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Thu, 14 Jul 2022 19:36:34 +0530 Subject: [PATCH] fix/added polling and removed validity logic --- packages/nc-gui/plugins/projectLoader.js | 39 ++++++++++++------------ 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/packages/nc-gui/plugins/projectLoader.js b/packages/nc-gui/plugins/projectLoader.js index 721379fe84..7a39b937fb 100644 --- a/packages/nc-gui/plugins/projectLoader.js +++ b/packages/nc-gui/plugins/projectLoader.js @@ -1,3 +1,8 @@ +import dayjs from 'dayjs' +import duration from 'dayjs/plugin/duration' + +dayjs.extend(duration) + export default async({ store, redirect, $axios, $toast, $api, route }) => { // if (!route.path || !route.path.startsWith('/nc/')) { await store.dispatch('plugins/pluginPostInstall', 'Branding') } if (window.location.search && @@ -84,35 +89,31 @@ export default async({ store, redirect, $axios, $toast, $api, route }) => { } const handleFeedbackForm = async({ store, $axios }) => { - const fetchFeedbackForm = async() => { + const fetchFeedbackForm = async(now) => { try { const { data: feedbackForm } = await $axios.get('/api/v1/feedback_form') const currentFeedbackForm = store.state.settings.feedbackForm - if ( - feedbackForm.url !== currentFeedbackForm.url || - feedbackForm.valid_till !== currentFeedbackForm.validTill - ) { - store.commit('settings/MutFeedbackForm', { - url: feedbackForm.url, - validTill: feedbackForm.valid_till, - createdAt: feedbackForm.created_at, - isHidden: false - }) - } + const isFetchedFormDuplicate = currentFeedbackForm.url === feedbackForm.url + + store.commit('settings/MutFeedbackForm', { + url: feedbackForm.url, + lastFormPollDate: now.toISOString(), + createdAt: feedbackForm.created_at, + isHidden: isFetchedFormDuplicate ? currentFeedbackForm.isHidden : false + }) } catch (e) { // ignore } } - const lastFeedbackFormExpirationDate = new Date(store.state.settings.feedbackForm.validTill) - const isDateValid = date => date instanceof Date && !isNaN(date.getTime()) + const isFirstTimePolling = !store.state.settings.feedbackForm.lastFormPollDate + + const now = dayjs() + const lastFormPolledDate = dayjs(store.state.settings.feedbackForm.lastFormPollDate) - if ( - !isDateValid(lastFeedbackFormExpirationDate) || - Date.now() > lastFeedbackFormExpirationDate.getTime() - ) { - fetchFeedbackForm() + if (isFirstTimePolling || (dayjs.duration(now.diff(lastFormPolledDate)).days() > 0)) { + fetchFeedbackForm(now) } } /**