158 lines
4.6 KiB
JavaScript
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;
|