Create account
This commit is contained in:
parent
c3b060451a
commit
6e8d419e7f
|
|
@ -2,6 +2,7 @@ import 'dart:async';
|
|||
import 'dart:convert';
|
||||
import 'dart:core';
|
||||
import 'package:invoiceninja_flutter/.env.dart';
|
||||
import 'package:invoiceninja_flutter/constants.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/serializers.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/entities.dart';
|
||||
import 'package:invoiceninja_flutter/data/web_client.dart';
|
||||
|
|
@ -14,6 +15,22 @@ class AuthRepository {
|
|||
|
||||
final WebClient webClient;
|
||||
|
||||
Future<LoginResponseData> signUp(
|
||||
{String email,
|
||||
String password,
|
||||
String platform,}) async {
|
||||
final credentials = {
|
||||
'token_name': 'invoice-ninja-$platform-app',
|
||||
'api_secret': Config.API_SECRET,
|
||||
'email': email,
|
||||
'password': password,
|
||||
};
|
||||
|
||||
final url = formatApiUrl(kAppUrl) + '/register';
|
||||
|
||||
return sendRequest(url: url, data: credentials);
|
||||
}
|
||||
|
||||
Future<LoginResponseData> login(
|
||||
{String email,
|
||||
String password,
|
||||
|
|
|
|||
|
|
@ -75,4 +75,18 @@ class UserLoginFailure implements StopLoading {
|
|||
|
||||
class UserLogout implements PersistData, PersistUI {}
|
||||
|
||||
class UserSignUpRequest implements StartLoading {
|
||||
UserSignUpRequest({
|
||||
this.completer,
|
||||
this.email,
|
||||
this.password,
|
||||
this.platform,
|
||||
});
|
||||
|
||||
final Completer completer;
|
||||
final String email;
|
||||
final String password;
|
||||
final String platform;
|
||||
}
|
||||
|
||||
class ClearAuthError {}
|
||||
|
|
|
|||
|
|
@ -15,18 +15,21 @@ List<Middleware<AppState>> createStoreAuthMiddleware([
|
|||
]) {
|
||||
final loginInit = _createLoginInit();
|
||||
final loginRequest = _createLoginRequest(repository);
|
||||
final signUpRequest = _createSignUpRequest(repository);
|
||||
final oauthRequest = _createOAuthRequest(repository);
|
||||
final refreshRequest = _createRefreshRequest(repository);
|
||||
|
||||
return [
|
||||
TypedMiddleware<AppState, LoadUserLogin>(loginInit),
|
||||
TypedMiddleware<AppState, UserLoginRequest>(loginRequest),
|
||||
TypedMiddleware<AppState, UserSignUpRequest>(signUpRequest),
|
||||
TypedMiddleware<AppState, OAuthLoginRequest>(oauthRequest),
|
||||
TypedMiddleware<AppState, RefreshData>(refreshRequest),
|
||||
];
|
||||
}
|
||||
|
||||
void _saveAuthLocal({String email, String url, String secret}) async {
|
||||
void _saveAuthLocal(
|
||||
{String email = '', String url = '', String secret = ''}) async {
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
prefs.setString(kSharedPrefEmail, email ?? '');
|
||||
|
||||
|
|
@ -109,6 +112,32 @@ Middleware<AppState> _createLoginRequest(AuthRepository repository) {
|
|||
};
|
||||
}
|
||||
|
||||
Middleware<AppState> _createSignUpRequest(AuthRepository repository) {
|
||||
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
||||
final action = dynamicAction as UserSignUpRequest;
|
||||
|
||||
repository
|
||||
.signUp(
|
||||
email: action.email,
|
||||
password: action.password,
|
||||
platform: action.platform,
|
||||
)
|
||||
.then((data) {
|
||||
_saveAuthLocal(
|
||||
email: action.email,
|
||||
);
|
||||
|
||||
store.dispatch(
|
||||
LoadAccountSuccess(completer: action.completer, loginResponse: data));
|
||||
}).catchError((Object error) {
|
||||
print(error);
|
||||
store.dispatch(UserLoginFailure(error));
|
||||
});
|
||||
|
||||
next(action);
|
||||
};
|
||||
}
|
||||
|
||||
Middleware<AppState> _createOAuthRequest(AuthRepository repository) {
|
||||
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
||||
final action = dynamicAction as OAuthLoginRequest;
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ class LoginVM {
|
|||
bool isLoading;
|
||||
AuthState authState;
|
||||
final Function() onCancel2FAPressed;
|
||||
|
||||
final Function(BuildContext,
|
||||
{@required String email,
|
||||
@required String password,
|
||||
|
|
@ -53,6 +54,7 @@ class LoginVM {
|
|||
@required String secret,
|
||||
@required String oneTimePassword,
|
||||
@required bool createAccount}) onLoginPressed;
|
||||
|
||||
final Function(BuildContext, String, String) onGoogleLoginPressed;
|
||||
|
||||
static LoginVM fromStore(Store<AppState> store) {
|
||||
|
|
@ -118,7 +120,12 @@ class LoginVM {
|
|||
|
||||
final Completer<Null> completer = Completer<Null>();
|
||||
if (createAccount) {
|
||||
// TODO
|
||||
store.dispatch(UserSignUpRequest(
|
||||
completer: completer,
|
||||
email: email.trim(),
|
||||
password: password.trim(),
|
||||
platform: getPlatform(context),
|
||||
));
|
||||
} else {
|
||||
store.dispatch(UserLoginRequest(
|
||||
completer: completer,
|
||||
|
|
|
|||
Loading…
Reference in New Issue