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