ft/adds autologin after register
This commit is contained in:
parent
b7a189e409
commit
496b81a5f5
@ -1,10 +1,14 @@
|
|||||||
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:app/data/database.dart';
|
import 'package:app/data/database.dart';
|
||||||
import 'package:app/pb/account.pb.dart';
|
import 'package:app/pb/account.pb.dart';
|
||||||
import 'package:app/pb/rpc_create_account.pb.dart';
|
import 'package:app/pb/rpc_create_account.pb.dart';
|
||||||
|
import 'package:app/pb/rpc_get_account.pb.dart';
|
||||||
import 'package:app/pb/rpc_get_account_info.pb.dart';
|
import 'package:app/pb/rpc_get_account_info.pb.dart';
|
||||||
import 'package:app/pb/rpc_login.pb.dart';
|
import 'package:app/pb/rpc_login.pb.dart';
|
||||||
import 'package:app/pb/rpc_refresh_token.pb.dart';
|
import 'package:app/pb/rpc_refresh_token.pb.dart';
|
||||||
import 'package:app/pb/service_df.pbgrpc.dart';
|
import 'package:app/pb/service_df.pbgrpc.dart';
|
||||||
|
import 'package:fixnum/fixnum.dart';
|
||||||
import 'package:grpc/grpc.dart';
|
import 'package:grpc/grpc.dart';
|
||||||
|
|
||||||
class GClient {
|
class GClient {
|
||||||
@ -18,7 +22,7 @@ class GClient {
|
|||||||
Map<String, String> metadata = {'Authorization': ''};
|
Map<String, String> metadata = {'Authorization': ''};
|
||||||
|
|
||||||
late Session session;
|
late Session session;
|
||||||
late Account account;
|
Account? account;
|
||||||
|
|
||||||
static Future<GClient> get client async {
|
static Future<GClient> get client async {
|
||||||
Session s = await Session.session;
|
Session s = await Session.session;
|
||||||
@ -64,11 +68,11 @@ class GClient {
|
|||||||
));
|
));
|
||||||
account = response.account;
|
account = response.account;
|
||||||
return response;
|
return response;
|
||||||
} on GrpcError catch (e) {
|
} on GrpcError catch (err) {
|
||||||
onError(error: e);
|
onError(error: err);
|
||||||
print('GRPC ERROR: ${e.message}');
|
print('GRPC ERROR: ${err.message}');
|
||||||
} catch (e) {
|
} catch (err) {
|
||||||
print('ERROR: $e');
|
print('ERROR: $err');
|
||||||
}
|
}
|
||||||
return CreateAccountResponse();
|
return CreateAccountResponse();
|
||||||
}
|
}
|
||||||
@ -96,12 +100,12 @@ class GClient {
|
|||||||
metadata['Authorization'] = 'Bearer ${response.accessToken}';
|
metadata['Authorization'] = 'Bearer ${response.accessToken}';
|
||||||
onSuccess();
|
onSuccess();
|
||||||
return response;
|
return response;
|
||||||
} on GrpcError catch (e) {
|
} on GrpcError catch (err) {
|
||||||
print('caught error: ${e.message}');
|
print('caught error: ${err.message}');
|
||||||
metadata['Authorization'] = '';
|
metadata['Authorization'] = '';
|
||||||
onError(error: e);
|
onError(error: err);
|
||||||
} catch (e) {
|
} catch (err) {
|
||||||
print('caught error: $e');
|
print('caught error: $err');
|
||||||
metadata['Authorization'] = '';
|
metadata['Authorization'] = '';
|
||||||
onError();
|
onError();
|
||||||
}
|
}
|
||||||
@ -128,12 +132,36 @@ class GClient {
|
|||||||
session.accessToken = response.accessToken;
|
session.accessToken = response.accessToken;
|
||||||
session.insertSession(session);
|
session.insertSession(session);
|
||||||
return true;
|
return true;
|
||||||
} on GrpcError catch (e) {
|
} on GrpcError catch (err) {
|
||||||
print('caught grpc error: $e');
|
print('caught grpc error: $err');
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<GetAccountResponse> getAccount(
|
||||||
|
{required Int64 accountId,
|
||||||
|
required Function({GrpcError? err}) onError}) async {
|
||||||
|
GetAccountResponse response = GetAccountResponse();
|
||||||
|
try {
|
||||||
|
response = await stub.getAccount(GetAccountRequest(
|
||||||
|
id: accountId,
|
||||||
|
));
|
||||||
|
account = response.account;
|
||||||
|
} on GrpcError catch (err) {
|
||||||
|
if (err.code == 16) {
|
||||||
|
log(err.toString());
|
||||||
|
onError(err: err);
|
||||||
|
} else {
|
||||||
|
log(err.toString());
|
||||||
|
onError();
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
log(err.toString());
|
||||||
|
onError();
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
Future<GetAccountInfoResponse> getAccountInfo(GetAccountInfoRequest request,
|
Future<GetAccountInfoResponse> getAccountInfo(GetAccountInfoRequest request,
|
||||||
{required Function({String msg}) onError}) async {
|
{required Function({String msg}) onError}) async {
|
||||||
GetAccountInfoResponse response = GetAccountInfoResponse();
|
GetAccountInfoResponse response = GetAccountInfoResponse();
|
||||||
@ -146,16 +174,16 @@ class GClient {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
return response;
|
return response;
|
||||||
} on GrpcError catch (e) {
|
} on GrpcError catch (err) {
|
||||||
print('caught grpc error: ${e.message} [${e.code}]');
|
print('caught grpc error: ${err.message} [${err.code}]');
|
||||||
if (e.code == 16) {
|
if (err.code == 16) {
|
||||||
onError(msg: 'Sitzung ist abgelaufen.\nBitte loggen Sie sich neu ein.');
|
onError(msg: 'Sitzung ist abgelaufen.\nBitte loggen Sie sich neu ein.');
|
||||||
} else {
|
} else {
|
||||||
onError(msg: e.message != null ? e.message! : 'Interner Fehler');
|
onError(msg: err.message != null ? err.message! : 'Interner Fehler');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (err) {
|
||||||
print('caught error: $e');
|
print('caught error: $err');
|
||||||
onError();
|
onError(msg: err.toString());
|
||||||
}
|
}
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
@ -261,6 +261,65 @@ class _RegisterPageState extends State<RegisterPage> {
|
|||||||
.then(
|
.then(
|
||||||
(r) {
|
(r) {
|
||||||
if (r.account.secretKey != '') {
|
if (r.account.secretKey != '') {
|
||||||
|
widget.client
|
||||||
|
.login(
|
||||||
|
email: mailController.text,
|
||||||
|
password:
|
||||||
|
passwordController.text,
|
||||||
|
onError: (
|
||||||
|
{GrpcError? error}) {},
|
||||||
|
onSuccess: () {})
|
||||||
|
.then((resp) {
|
||||||
|
widget.client.getAccount(
|
||||||
|
accountId: r.account.id,
|
||||||
|
onError: ({GrpcError? err}) {
|
||||||
|
_setLoading(false);
|
||||||
|
ScaffoldMessenger.of(context)
|
||||||
|
.showSnackBar(
|
||||||
|
SnackBar(
|
||||||
|
content: const Text(
|
||||||
|
'Login fehlgeschlagen',
|
||||||
|
),
|
||||||
|
action: SnackBarAction(
|
||||||
|
textColor: Colors.grey,
|
||||||
|
label: 'Details',
|
||||||
|
onPressed: () {
|
||||||
|
showDialog(
|
||||||
|
context: context,
|
||||||
|
builder: (context) {
|
||||||
|
return AlertDialog(
|
||||||
|
content: err !=
|
||||||
|
null
|
||||||
|
? Text(
|
||||||
|
'Hoppla! Da ist etwas schief gelaufen..\n\n${err.message}',
|
||||||
|
textAlign:
|
||||||
|
TextAlign.center,
|
||||||
|
style: const TextStyle(
|
||||||
|
color:
|
||||||
|
Colors.black),
|
||||||
|
)
|
||||||
|
: const Text(
|
||||||
|
'Interner Fehler',
|
||||||
|
textAlign:
|
||||||
|
TextAlign.center,
|
||||||
|
style: TextStyle(
|
||||||
|
color:
|
||||||
|
Colors.black),
|
||||||
|
),
|
||||||
|
icon:
|
||||||
|
const Icon(
|
||||||
|
Icons.error,
|
||||||
|
color: Colors
|
||||||
|
.black,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
Navigator.pushAndRemoveUntil(
|
Navigator.pushAndRemoveUntil(
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
|
@ -308,6 +308,19 @@ class _StartPageState extends State<StartPage> {
|
|||||||
'lib/assets/logo_300x200.png',
|
'lib/assets/logo_300x200.png',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
if (widget.client.account != null &&
|
||||||
|
!widget.client.account!.emailVerified)
|
||||||
|
Container(
|
||||||
|
height: 120,
|
||||||
|
width: double.infinity,
|
||||||
|
padding:
|
||||||
|
const EdgeInsets.symmetric(vertical: 20, horizontal: 10),
|
||||||
|
child: Card(
|
||||||
|
color: Colors.brown.shade300,
|
||||||
|
child: const Text(
|
||||||
|
'Deine E-Mail Adresse ist noch nicht validiert.'),
|
||||||
|
),
|
||||||
|
),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 40,
|
height: 40,
|
||||||
),
|
),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user