-
Notifications
You must be signed in to change notification settings - Fork 58
Expand file tree
/
Copy pathuser_info_credentials.dart
More file actions
111 lines (101 loc) · 2.85 KB
/
user_info_credentials.dart
File metadata and controls
111 lines (101 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
class UserIdentity {
final String id;
final String connection;
final String provider;
final bool? isSocial;
final String? accessToken;
final String? accessTokenSecret;
final Map<String, dynamic>? _profileInfo;
UserIdentity({
required this.id,
required this.connection,
required this.provider,
this.isSocial,
this.accessToken,
this.accessTokenSecret,
Map<String, dynamic>? profileInfo})
: _profileInfo = profileInfo ;
factory UserIdentity.fromJson(final Map<String, dynamic> json)
=> UserIdentity(
connection: json['connection'] as String,
id: json['id'] as String,
isSocial: json['isSocial'] as bool?,
provider: json['provider'] as String,
accessToken: json['accessToken'] as String?,
accessTokenSecret: json['accessTokenSecret'] as String?,
profileInfo: json['profileInfo'] as Map<String, dynamic>?
);
}
class UserInfo {
final String? _id;
final List<UserIdentity>? _identities;
final Map<String, dynamic>? _extraInfo;
final Map<String, dynamic>? _userMetadata;
final Map<String, dynamic>? _appMetadata;
final String? name;
final String? nickname;
final String? pictureURL;
final String? email;
final bool? isEmailVerified;
final String? familyName;
final DateTime? createdAt;
final String? givenName;
UserInfo({
final String? id,
this.name,
this.nickname,
this.pictureURL,
this.email,
this.isEmailVerified,
this.familyName,
this.createdAt,
final List<UserIdentity>? identities,
final Map<String, dynamic>? extraInfo,
final Map<String, dynamic>? userMetadata,
final Map<String, dynamic>? appMetadata,
this.givenName,
})
: _id = id,
_identities = identities,
_extraInfo = extraInfo,
_userMetadata = userMetadata,
_appMetadata = appMetadata;
String? getId() {
if (_id != null) {
return _id;
}
return (_extraInfo != null && _extraInfo.containsKey('sub'))
? _extraInfo['sub'] as String?
: null;
}
Map<String, dynamic> getUserMetadata() =>
_userMetadata ?? {};
Map<String, dynamic> getAppMetadata() =>
_appMetadata ?? {};
List<UserIdentity> getIdentities() =>
_identities ?? [];
Map<String, dynamic> getExtraInfo() =>
_extraInfo ?? {};
factory UserInfo.fromJson(final Map<String, dynamic> json) =>
UserInfo(
id: json['id'] as String?,
name: json['name'] as String?,
nickname: json['nickname'] as String?,
pictureURL: json['pictureURL'] as String?,
email: json['email'] as String?,
isEmailVerified: json['isEmailVerified'] as bool?,
familyName: json['familyName'] as String?,
// Handle date parsing
createdAt: json['createdAt'] != null
? DateTime.parse(json['createdAt'] as String)
: null,
// Handle list of UserIdentity
identities: (json['identities'] as List<dynamic>?)
?.map((e) => UserIdentity.fromJson(e as Map<String, dynamic>))
.toList(),
extraInfo: Map<String, dynamic>.from(json['extraInfo'] as Map),
userMetadata: Map<String, dynamic>.from(json['userMetadata'] as Map),
appMetadata: Map<String, dynamic>.from(json['appMetadata'] as Map),
givenName: json['givenName'] as String?,
);
}