import { TApplicationActions } from '../definitions'; import { CREATE_CHANNEL } from '../actions/actionsTypes'; interface ICreateChannelResult { name: string; users: string[]; teamId: string; type: boolean; readOnly: boolean; encrypted: boolean; broadcast: boolean; isTeam: boolean; } interface ICreateChannelResultOnlyGroup { group: boolean; } export type TCreateChannelResult = ICreateChannelResult | ICreateChannelResultOnlyGroup; export interface ICreateChannel { isFetching: boolean; failure: boolean; result: TCreateChannelResult | {}; error: any; } export const initialState: ICreateChannel = { isFetching: false, failure: false, result: {}, error: {} }; export default function (state = initialState, action: TApplicationActions): ICreateChannel { switch (action.type) { case CREATE_CHANNEL.REQUEST: return { ...state, isFetching: true, failure: false, error: {} }; case CREATE_CHANNEL.SUCCESS: return { ...state, isFetching: false, failure: false, result: action.data }; case CREATE_CHANNEL.FAILURE: return { ...state, isFetching: false, failure: true, error: action.err }; default: return state; } }