1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-10-23 06:53:23 +00:00
comunicmobile/lib/helpers/conversations_helper.dart

66 lines
2.1 KiB
Dart
Raw Normal View History

import 'package:comunic/helpers/database/conversations_database_helper.dart';
import 'package:comunic/lists/conversations_list.dart';
import 'package:comunic/lists/users_list.dart';
2019-04-23 12:35:41 +00:00
import 'package:comunic/models/api_request.dart';
import 'package:comunic/models/conversation.dart';
import 'package:comunic/utils/account_utils.dart';
2019-04-23 12:35:41 +00:00
/// Conversation helper
///
/// @author Pierre HUBERT
class ConversationsHelper {
final ConversationsDatabaseHelper _conversationsDatabaseHelper =
ConversationsDatabaseHelper();
2019-04-23 12:35:41 +00:00
/// Download the list of conversations from the server
Future<ConversationsList> downloadList() async {
2019-04-23 12:35:41 +00:00
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(
2019-04-23 12:35:41 +00:00
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(),
)));
// Update the database
await _conversationsDatabaseHelper.clearTable();
await _conversationsDatabaseHelper.insertAll(list);
2019-04-23 12:35:41 +00:00
return list;
} on Exception catch (e) {
2019-04-23 12:35:41 +00:00
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;
}
2019-04-23 12:35:41 +00:00
}