openreplay/frontend/app/duck/member.js

40 lines
1.2 KiB
JavaScript

import { Map } from 'immutable';
import Member from 'Types/member';
import crudDuckGenerator from './tools/crudDuck';
import { RequestTypes } from 'Duck/requestStateCreator';
import { reduceDucks } from 'Duck/tools';
const GENERATE_LINK = new RequestTypes('member/GENERATE_LINK');
const crudDuck = crudDuckGenerator('client/member', Member, { idKey: 'id' });
export const { fetchList, init, edit, remove, } = crudDuck.actions;
const initialState = Map({
definedPercent: 0,
});
const reducer = (state = initialState, action = {}) => {
switch (action.type) {
case GENERATE_LINK.SUCCESS:
return state.update(
'list',
list => list
.map(member => {
if(member.id === action.id) {
return Member({...member.toJS(), invitationLink: action.data.invitationLink })
}
return member
})
);
}
return state;
};
export function save(instance) {
return {
types: crudDuck.actionTypes.SAVE.toArray(),
call: client => client.put( instance.id ? `/client/members/${ instance.id }` : '/client/members', instance.toData()),
};
}
export default reduceDucks(crudDuck, { initialState, reducer }).reducer;