Skip to content

Commit aed35da

Browse files
authored
Merge pull request #30 from Ishad-M-I-M/main
Error handling in settings page
2 parents 09eb6ab + 53ca67d commit aed35da

File tree

2 files changed

+32
-18
lines changed

2 files changed

+32
-18
lines changed

Diff for: lib/bloc/settings/settings_bloc.dart

+27-17
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,45 @@ import '../../services/secure_storage_service.dart';
55
import '../../services/user_contract_service.dart';
66

77
part 'settings_event.dart';
8-
98
part 'settings_state.dart';
109

1110
class SettingsBloc extends Bloc<SettingsEvent, SettingsState> {
1211
SettingsBloc() : super(Initial()) {
1312
on<LoadEvent>((event, emit) async {
1413
emit(Loading());
15-
var privateKey = await SecureStorageService.get("private-key") as String;
16-
var contractAddress =
17-
await SecureStorageService.get("contract-address") as String;
1814

19-
var service = UserContractService();
20-
var userInfo = await service.getAll(contractAddress, privateKey);
21-
emit(Loaded(
22-
privateKey: privateKey,
23-
contractAddress: contractAddress,
24-
email: userInfo['Email'] as String,
25-
phone: userInfo['Phone'] as String));
15+
try {
16+
var privateKey =
17+
await SecureStorageService.get("private-key") as String;
18+
var contractAddress =
19+
await SecureStorageService.get("contract-address") as String;
20+
21+
var service = UserContractService();
22+
var userInfo = await service.getAll(contractAddress, privateKey).timeout(const Duration(seconds: 10), onTimeout: (){
23+
throw Exception("Timeout");
24+
});
25+
emit(Loaded(
26+
privateKey: privateKey,
27+
contractAddress: contractAddress,
28+
email: userInfo['Email'] as String,
29+
phone: userInfo['Phone'] as String));
30+
} catch (e) {
31+
emit(Failed(e.toString()));
32+
}
2633
});
2734

2835
on<EditEvent>((event, emit) async {
2936
emit(Loading());
30-
try{
37+
try {
3138
var service = UserContractService();
32-
if (event.editedProperty == "email"){
33-
await service.setEmail(event.email, contractAddress: event.contractAddress, privateKey: event.privateKey);
34-
}
35-
else if(event.editedProperty == "phone"){
36-
await service.setMobile(event.phone, contractAddress: event.contractAddress, privateKey: event.privateKey);
39+
if (event.editedProperty == "email") {
40+
await service.setEmail(event.email,
41+
contractAddress: event.contractAddress,
42+
privateKey: event.privateKey);
43+
} else if (event.editedProperty == "phone") {
44+
await service.setMobile(event.phone,
45+
contractAddress: event.contractAddress,
46+
privateKey: event.privateKey);
3747
}
3848
else{
3949
throw Exception("Unexpected Error");

Diff for: lib/pages/settings_page.dart

+5-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ class _SettingsPageState extends State<SettingsPage> {
4040
create: (context) => _settings_bloc,
4141
child: BlocConsumer<SettingsBloc, SettingsState>(
4242
listener: (context, state) {
43-
// TODO: implement listener
43+
if(state is Failed){
44+
Navigator.popAndPushNamed(context, '/error', arguments: {
45+
"message": state.message
46+
});
47+
}
4448
},
4549
builder: (context, state) {
4650
if (state is Initial || state is Loading) {

0 commit comments

Comments
 (0)