import '/utils/storage/database.dart'; import '/models/conversations.dart'; class ConversationUser{ String id; String userId; String conversationId; String username; String associationKey; bool admin; ConversationUser({ required this.id, required this.userId, required this.conversationId, required this.username, required this.associationKey, required this.admin, }); factory ConversationUser.fromJson(Map json, String conversationId) { return ConversationUser( id: json['id'], userId: json['user_id'], conversationId: conversationId, username: json['username'], associationKey: json['association_key'], admin: json['admin'] == 'true', ); } Map toJson() { return { 'id': id, 'user_id': userId, 'username': username, 'associationKey': associationKey, 'admin': admin ? 'true' : 'false', }; } Map toMap() { return { 'id': id, 'user_id': userId, 'conversation_id': conversationId, 'username': username, 'association_key': associationKey, 'admin': admin ? 1 : 0, }; } } // A method that retrieves all the dogs from the dogs table. Future> getConversationUsers(Conversation conversation) async { final db = await getDatabaseConnection(); final List> maps = await db.query( 'conversation_users', where: 'conversation_id = ?', whereArgs: [conversation.id], orderBy: 'admin', ); return List.generate(maps.length, (i) { return ConversationUser( id: maps[i]['id'], userId: maps[i]['user_id'], conversationId: maps[i]['conversation_id'], username: maps[i]['username'], associationKey: maps[i]['association_key'], admin: maps[i]['admin'] == 1, ); }); } Future getConversationUser(Conversation conversation, String userId) async { final db = await getDatabaseConnection(); final List> maps = await db.query( 'conversation_users', where: 'conversation_id = ? AND user_id = ?', whereArgs: [conversation.id, userId], ); if (maps.length != 1) { throw ArgumentError('Invalid conversation_id or username'); } return ConversationUser( id: maps[0]['id'], userId: maps[0]['user_id'], conversationId: maps[0]['conversation_id'], username: maps[0]['username'], associationKey: maps[0]['association_key'], admin: maps[0]['admin'] == 1, ); }