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,4 +1,5 @@
import 'package:comunic/enums/likes_type.dart';
import 'package:comunic/models/conversation.dart';
import 'package:comunic/models/like_element.dart';
import 'package:flutter/material.dart';
@ -15,6 +16,7 @@ class AdvancedGroupInfo extends Group implements LikeElement {
String url;
int likes;
bool userLike;
List<Conversation> conversations;
AdvancedGroupInfo({
@required int id,

View File

@ -4,6 +4,8 @@ import 'package:comunic/utils/account_utils.dart';
import 'package:flutter/material.dart';
import 'package:meta/meta.dart';
import 'group.dart';
/// Conversation model
///
/// @author Pierre HUBERT
@ -17,6 +19,7 @@ class Conversation extends SerializableElement<Conversation> {
final Color color;
final String logoURL;
final int groupID;
final GroupMembershipLevel groupMinMembershipLevel;
final List<ConversationMember> members;
final bool canEveryoneAddMembers;
final CallCapabilities callCapabilities;
@ -29,6 +32,7 @@ class Conversation extends SerializableElement<Conversation> {
@required this.color,
@required this.logoURL,
@required this.groupID,
@required this.groupMinMembershipLevel,
@required this.members,
@required this.canEveryoneAddMembers,
this.callCapabilities = CallCapabilities.NONE,
@ -37,6 +41,7 @@ class Conversation extends SerializableElement<Conversation> {
assert(lastActivity != null),
assert(members != null),
assert(canEveryoneAddMembers != null),
assert((groupID == null) == (groupMinMembershipLevel == null)),
assert(callCapabilities != null),
assert(isHavingCall != null);
@ -78,6 +83,9 @@ class Conversation extends SerializableElement<Conversation> {
color = map["color"] == null ? null : Color(map["color"]),
logoURL = map["logoURL"],
groupID = map["groupID"],
groupMinMembershipLevel = GroupMembershipLevel.values.firstWhere(
(element) => element.toString() == map["groupMinMembershipLevel"],
orElse: () => null),
lastActivity = map["lastActivity"],
members = map["members"]
.map((el) => ConversationMember.fromJSON(el))
@ -96,6 +104,7 @@ class Conversation extends SerializableElement<Conversation> {
"color": color?.value,
"logoURL": logoURL,
"groupID": groupID,
"groupMinMembershipLevel": groupMinMembershipLevel?.toString(),
"lastActivity": lastActivity,
"members": members.map((e) => e.toJson()).toList(),
"canEveryoneAddMembers": canEveryoneAddMembers,

View File

@ -0,0 +1,21 @@
import 'package:comunic/models/group.dart';
import 'package:flutter/foundation.dart';
/// This class contains information about a conversation linked to a group
/// to create
///
/// @author Pierre Hubert
class NewGroupConversation {
final int groupID;
final String name;
final GroupMembershipLevel minMembershipLevel;
const NewGroupConversation({
@required this.groupID,
@required this.name,
@required this.minMembershipLevel,
}) : assert(groupID != null),
assert(name != null),
assert(minMembershipLevel != null);
}

View File

@ -58,6 +58,7 @@ class ServerDataConservationPolicy {
}
class ConversationsPolicy {
final int maxConversationNameLen;
final int minMessageLen;
final int maxMessageLen;
final List<String> allowedFilesType;
@ -72,6 +73,7 @@ class ConversationsPolicy {
final int maxLogoHeight;
const ConversationsPolicy({
@required this.maxConversationNameLen,
@required this.minMessageLen,
@required this.maxMessageLen,
@required this.allowedFilesType,
@ -84,7 +86,8 @@ class ConversationsPolicy {
@required this.maxThumbnailHeight,
@required this.maxLogoWidth,
@required this.maxLogoHeight,
}) : assert(minMessageLen != null),
}) : assert(maxConversationNameLen != null),
assert(minMessageLen != null),
assert(maxMessageLen != null),
assert(allowedFilesType != null),
assert(filesMaxSize != null),