mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-11-22 12:59:21 +00:00
61 lines
1.8 KiB
Dart
61 lines
1.8 KiB
Dart
import 'package:comunic/lists/conversations_list.dart';
|
|
import 'package:comunic/lists/users_list.dart';
|
|
import 'package:comunic/models/api_request.dart';
|
|
import 'package:comunic/models/conversation.dart';
|
|
import 'package:comunic/utils/account_utils.dart';
|
|
|
|
/// Conversation helper
|
|
///
|
|
/// @author Pierre HUBERT
|
|
|
|
class ConversationsHelper {
|
|
/// Download the list of conversations from the server
|
|
Future<ConversationsList> downloadList() async {
|
|
final response =
|
|
await APIRequest(uri: "conversations/getList", needLogin: true).exec();
|
|
|
|
if (response.code != 200) return null;
|
|
|
|
try {
|
|
ConversationsList list = ConversationsList();
|
|
response.getArray().forEach((f) => list.add(Conversation(
|
|
id: f["ID"],
|
|
ownerID: f["ID_owner"],
|
|
lastActive: f["last_active"],
|
|
name: f["name"] == false ? null : f["name"],
|
|
following: f["following"] == 1,
|
|
sawLastMessage: f["saw_last_message"] == 1,
|
|
members: f["members"].map<int>((f) => int.parse(f)).toList(),
|
|
)));
|
|
|
|
return list;
|
|
} on Exception catch (e) {
|
|
print(e.toString());
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/// Get the name of a [conversation]. This requires information about the
|
|
/// users of this conversation
|
|
static String getConversationName(
|
|
Conversation conversation, UsersList users) {
|
|
if (conversation.has_name) return conversation.name;
|
|
|
|
String name = "";
|
|
int count = 0;
|
|
for (int i = 0; i < 3 && i < conversation.members.length; i++)
|
|
if (conversation.members[i] != userID()) {
|
|
name += (count > 0 ? ", " : "") +
|
|
users
|
|
.getUser(conversation.members[i])
|
|
.fullName;
|
|
count++;
|
|
}
|
|
|
|
if(conversation.members.length > 3)
|
|
name += ", ...";
|
|
|
|
return name;
|
|
}
|
|
}
|