62 lines
1.2 KiB
TypeScript
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;
|
||
|
}
|
||
|
}
|