Rocket.Chat.ReactNative/app/reducers/createChannel.ts

62 lines
1.2 KiB
TypeScript

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;
}
}