UserService: Support to fetch user/details/v2

This commit is contained in:
Neeraj Gupta 2022-04-14 18:31:24 +05:30
parent 592af4d4d2
commit 9000974fb6
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1
2 changed files with 76 additions and 0 deletions

View file

@ -6,6 +6,7 @@ class UserDetails {
final int fileCount;
final int sharedCollectionsCount;
final Subscription subscription;
final FamilyData familyData;
UserDetails(
this.email,
@ -13,6 +14,7 @@ class UserDetails {
this.fileCount,
this.sharedCollectionsCount,
this.subscription,
this.familyData,
);
factory UserDetails.fromMap(Map<String, dynamic> map) {
@ -22,6 +24,7 @@ class UserDetails {
map['fileCount'] as int,
map['sharedCollectionsCount'] as int,
Subscription.fromMap(map['subscription']),
FamilyData.fromMap(map['familyData']),
);
}
@ -32,6 +35,61 @@ class UserDetails {
'fileCount': fileCount,
'sharedCollectionsCount': sharedCollectionsCount,
'subscription': subscription,
'familyData': familyData
};
}
}
class FamilyMember {
final String email;
final int usage;
final String id;
final bool isAdmin;
FamilyMember(this.email, this.usage, this.id, this.isAdmin);
factory FamilyMember.fromMap(Map<String, dynamic> map) {
return FamilyMember(
(map['email'] ?? '') as String,
map['usage'] as int,
map['id'] as String,
map['isAdmin'] as bool,
);
}
Map<String, dynamic> toMap() {
return {'email': email, 'usage': usage, 'id': id, 'isAdmin': isAdmin};
}
}
class FamilyData {
final List<FamilyMember> members;
// Storage available based on the family plan
final int storage;
final int expiry;
FamilyData(this.members, this.storage, this.expiry);
factory FamilyData.fromMap(Map<String, dynamic> map) {
if (map == null) {
return null;
}
assert(map['members'] != null && map['members'].length >= 0);
final members = List<FamilyMember>.from(
map['members'].map((x) => FamilyMember.fromMap(x)));
return FamilyData(
members,
map['storage'] as int,
map['expiry'] as int,
);
}
Map<String, dynamic> toMap() {
return {
'members': members.map((x) => x?.toMap())?.toList(),
'storage': storage,
'expiry': expiry
};
}
}

View file

@ -121,6 +121,24 @@ class UserService {
}
}
Future<UserDetails> getUserDetailsV2({bool memberCount = true}) async {
try {
final response = await _dio.get(
_config.getHttpEndpoint() +
"/users/details/v2?memoryCount=$memberCount",
options: Options(
headers: {
"X-Auth-Token": _config.getToken(),
},
),
);
return UserDetails.fromMap(response.data);
} on DioError catch (e) {
_logger.info(e);
rethrow;
}
}
Future<Sessions> getActiveSessions() async {
try {
final response = await _dio.get(