at the end of the day, it was inevitable
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
import {tokenInject} from '../../../utils/common'
|
||||
import {
|
||||
NOTIFICATION_SUBSCREENS, RECEIVER_SUBSCREENS, switchShareSubScreen,
|
||||
NOTIFICATION_TABLES
|
||||
} from './tabs'
|
||||
import { addAlert } from '../../common/alerts'
|
||||
import { getDefaultTheme } from './emailThemes/themes'
|
||||
|
||||
import myEmailsTable from './tables/myEmailsTable'
|
||||
import publishedEmailsTable from './tables/publishedEmailsTable'
|
||||
import emailsTable from './tables/emailsTable'
|
||||
|
||||
import alertForm from './forms/alertForm'
|
||||
import newsletterForm from './forms/newsletterForm'
|
||||
import recipientForm from './forms/recipientForm'
|
||||
import groupForm from './forms/groupForm'
|
||||
|
||||
import * as notificationsApi from '../../../../api/notificationsApi'
|
||||
|
||||
const tablePendingActions = {
|
||||
[NOTIFICATION_TABLES.MY_EMAILS]: myEmailsTable.asyncActionPending,
|
||||
[NOTIFICATION_TABLES.PUBLISHED]: publishedEmailsTable.asyncActionPending,
|
||||
emails: emailsTable.asyncActionPending
|
||||
}
|
||||
|
||||
//**** ACTIONS ****//
|
||||
|
||||
const loadTablePending = (type, isPending) => {
|
||||
return tablePendingActions[type](isPending)
|
||||
}
|
||||
|
||||
const startEditNotification = (notification, table, tab = 'notifications') => {
|
||||
return tokenInject((dispatch, getState, token) => {
|
||||
if (notification.type === 'alert') {
|
||||
|
||||
dispatch(loadTablePending(table, true))
|
||||
|
||||
dispatch(getDefaultTheme())
|
||||
.then((defaultTheme) => {
|
||||
return notificationsApi.getItem(token, null, notification.id)
|
||||
.then((fullNotification) => {
|
||||
dispatch(loadTablePending(table, false))
|
||||
dispatch(alertForm.actions.fillForm(fullNotification, defaultTheme))
|
||||
dispatch(switchShareSubScreen(tab, NOTIFICATION_SUBSCREENS.ALERT_FORM))
|
||||
})
|
||||
})
|
||||
.catch((errors) => {
|
||||
dispatch(loadTablePending(table, false))
|
||||
dispatch(addAlert(errors))
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const startCreateNotification = (type, table, tab = 'notifications') => {
|
||||
return (dispatch, getState) => {
|
||||
|
||||
const recipient = getState().getIn(['common', 'auth', 'user', 'recipient']);
|
||||
if (!recipient) {
|
||||
return dispatch(addAlert('Please create at least one recipient from Manage Recipients to create an alert.'));
|
||||
}
|
||||
const myself = recipient.toJS()
|
||||
const defaultRecipient = {
|
||||
value: myself.id,
|
||||
label: `${myself.firstName} ${myself.lastName} <${myself.email}>`
|
||||
}
|
||||
|
||||
dispatch(loadTablePending(table, true))
|
||||
dispatch(getDefaultTheme())
|
||||
.then(() => {
|
||||
dispatch(loadTablePending(table, false))
|
||||
if (type === NOTIFICATION_SUBSCREENS.ALERT_FORM) {
|
||||
dispatch(alertForm.actions.clearForm())
|
||||
dispatch(alertForm.actions.changeRecipients([defaultRecipient]))
|
||||
dispatch(switchShareSubScreen(tab, NOTIFICATION_SUBSCREENS.ALERT_FORM))
|
||||
}
|
||||
else if (type === NOTIFICATION_SUBSCREENS.NEWSLETTER_FORM) {
|
||||
dispatch(newsletterForm.actions.clearForm())
|
||||
dispatch(switchShareSubScreen(tab, NOTIFICATION_SUBSCREENS.NEWSLETTER_FORM))
|
||||
}
|
||||
})
|
||||
.catch((errors) => {
|
||||
dispatch(loadTablePending(table, false))
|
||||
dispatch(addAlert(errors))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const startCreateRecipient = () => {
|
||||
return (dispatch) => {
|
||||
dispatch(switchShareSubScreen('recipients', RECEIVER_SUBSCREENS.RECIPIENT_FORM))
|
||||
dispatch(recipientForm.actions.clearForm())
|
||||
}
|
||||
}
|
||||
|
||||
const startCreateGroup = () => {
|
||||
return (dispatch) => {
|
||||
dispatch(switchShareSubScreen('recipients', RECEIVER_SUBSCREENS.GROUP_FORM))
|
||||
dispatch(groupForm.actions.clearForm())
|
||||
}
|
||||
}
|
||||
|
||||
const startEditRecipient = (item) => {
|
||||
console.log('start edit')
|
||||
return (dispatch) => {
|
||||
dispatch(switchShareSubScreen('recipients', RECEIVER_SUBSCREENS.RECIPIENT_FORM))
|
||||
dispatch(recipientForm.actions.clearForm())
|
||||
dispatch(recipientForm.actions.fillForm(item))
|
||||
}
|
||||
}
|
||||
|
||||
const startEditGroup = (item) => {
|
||||
return (dispatch) => {
|
||||
dispatch(switchShareSubScreen('recipients', RECEIVER_SUBSCREENS.GROUP_FORM))
|
||||
dispatch(groupForm.actions.clearForm())
|
||||
dispatch(groupForm.actions.fillForm(item))
|
||||
}
|
||||
}
|
||||
|
||||
export const actions = {
|
||||
startEditNotification,
|
||||
startCreateNotification,
|
||||
startCreateRecipient,
|
||||
startCreateGroup,
|
||||
startEditRecipient,
|
||||
startEditGroup
|
||||
}
|
||||
|
||||
//**** This module has no state (: ****//
|
||||
|
||||
Reference in New Issue
Block a user