openreplay/frontend/app/duck/announcements.js
2021-05-01 15:12:01 +05:30

45 lines
No EOL
1.1 KiB
JavaScript

import { List, Map } from 'immutable';
import Announcement from 'Types/announcement';
import { RequestTypes } from './requestStateCreator';
import { mergeReducers } from './funcTools/tools';
import { createRequestReducer } from './funcTools/request';
import {
createCRUDReducer,
getCRUDRequestTypes,
createFetchList
} from './funcTools/crud';
const name = 'announcement';
const idKey = 'id';
const SET_LAST_READ = new RequestTypes('announcement/SET_LAST_READ');
const initialState = Map({
list: List()
});
const reducer = (state = initialState, action = {}) => {
switch (action.type) {
case SET_LAST_READ.SUCCESS:
return state.update('list', (list) => list.map(i => ({...i.toJS(), viewed: true })));
}
return state;
};
export function setLastRead() {
return {
types: SET_LAST_READ.toArray(),
call: client => client.get(`/announcements/view`),
};
}
export const fetchList = createFetchList(name);
export default mergeReducers(
reducer,
createCRUDReducer(name, Announcement, idKey),
createRequestReducer({
...getCRUDRequestTypes(name),
}),
);