Fix parsing of json to Map<String, dynamic> for ionia api. Update sing in and verify email methods for ionia api. (#604)
mkyq committed
Nov 7, 2022 at 13:16 UTC
8981ebad566ecbe62ecb2ec766d86501663444b7
3 files changed
+16
-22
lib/ionia/ionia_api.dart
+13
-17
@@ -36,8 +36,8 @@ class IoniaApi {
36
throw Exception('Unexpected http status: ${response.statusCode}');
37
}
38
39
- final bodyJson = json.decode(response.body) as Map<String, Object>;
40
- final data = bodyJson['Data'] as Map<String, Object>;
39
+ final bodyJson = json.decode(response.body) as Map<String, dynamic>;
40
+ final data = bodyJson['Data'] as Map<String, dynamic>;
41
final isSuccessful = bodyJson['Successful'] as bool;
42
43
if (!isSuccessful) {
@@ -50,13 +50,11 @@ class IoniaApi {
50
// Verify email
51
52
Future<IoniaUserCredentials> verifyEmail({
53
- required String username,
53
required String email,
54
required String code,
55
required String clientId}) async {
56
final headers = <String, String>{
57
'clientId': clientId,
59
- 'username': username,
58
'EmailAddress': email};
59
final query = <String, String>{'verificationCode': code};
60
final uri = verifyEmailUri.replace(queryParameters: query);
@@ -66,8 +64,8 @@ class IoniaApi {
64
throw Exception('Unexpected http status: ${response.statusCode}');
65
}
66
69
- final bodyJson = json.decode(response.body) as Map<String, Object>;
70
- final data = bodyJson['Data'] as Map<String, Object>;
67
+ final bodyJson = json.decode(response.body) as Map<String, dynamic>;
68
+ final data = bodyJson['Data'] as Map<String, dynamic>;
69
final isSuccessful = bodyJson['Successful'] as bool;
70
71
if (!isSuccessful) {
@@ -75,13 +73,13 @@ class IoniaApi {
73
}
74
75
final password = data['password'] as String;
78
- username = data['username'] as String;
76
+ final username = data['username'] as String;
77
return IoniaUserCredentials(username, password);
78
}
79
80
// Sign In
81
84
- Future<String> signIn(String email, {required String clientId}) async {
82
+ Future<void> signIn(String email, {required String clientId}) async {
83
final headers = <String, String>{'clientId': clientId};
84
final query = <String, String>{'emailAddress': email};
85
final uri = signInUri.replace(queryParameters: query);
@@ -91,15 +89,13 @@ class IoniaApi {
89
throw Exception('Unexpected http status: ${response.statusCode}');
90
}
91
94
- final bodyJson = json.decode(response.body) as Map<String, Object>;
95
- final data = bodyJson['Data'] as Map<String, Object>;
92
+ final bodyJson = json.decode(response.body) as Map<String, dynamic>;
93
+ final data = bodyJson['Data'] as Map<String, dynamic>;
94
final isSuccessful = bodyJson['Successful'] as bool;
95
96
if (!isSuccessful) {
97
throw Exception(data['ErrorMessage'] as String);
98
}
101
-
102
- return data['username'] as String;
99
}
100
101
// Get virtual card
@@ -118,15 +114,15 @@ class IoniaApi {
114
throw Exception('Unexpected http status: ${response.statusCode}');
115
}
116
121
- final bodyJson = json.decode(response.body) as Map<String, Object>;
122
- final data = bodyJson['Data'] as Map<String, Object>;
117
+ final bodyJson = json.decode(response.body) as Map<String, dynamic>;
118
+ final data = bodyJson['Data'] as Map<String, dynamic>;
119
final isSuccessful = bodyJson['Successful'] as bool;
120
121
if (!isSuccessful) {
122
throw Exception(data['message'] as String);
123
}
124
129
- final virtualCard = data['VirtualCard'] as Map<String, Object>;
125
+ final virtualCard = data['VirtualCard'] as Map<String, dynamic>;
126
return IoniaVirtualCard.fromMap(virtualCard);
127
}
128
@@ -146,8 +142,8 @@ class IoniaApi {
142
throw Exception('Unexpected http status: ${response.statusCode}');
143
}
144
149
- final bodyJson = json.decode(response.body) as Map<String, Object>;
150
- final data = bodyJson['Data'] as Map<String, Object>;
145
+ final bodyJson = json.decode(response.body) as Map<String, dynamic>;
146
+ final data = bodyJson['Data'] as Map<String, dynamic>;
147
final isSuccessful = bodyJson['Successful'] as bool? ?? false;
148
149
if (!isSuccessful) {
lib/ionia/ionia_service.dart
+2
-4
@@ -31,9 +31,8 @@ class IoniaService {
31
// Verify email
32
33
Future<void> verifyEmail(String code) async {
34
- final username = (await secureStorage.read(key: ioniaUsernameStorageKey))!;
34
final email = (await secureStorage.read(key: ioniaEmailStorageKey))!;
36
- final credentials = await ioniaApi.verifyEmail(email: email, username: username, code: code, clientId: clientId);
35
+ final credentials = await ioniaApi.verifyEmail(email: email, code: code, clientId: clientId);
36
await secureStorage.write(key: ioniaPasswordStorageKey, value: credentials.password);
37
await secureStorage.write(key: ioniaUsernameStorageKey, value: credentials.username);
38
}
@@ -41,9 +40,8 @@ class IoniaService {
40
// Sign In
41
42
Future<void> signIn(String email) async {
44
- final username = await ioniaApi.signIn(email, clientId: clientId);
43
+ await ioniaApi.signIn(email, clientId: clientId);
44
await secureStorage.write(key: ioniaEmailStorageKey, value: email);
46
- await secureStorage.write(key: ioniaUsernameStorageKey, value: username);
45
}
46
47
Future<String> getUserEmail() async {
lib/ionia/ionia_virtual_card.dart
+1
-1
@@ -11,7 +11,7 @@ class IoniaVirtualCard {
11
required this.fundsLimit,
12
required this.spendLimit});
13
14
- factory IoniaVirtualCard.fromMap(Map<String, Object> source) {
14
+ factory IoniaVirtualCard.fromMap(Map<String, dynamic> source) {
15
final created = source['created'] as String;
16
final createdAt = DateTime.tryParse(created);
17