import { Action } from 'redux'; import { IUser } from '../definitions'; import * as types from './actionsTypes'; interface ICredentials { resume: string; user: string; password: string; } interface ILoginRequest extends Action { credentials: any; logoutOnError?: boolean; isFromWebView?: boolean; registerCustomFields?: any; } interface ILoginSuccess extends Action { user: Partial; } interface ILoginFailure extends Action { err: Partial; } interface ILogout extends Action { forcedByServer: boolean; message: string; } interface ISetUser extends Action { user: Partial; } interface ISetServices extends Action { data: Record; } interface ISetPreference extends Action { preference: Record; } interface ISetLocalAuthenticated extends Action { isLocalAuthenticated: boolean; } export type TActionsLogin = ILoginRequest & ILoginSuccess & ILoginFailure & ILogout & ISetUser & ISetServices & ISetPreference & ISetLocalAuthenticated; export function loginRequest( credentials: Partial, logoutOnError?: boolean, isFromWebView?: boolean, registerCustomFields?: any ): ILoginRequest { return { type: types.LOGIN.REQUEST, credentials, logoutOnError, isFromWebView, registerCustomFields }; } export function loginSuccess(user: Partial): ILoginSuccess { return { type: types.LOGIN.SUCCESS, user }; } export function loginFailure(err: Record): ILoginFailure { return { type: types.LOGIN.FAILURE, err }; } export function logout(forcedByServer = false, message = ''): ILogout { return { type: types.LOGOUT, forcedByServer, message }; } export function setUser(user: Partial): ISetUser { return { type: types.USER.SET, user }; } export function clearUser(): Action { return { type: types.USER.CLEAR }; } export function setLoginServices(data: Record): ISetServices { return { type: types.LOGIN.SET_SERVICES, data }; } export function setPreference(preference: Record): ISetPreference { return { type: types.LOGIN.SET_PREFERENCE, preference }; } export function setLocalAuthenticated(isLocalAuthenticated: boolean): ISetLocalAuthenticated { return { type: types.LOGIN.SET_LOCAL_AUTHENTICATED, isLocalAuthenticated }; } export function deleteAccount(): Action { return { type: types.DELETE_ACCOUNT }; }