// import moment from 'moment';
import themes from "../helpers/themes";
import browserLang from "browser-lang";
const defaultTheme = {
"primary": "#0989ff",
"secondary": "#9575CD",
"accent": "#FF4081",
"info": "#2196F3",
"success": "#4CAF50",
"warning": "#FB8C00",
error: '#ff0100',
};
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;
},
async ActSyncStats({state, commit}, stats) {
commit('MutStats', stats);
try {
let res = await this.$axios.post('/api/v1/user/stats', {...stats, id: await machineId()})
commit('MutResetStats', stats);
} catch (e) {
}
},
async ActSetTheme({state, commit, rootState}, {theme, themeName, custom}) {
//
// if (!rootState.users.ui_ability.rules.darkTheme && themeName !== 'Default') {
// setTimeout(() => {
// this.commit('snackbar/setSnack', `Custom theme is not available for your profile.
// You can either upgrade or refer us.`)
// commit('MutSetTheme', {theme: defaultTheme, themeName: 'Default'});
// }, process.env.darkThemeResetInSeconds);
// }
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 .
*
*/