Files
2022-12-09 08:36:26 -06:00

158 lines
4.6 KiB
JavaScript

import reduxModule from '../abstract/reduxModule';
import dashboards, { LOAD_DASHBOARDS } from '../appState/dashboards';
import * as api from '../../../api/usersApi';
export const TOGGLE_UPGRADE_PLAN = 'TOGGLE_UPGRADE_PLAN';
export class Base extends reduxModule {
getNamespace() {
return '[Base]';
}
changeUserPassword = (password, oldPassword, { token, dispatch }) => {
dispatch(this.setSettingsPopupError(null));
return api
.changePassword(token, { password, oldPassword })
.then(() => {
dispatch(this.hideUserSettingsPopup());
})
.catch((response) => {
dispatch(this.setSettingsPopupError(response[0].message));
});
};
defineActions() {
// const toggleLangsDrop = this.toggle('TOGGLE_LANGS_DROP', 'isLangsDropVisible')
// const hideLangsDrop = this.reset('HIDE_LANGS_DROP', 'isLangsDropVisible', false)
// const toggleSidebar = this.toggle('TOGGLE_SIDEBAR', 'isSidebarCollapsed')
const setDashboardTabs = this.createAction('SET_DASHBOARD_TABS');
const chooseLanguage = this.createAction('CHOOSE_LANG');
const showUserSettingsPopup = this.reset(
'SHOW_USER_SETTINGS_DROP',
'isSettingsPopupVisible',
true
);
const hideUserSettingsPopup = (this.hideUserSettingsPopup = this.reset(
'HIDE_USER_SETTINGS_DROP',
'isSettingsPopupVisible',
false
));
const changeUserPassword = this.thunkAction(
'CHANGE_USER_PASSWORD',
this.changeUserPassword
);
const setSettingsPopupError = (this.setSettingsPopupError = this.set(
'SET_SETTINGS_POPUP_ERROR',
'settingsPopupError'
));
const toggleResponsiveMenu = this.toggle(
'TOGGLE_RESPONSIVE_MENU',
'responsiveMenuVisible'
);
const toggleUpgradeModal = this.toggle(
TOGGLE_UPGRADE_PLAN,
'isUpgradeVisible'
);
const toggleWebTour = this.toggle('TOGGLE_WEBTOUR', 'isTourOpen');
return {
// toggleLangsDrop,
chooseLanguage,
// hideLangsDrop,
// toggleSidebar,
setDashboardTabs,
showUserSettingsPopup,
hideUserSettingsPopup,
changeUserPassword,
setSettingsPopupError,
toggleResponsiveMenu,
toggleUpgradeModal,
toggleWebTour
};
}
getInitialState() {
return {
tabs: {
/*'dashboard': {
items: []
},*/
search: {
items: [
{ title: 'search', url: 'search' },
{ title: 'sourceIndex', url: 'source-index' },
{ title: 'sourceLists', url: 'source-lists' }
],
icon: 'pe-7s-search'
},
analyze: {
items: [
// {title: 'welcome', url: 'welcome'},
{ title: 'savedAnalysis', url: 'saved' },
{ title: 'createAnalysis', url: 'create' }
],
icon: 'pe-7s-graph1'
},
share: {
items: [
{ title: 'notifications', url: 'notifications' },
{ title: 'manageEmails', url: 'manage-emails', masterOnly: true },
{
title: 'manageRecipients',
url: 'manage-recipients',
masterOnly: true
},
{ title: 'export', url: 'export' }
],
icon: 'pe-7s-share'
}
},
// isSidebarCollapsed: false,
isUserSettingsDropVisible: false,
// isLangsDropVisible: false,
isSettingsPopupVisible: false,
settingsPopupError: '',
isThereSomethingNew: true,
langs: ['en', 'ar', 'fr'],
// langs: ['en', 'ar', 'fr', 'es', 'de', , 'he', 'nl', 'pt'],
activeLang: '',
rtlLang: false,
responsiveMenuVisible: false,
isUpgradeVisible: false
};
}
defineReducers() {
this.addExternalReducer(
dashboards.ns(`${LOAD_DASHBOARDS} fulfilled`),
(state, { payload: dashboards }) => {
const dashboardTabs = dashboards.map((d) => ({
url: d.id,
title: d.name
}));
return state.mergeIn(['tabs', 'dashboard', 'items'], dashboardTabs);
}
);
return {
CHOOSE_LANG: (state, { payload: lang }) => {
const langsAvailable = state.get('langs');
const language = langsAvailable.includes(lang) ? lang : 'en';
const rtlLanguages = ['ar', 'he'];
const rtlLang = rtlLanguages.includes(language);
const dir = rtlLang ? 'rtl' : 'ltr';
document.documentElement.dir = dir; // set page direction
document.documentElement.lang = language;
return state.merge({
activeLang: language,
rtlLang: rtlLang
});
}
};
}
}
const instance = new Base();
instance.init();
export default instance;