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 .
*
*/