import { TActionInviteLinks } from '../actions/inviteLinks'; import { INVITE_LINKS } from '../actions/actionsTypes'; export type TInvite = { url: string; expires: string; maxUses: number; uses: number; [x: string]: any }; export interface IInviteLinks { token: string; days: number; maxUses: number; invite: TInvite; } export const initialState: IInviteLinks = { token: '', days: 1, maxUses: 0, invite: { url: '', expires: '', maxUses: 0, uses: 0 } }; export default (state = initialState, action: TActionInviteLinks): IInviteLinks => { switch (action.type) { case INVITE_LINKS.SET_TOKEN: return { ...state, token: action.token }; case INVITE_LINKS.SET_PARAMS: return { ...state, ...action.params }; case INVITE_LINKS.SET_INVITE: return { ...state, invite: action.invite }; case INVITE_LINKS.REQUEST: return state; case INVITE_LINKS.SUCCESS: return initialState; case INVITE_LINKS.FAILURE: return initialState; case INVITE_LINKS.CLEAR: return initialState; default: return state; } };