at the end of the day, it was inevitable

This commit is contained in:
Mo Elzubeir
2022-12-09 08:36:26 -06:00
commit 1218570914
1768 changed files with 887087 additions and 0 deletions
@@ -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
@@ -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
@@ -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