diff --git a/lib/data/repositories/auth_repository.dart b/lib/data/repositories/auth_repository.dart index 032d1d5a3..b59c24ae5 100644 --- a/lib/data/repositories/auth_repository.dart +++ b/lib/data/repositories/auth_repository.dart @@ -21,10 +21,11 @@ class AuthRepository { final WebClient webClient; Future signUp({ - String url, - String email, - String password, - String secret, + @required String url, + @required String email, + @required String password, + @required String secret, + @required String referralCode, }) async { final credentials = { 'email': email, @@ -39,12 +40,15 @@ class AuthRepository { } return sendRequest( - url: formatApiUrl(url) + '/signup', data: credentials, secret: secret); + url: formatApiUrl(url) + '/signup?rc=$referralCode', + data: credentials, + secret: secret); } Future oauthSignUp({ @required String idToken, @required String accessToken, + @required String referralCode, }) async { final credentials = { 'terms_of_service': true, @@ -56,7 +60,8 @@ class AuthRepository { }; return sendRequest( - url: formatApiUrl(Constants.hostedApiUrl) + '/oauth_login?create=true', + url: formatApiUrl(Constants.hostedApiUrl) + + '/oauth_login?create=true&rc=$referralCode', data: credentials, secret: Config.API_SECRET); } diff --git a/lib/redux/app/app_state.dart b/lib/redux/app/app_state.dart index 11082bbcc..468c4ad9d 100644 --- a/lib/redux/app/app_state.dart +++ b/lib/redux/app/app_state.dart @@ -94,8 +94,8 @@ abstract class AppState implements Built { factory AppState({ @required PrefState prefState, @required bool reportErrors, - @required String referralCode, String url, + String referralCode, String currentRoute, }) { return _$AppState._( diff --git a/lib/redux/auth/auth_middleware.dart b/lib/redux/auth/auth_middleware.dart index 1312d1b4f..f8d21768b 100644 --- a/lib/redux/auth/auth_middleware.dart +++ b/lib/redux/auth/auth_middleware.dart @@ -124,12 +124,13 @@ Middleware _createLoginRequest(AuthRepository repository) { Middleware _createSignUpRequest(AuthRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as UserSignUpRequest; + final state = store.state; repository .signUp( - email: action.email, - password: action.password, - ) + email: action.email, + password: action.password, + referralCode: state.authState.referralCode) .then((data) { _saveAuthLocal(kAppProductionUrl); @@ -188,12 +189,13 @@ Middleware _createOAuthLoginRequest(AuthRepository repository) { Middleware _createOAuthSignUpRequest(AuthRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { final action = dynamicAction as OAuthSignUpRequest; + final state = store.state; repository .oauthSignUp( - accessToken: action.accessToken, - idToken: action.idToken, - ) + accessToken: action.accessToken, + idToken: action.idToken, + referralCode: state.authState.referralCode) .then((data) { _saveAuthLocal(kAppProductionUrl); diff --git a/lib/redux/auth/auth_state.dart b/lib/redux/auth/auth_state.dart index 22570025e..b1cfa90ac 100644 --- a/lib/redux/auth/auth_state.dart +++ b/lib/redux/auth/auth_state.dart @@ -15,7 +15,7 @@ abstract class AuthState implements Built { isAuthenticated: false, isInitialized: false, lastEnteredPasswordAt: 0, - referralCode: referralCode, + referralCode: referralCode ?? '', ); }