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

Can create group conversations

This commit is contained in:
2021-04-06 17:04:55 +02:00
parent 07b42df06a
commit 054b2a1d32
8 changed files with 135 additions and 6 deletions

View File

@ -1,3 +1,4 @@
import 'package:comunic/helpers/groups_helper.dart';
import 'package:comunic/helpers/serialization/conversation_message_serialization_helper.dart';
import 'package:comunic/helpers/serialization/conversations_serialization_helper.dart';
import 'package:comunic/helpers/users_helper.dart';
@ -238,6 +239,8 @@ class ConversationsHelper {
color: map["color"] == null ? null : HexColor(map["color"]),
logoURL: map["logo"],
groupID: map["group_id"],
groupMinMembershipLevel:
APIGroupsMembershipLevelsMap[map["group_min_membership_level"]],
members: map["members"]
.cast<Map<String, dynamic>>()
.map(apiToConversationMember)

View File

@ -6,6 +6,7 @@ import 'package:comunic/models/advanced_group_info.dart';
import 'package:comunic/models/api_request.dart';
import 'package:comunic/models/group.dart';
import 'package:comunic/models/group_membership.dart';
import 'package:comunic/models/new_group_conversation.dart';
import 'package:comunic/utils/api_utils.dart';
import 'package:comunic/utils/map_utils.dart';
@ -13,7 +14,7 @@ import 'package:comunic/utils/map_utils.dart';
///
/// @author Pierre HUBERT
const _APIGroupsMembershipLevelsMap = {
const APIGroupsMembershipLevelsMap = {
"administrator": GroupMembershipLevel.ADMINISTRATOR,
"moderator": GroupMembershipLevel.MODERATOR,
"member": GroupMembershipLevel.MEMBER,
@ -326,7 +327,22 @@ class GroupsHelper {
await APIRequest.withLogin("groups/update_membership_level")
.addInt("groupID", groupID)
.addInt("userID", userID)
.addString("level", invertMap(_APIGroupsMembershipLevelsMap)[level])
.addString("level", invertMap(APIGroupsMembershipLevelsMap)[level])
.execWithThrow();
/// Create a new group conversation
///
/// Throws in case of failure
static Future<void> createGroupConversation(
NewGroupConversation conv) async =>
await APIRequest.withLogin("groups/create_conversation")
.addInt("group_id", conv.groupID)
.addString(
"min_membership_level",
APIGroupsMembershipLevelsMap.entries
.firstWhere((e) => e.value == conv.minMembershipLevel)
.key)
.addString("name", conv.name)
.execWithThrow();
/// Turn an API entry into a group object
@ -336,7 +352,7 @@ class GroupsHelper {
name: map["name"],
iconURL: map["icon_url"],
numberMembers: map["number_members"],
membershipLevel: _APIGroupsMembershipLevelsMap[map["membership"]],
membershipLevel: APIGroupsMembershipLevelsMap[map["membership"]],
visibilityLevel: _APIGroupsVisibilityLevelsMap[map["visibility"]],
registrationLevel:
_APIGroupsRegistrationLevelsMap[map["registration_level"]],
@ -352,7 +368,7 @@ class GroupsHelper {
name: map["name"],
iconURL: map["icon_url"],
numberMembers: map["number_members"],
membershipLevel: _APIGroupsMembershipLevelsMap[map["membership"]],
membershipLevel: APIGroupsMembershipLevelsMap[map["membership"]],
visibilityLevel: _APIGroupsVisibilityLevelsMap[map["visibility"]],
registrationLevel:
_APIGroupsRegistrationLevelsMap[map["registration_level"]],
@ -373,6 +389,6 @@ class GroupsHelper {
userID: row["user_id"],
groupID: row["group_id"],
timeCreate: row["time_create"],
level: _APIGroupsMembershipLevelsMap[row["level"]],
level: APIGroupsMembershipLevelsMap[row["level"]],
);
}

View File

@ -52,6 +52,8 @@ class ServerConfigurationHelper {
minLikesLifetime: dataConservationPolicy["min_likes_lifetime"],
),
conversationsPolicy: ConversationsPolicy(
maxConversationNameLen:
conversationsPolicy["max_conversation_name_len"],
minMessageLen: conversationsPolicy["min_message_len"],
maxMessageLen: conversationsPolicy["max_message_len"],
allowedFilesType: