verdnatura-chat/app/reducers/room.ts

63 lines
1.1 KiB
TypeScript

import { TActionsRoom } from '../actions/room';
import { ROOM } from '../actions/actionsTypes';
export type IRoomRecord = string[];
export interface IRoom {
rid: string;
isDeleting: boolean;
rooms: IRoomRecord;
}
export const initialState: IRoom = {
rid: '',
isDeleting: false,
rooms: []
};
export default function (state = initialState, action: TActionsRoom): IRoom {
switch (action.type) {
case ROOM.SUBSCRIBE:
return {
...state,
rooms: [action.rid, ...state.rooms]
};
case ROOM.UNSUBSCRIBE:
return {
...state,
rooms: state.rooms.filter(rid => rid !== action.rid)
};
case ROOM.LEAVE:
return {
...state,
rid: action.room.rid,
isDeleting: true
};
case ROOM.DELETE:
return {
...state,
rid: action.room.rid,
isDeleting: true
};
case ROOM.CLOSE:
return {
...state,
rid: action.rid,
isDeleting: true
};
case ROOM.FORWARD:
return {
...state,
rid: action.rid,
isDeleting: true
};
case ROOM.REMOVED:
return {
...state,
isDeleting: false
};
default:
return state;
}
}