import browserLang from 'browser-lang' import themes from '../helpers/themes' export const state = () => ({ treeWindow: true, logWindow: true, outputWindow: true, darkTheme: false, clientDisabledLogWindow: false, theme: {}, themeName: 'default', isGaEnabled: true, isErrorReportingEnabled: true, customTheme: {}, language: browserLang({ languages: ['en', 'ar', 'nl', 'fr', 'de', 'it', 'ja', 'ru', 'es', 'ca', 'cs', 'et', 'lt', 'no', 'te', 'ur', 'zh-cn', 'da', 'tl', 'el', 'ms', 'pl', 'sr', 'sv', 'th', 'bn', 'zh-tw', 'fi', 'ko', 'iw', 'ml', 'pt', 'sk', 'tg', 'tr', 'vi', 'bg', 'hr', 'eo', 'id', 'lv', 'mr', 'ro', 'sl', 'ta', 'uk', 'kn', 'hi'], fallback: 'en' }), showTour: { home: true, dashboard: true }, startedDate: new Date(), // moment().format(), scaffoldOnSave: false, pollingFailedMaxRetry: 0, stats: { tableCount: 0, viewCount: 0, relationCount: 0 }, version: '0.0.0', checkForUpdate: true, downloadAndUpdateRelease: true, isComp: false, metatables: false, nc: true, miniSponsorCard: 0, screensaver: true, autoApplyFilter: true, apiLoading: false }) export const mutations = { MutApiLoading(state, status) { state.apiLoading = status }, MutAutoApplyFilter(state, v) { state.autoApplyFilter = v }, MutToggleLogWindow(state, show) { state.logWindow = !state.logWindow }, MutScreensaver(state, show) { state.screensaver = show }, MutToggleDarkMode(state, status) { if (typeof status !== 'boolean') { status = !state.darkTheme } state.darkTheme = status }, MutToggleGaEnabled(state, isEnabled) { state.isGaEnabled = isEnabled }, MutToggleErrorReportingEnabled(state, isEnabled) { state.isErrorReportingEnabled = isEnabled }, MutToggleTelemetryEnabled(state, isEnabled) { state.isTelemetryEnabled = isEnabled }, MutSetTheme(state, { theme, themeName }) { state.themeName = themeName state.theme = theme }, MutToggleTheme(state) { const keys = Object.keys(themes) const index = keys.indexOf(state.themeName) + 1 state.themeName = keys[index] state.theme = themes[state.themeName] }, MutSetCustomTheme(state, theme) { state.customTheme = theme }, MutLanguage(state, language) { state.language = language }, MutToggleTreeviewWindow(state, show) { state.treeWindow = !state.treeWindow }, MutToggleOutputWindow(state, show) { state.outputWindow = !state.outputWindow }, MutToggleLogWindowFromTab(state, { client, status }) { if (client) { state.clientDisabledLogWindow = status state.logWindow = false } else if (state.clientDisabledLogWindow) { state.logWindow = true } }, MutShowTour(state, { page, status = false }) { state.showTour = { ...state.showTour, [page]: status } }, MutStartedDate(state, date) { state.expiryDate = date }, MutPollingIncrementBy(state, val = 1) { state.pollingFailedMaxRetry += val }, MutPollingSet(state, val = 0) { state.pollingFailedMaxRetry = val }, MutToggleScaffoldOnSave(state, status) { if (typeof status === 'boolean') { state.scaffoldOnSave = status } else { state.scaffoldOnSave = !state.scaffoldOnSave } }, MutStat(state, stats) { for (const key in stats) { stats[key] += state.stats[key] || 0 } state.stats = { ...state.stats, ...stats } }, MutResetStats(state) { for (const key in state.stats) { state.stats[key] = 0 } state.stats = { ...state.stats } }, MutVersion(state, version) { state.version = version }, MutCheckForUpdate(state, checkForUpdate) { state.checkForUpdate = checkForUpdate }, MutDownloadAndUpdateRelease(state, downloadAndUpdateRelease) { state.downloadAndUpdateRelease = downloadAndUpdateRelease }, MutIsComp(state, isComp) { state.isComp = isComp }, MutMetatables(state, show) { state.metatables = show }, MutNc(state, nc) { state.nc = nc }, MutMiniSponsorCard(state, miniSponsorCard) { state.miniSponsorCard = miniSponsorCard } } export const getters = { GtrNoOfDaysLeft(state) { // const passedDays = moment().diff(state.startedDate, 'days'); // return passedDays > 30 ? 0 : 30 - passedDays; }, GtrHasTrialPeriodExpired(state) { // const passedDays = moment().diff(state.startedDate, 'days'); // return passedDays > 30; }, GtrMaxPollingRetryExceeded(state) { return state.pollingFailedMaxRetry >= process.env.pollingFailedMaxRetry }, GtrShouldWork(state) { return () => state.isComp ? Math.floor(Math.random() * 1000) % 5 === 0 : true } } export const actions = { ActGetExpiryDate({ state, commit }, args) { // if (!state.startedDate) { // commit('MutStartedDate', moment().format()) // } // return moment().diff(state.startedDate, 'days') // 1 }, ActToggleDarkMode({ state, commit, rootState }, status) { // // const prepareToastMessage = () => { // if (rootState.users.user && rootState.users.user.email) { // return `Get free lifetime access to Dark theme click HERE` // } else { // return `Sign up and refer to get Dark theme` // } // }; // // if (status && !rootState.users.ui_ability.rules.darkTheme) { // setTimeout(() => { // if (state.darkTheme) { // // // this.commit('snackbar/setSnack', prepareToastMessage()) // // commit('MutToggleDarkMode', false) // } // }, process.env.darkThemeResetInSeconds) // } commit('MutToggleDarkMode', status) }, ActCheckMaxTable({ state, commit, rootState }, { tableIndex }) { const prepareToastMessage = () => { return `You are allowed to access only ${rootState.users.ui_ability.rules.maxTables} tables.
You can either upgrade or refer us. ` } if (process.env.ui_ability) { if (tableIndex > rootState.users.ui_ability.rules.maxTables) { this.commit('snackbar/setSnack', prepareToastMessage()) return false } } return true }, ActSetTheme({ state, commit, rootState }, { theme, themeName, custom }) { if (custom) { commit('MutSetCustomTheme', theme) } else { commit('MutSetTheme', { theme, themeName }) } } } /** * @copyright Copyright (c) 2021, Xgene Cloud Ltd * * @author Naveen MR * @author Pranav C Balan * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */