1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-19 00:05:16 +00:00

Add user profile route

This commit is contained in:
2021-04-26 09:33:54 +02:00
parent 5ab21bd63e
commit f92846cb76
8 changed files with 278 additions and 39 deletions

View File

@ -1,4 +1,6 @@
import 'package:comunic/helpers/groups_helper.dart';
import 'package:comunic/helpers/users_helper.dart';
import 'package:comunic/models/advanced_user_info.dart';
import 'package:comunic/models/api_request.dart';
import 'package:comunic/models/group.dart';
@ -14,4 +16,16 @@ class ForezGroupsHelper {
.map(GroupsHelper.getGroupFromAPI)
.toList();
}
/// Get advanced information about a Forez member
///
/// This methods throws an exception in case of failure
static Future<AdvancedUserInfo> getMemberInfo(int groupID, int userID) async {
final response = await APIRequest.withLogin("forez/get_member_info")
.addInt("group", groupID)
.addInt("user", userID)
.execWithThrowGetObject();
return UsersHelper.apiToAdvancedUserInfo(response);
}
}

View File

@ -151,36 +151,11 @@ class UsersHelper {
throw new GetUserAdvancedUserError(cause);
}
final data = response.getObject();
return AdvancedUserInfo(
id: data["userID"],
firstName: data["firstName"],
lastName: data["lastName"],
pageVisibility: data["publicPage"] == "false"
? UserPageVisibility.PRIVATE
: (data["openPage"] == "false"
? UserPageVisibility.PRIVATE
: UserPageVisibility.OPEN),
virtualDirectory:
data["virtualDirectory"] == "" ? null : data["virtualDirectory"],
accountImageURL: data["accountImage"],
emailAddress: data["email_address"],
customEmojies: _parseCustomEmojies(data["customEmojis"]),
publicNote: data["publicNote"],
canPostTexts: data["can_post_texts"],
isFriendsListPublic: data["friend_list_public"],
numberFriends: data["number_friends"],
accountCreationTime: data["account_creation_time"],
personalWebsite: data["personnalWebsite"],
location: data["location"],
likes: data["pageLikes"],
userLike: data["user_like_page"],
);
return apiToAdvancedUserInfo(response.getObject());
}
/// Parse the list of custom emojies
CustomEmojiesList _parseCustomEmojies(List<dynamic> list) {
static CustomEmojiesList _parseCustomEmojies(List<dynamic> list) {
final l = list.cast<Map<String, dynamic>>();
return CustomEmojiesList()
@ -193,4 +168,30 @@ class UsersHelper {
))
.toList());
}
static AdvancedUserInfo apiToAdvancedUserInfo(Map<String, dynamic> data) =>
AdvancedUserInfo(
id: data["userID"],
firstName: data["firstName"],
lastName: data["lastName"],
pageVisibility: data["publicPage"] == "false"
? UserPageVisibility.PRIVATE
: (data["openPage"] == "false"
? UserPageVisibility.PRIVATE
: UserPageVisibility.OPEN),
virtualDirectory:
data["virtualDirectory"] == "" ? null : data["virtualDirectory"],
accountImageURL: data["accountImage"],
emailAddress: data["email_address"],
customEmojies: _parseCustomEmojies(data["customEmojis"]),
publicNote: data["publicNote"],
canPostTexts: data["can_post_texts"],
isFriendsListPublic: data["friend_list_public"],
numberFriends: data["number_friends"],
accountCreationTime: data["account_creation_time"],
personalWebsite: data["personnalWebsite"],
location: data["location"],
likes: data["pageLikes"],
userLike: data["user_like_page"],
);
}