import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:redux/redux.dart'; import 'package:invoiceninja_flutter/redux/auth/auth_actions.dart'; import 'package:invoiceninja_flutter/redux/auth/auth_state.dart'; Reducer authReducer = combineReducers([ TypedReducer(userLoadUrlReducer), TypedReducer(userLoginRequestReducer), TypedReducer(oauthLoginRequestReducer), TypedReducer(oauthSignUpRequestReducer), TypedReducer(userSignUpRequestReducer), TypedReducer(userLoginSuccessReducer), TypedReducer(userVerifiedPasswordReducer), ]); AuthState userLoadUrlReducer(AuthState authState, UserLoadUrl action) { return authState.rebuild((b) => b..url = formatApiUrl(action.url)); } AuthState userSignUpRequestReducer( AuthState authState, UserSignUpRequest action) { return authState.rebuild((b) => b ..url = formatApiUrl(kAppProductionUrl) ..secret = ''); } AuthState userLoginRequestReducer( AuthState authState, UserLoginRequest action) { return authState.rebuild((b) => b ..url = formatApiUrl(action.url) ..secret = action.secret ..email = action.email ..password = action.password); } AuthState oauthLoginRequestReducer( AuthState authState, OAuthLoginRequest action) { return authState.rebuild((b) => b ..url = formatApiUrl(action.url) ..secret = action.secret); } AuthState oauthSignUpRequestReducer( AuthState authState, OAuthSignUpRequest action) { return authState.rebuild((b) => b ..url = formatApiUrl(kAppProductionUrl) ..secret = ''); } AuthState userLoginSuccessReducer( AuthState authState, UserLoginSuccess action) { return authState.rebuild((b) => b ..isAuthenticated = true ..password = ''); } AuthState userVerifiedPasswordReducer( AuthState authState, UserVerifiedPassword action) { return authState.rebuild( (b) => b..lastEnteredPasswordAt = DateTime.now().millisecondsSinceEpoch); }