at the end of the day, it was inevitable
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import * as api from '../../../../../../api/receiversApi'
|
||||
import GenericTableModule from '../genericTable'
|
||||
|
||||
class EmailHistory extends GenericTableModule {
|
||||
|
||||
constructor () {
|
||||
super(api)
|
||||
}
|
||||
|
||||
getNamespace () {
|
||||
return '[Email history]'
|
||||
}
|
||||
|
||||
getTableState (state) {
|
||||
return state.getIn(['appState', 'share', 'tables', 'receiverForm', 'emailHistory'])
|
||||
}
|
||||
|
||||
loadTable = (params, receiver, {dispatch, getState, token, fulfilled}) => {
|
||||
if (params) {
|
||||
dispatch(this.setTableParams(params))
|
||||
}
|
||||
const payload = this._getLoadPayload(getState)
|
||||
return this.api
|
||||
.getEmailHistory(token, payload, receiver.id)
|
||||
.then((response) => {
|
||||
fulfilled(response)
|
||||
})
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
const instance = new EmailHistory()
|
||||
instance.init()
|
||||
export default instance
|
||||
@@ -0,0 +1,84 @@
|
||||
import {fromJS} from 'immutable'
|
||||
import GenericTableModule from '../genericTable'
|
||||
|
||||
const TOGGLE_SUBSCRIBED = 'Toggle subscribed'
|
||||
const TOGGLE_ENROLLED = 'Toggle enrolled'
|
||||
|
||||
export default class ReceiverFormTable extends GenericTableModule {
|
||||
|
||||
getDataFromResponse (response) {
|
||||
//implement in subclasses
|
||||
}
|
||||
|
||||
getLoadTableRequestPayload (tableState, receiver) {
|
||||
let payload = super.getLoadTableRequestPayload(tableState)
|
||||
if (tableState.filter) {
|
||||
payload.filter = tableState.filter
|
||||
}
|
||||
const statusFilter = tableState.statusFilter
|
||||
if (statusFilter) {
|
||||
payload.statusFilter = tableState.statusFilter
|
||||
}
|
||||
return payload
|
||||
}
|
||||
|
||||
_getLoadPayload (getState, receiver) {
|
||||
const tableState = this.getTableState(getState()).toJS()
|
||||
return this.getLoadTableRequestPayload(tableState, receiver)
|
||||
}
|
||||
|
||||
loadTable = (params, receiver, {dispatch, getState, token, fulfilled}) => {
|
||||
if (params) {
|
||||
dispatch(this.setTableParams(params))
|
||||
}
|
||||
const payload = this._getLoadPayload(getState, receiver) // <-- difference from genericTable
|
||||
return this.api
|
||||
.getItems(token, payload)
|
||||
.then((response) => {
|
||||
fulfilled(this.getDataFromResponse(response, receiver))
|
||||
})
|
||||
};
|
||||
|
||||
addDataColumn (data, fieldName, ids = []) {
|
||||
data.forEach((item) => {
|
||||
item[fieldName] = ids.includes(item.id)
|
||||
})
|
||||
};
|
||||
|
||||
toggleDataField (actionName, fieldName) {
|
||||
return this.createHandler(
|
||||
actionName,
|
||||
(itemId, turnOn) => ({itemId, turnOn}),
|
||||
(state, {payload: {itemId, turnOn}}) => {
|
||||
const tableData = state.get('data').toJS()
|
||||
tableData.forEach((item) => {
|
||||
if (item.id === itemId) {
|
||||
item[fieldName] = turnOn
|
||||
}
|
||||
})
|
||||
return state.set('data', fromJS(tableData))
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
defineActions () {
|
||||
const actions = super.defineActions()
|
||||
const toggleSubscribed = this.toggleDataField(TOGGLE_SUBSCRIBED, 'subscribed')
|
||||
const toggleEnrolled = this.toggleDataField(TOGGLE_ENROLLED, 'enrolled')
|
||||
|
||||
return {
|
||||
...actions,
|
||||
toggleSubscribed,
|
||||
toggleEnrolled
|
||||
}
|
||||
}
|
||||
|
||||
getInitialState () {
|
||||
return {
|
||||
...super.getInitialState(),
|
||||
filter: '',
|
||||
statusFilter: 'all'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import ReceiverFormTable from './receiverFormTable'
|
||||
import * as api from '../../../../../../api/groupsApi'
|
||||
|
||||
///api/v1/recipients/groups with recipientId
|
||||
|
||||
class ReceiverGroupsTable extends ReceiverFormTable {
|
||||
|
||||
constructor () {
|
||||
super(api)
|
||||
}
|
||||
|
||||
getNamespace () {
|
||||
return '[Recipient form groups table]'
|
||||
}
|
||||
|
||||
getTableState (state) {
|
||||
return state.getIn(['appState', 'share', 'tables', 'receiverForm', 'groups'])
|
||||
}
|
||||
|
||||
getLoadTableRequestPayload (tableState, receiver) {
|
||||
let payload = super.getLoadTableRequestPayload(tableState)
|
||||
if (receiver) {
|
||||
payload.recipientId = receiver.id
|
||||
}
|
||||
return payload
|
||||
}
|
||||
|
||||
getDataFromResponse (response, receiver) {
|
||||
const data = response.groups
|
||||
this.addDataColumn(data.data, 'enrolled', receiver.groups)
|
||||
return data
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const instance = new ReceiverGroupsTable()
|
||||
instance.init()
|
||||
export default instance
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
import ReceiverFormTable from './receiverFormTable'
|
||||
import * as api from '../../../../../../api/recipientsApi'
|
||||
|
||||
///api/v1/recipients with groupId
|
||||
|
||||
class ReceiverRecipientsTable extends ReceiverFormTable {
|
||||
|
||||
constructor () {
|
||||
super(api)
|
||||
}
|
||||
|
||||
getNamespace () {
|
||||
return '[Group form recipients table]'
|
||||
}
|
||||
|
||||
getTableState (state) {
|
||||
return state.getIn(['appState', 'share', 'tables', 'receiverForm', 'recipients'])
|
||||
}
|
||||
|
||||
getLoadTableRequestPayload (tableState, receiver) {
|
||||
let payload = super.getLoadTableRequestPayload(tableState)
|
||||
if (receiver) {
|
||||
payload.groupId = receiver.id
|
||||
}
|
||||
return payload
|
||||
}
|
||||
|
||||
getDataFromResponse (response, receiver) {
|
||||
const data = response['recipients']
|
||||
this.addDataColumn(data.data, 'enrolled', receiver.recipients)
|
||||
return data
|
||||
}
|
||||
}
|
||||
|
||||
const instance = new ReceiverRecipientsTable()
|
||||
instance.init()
|
||||
export default instance
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
import ReceiverFormTable from './receiverFormTable'
|
||||
import * as api from '../../../../../../api/notificationsApi'
|
||||
|
||||
class ReceiverSubscriptionsTable extends ReceiverFormTable {
|
||||
|
||||
constructor () {
|
||||
super(api)
|
||||
}
|
||||
|
||||
getNamespace () {
|
||||
return '[Receiver form subscriptions table]'
|
||||
}
|
||||
|
||||
getTableState (state) {
|
||||
return state.getIn(['appState', 'share', 'tables', 'receiverForm', 'subscriptions'])
|
||||
}
|
||||
|
||||
getLoadTableRequestPayload (tableState, receiver) {
|
||||
let payload = super.getLoadTableRequestPayload(tableState)
|
||||
if (receiver) {
|
||||
payload.entityId = receiver.id
|
||||
}
|
||||
return payload
|
||||
}
|
||||
|
||||
getDataFromResponse (response, receiver) {
|
||||
const data = response.notifications
|
||||
this.addDataColumn(data.data, 'subscribed', receiver.subscriptions)
|
||||
return data
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const instance = new ReceiverSubscriptionsTable()
|
||||
instance.init()
|
||||
export default instance
|
||||
Reference in New Issue
Block a user