From 7880f51b762025d5e07e32ac4fba160014c3fcac Mon Sep 17 00:00:00 2001 From: Ikjot Singh Dhody Date: Mon, 10 Jul 2023 01:32:17 +0530 Subject: [PATCH] feat(all): Add db support for GroupchatDetails. Signed-off-by: Ikjot Singh Dhody --- lib/service/database/database.dart | 2 ++ .../0003_groupchat_details_nick.dart | 8 ++++++++ lib/service/groupchat.dart | 4 ++-- lib/shared/models/conversation.dart | 19 +++++++++++++++++-- 4 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 lib/service/database/migrations/0003_groupchat_details_nick.dart diff --git a/lib/service/database/database.dart b/lib/service/database/database.dart index fdb53c46..1549fc2a 100644 --- a/lib/service/database/database.dart +++ b/lib/service/database/database.dart @@ -42,6 +42,7 @@ import 'package:moxxyv2/service/database/migrations/0002_reactions_2.dart'; import 'package:moxxyv2/service/database/migrations/0002_shared_media.dart'; import 'package:moxxyv2/service/database/migrations/0002_sticker_metadata.dart'; import 'package:moxxyv2/service/database/migrations/0003_avatar_hashes.dart'; +import 'package:moxxyv2/service/database/migrations/0003_groupchat_details_nick.dart'; import 'package:moxxyv2/service/database/migrations/0003_new_omemo.dart'; import 'package:moxxyv2/service/database/migrations/0003_new_omemo_pseudo_messages.dart'; import 'package:moxxyv2/service/database/migrations/0003_remove_subscriptions.dart'; @@ -152,6 +153,7 @@ const List> migrations = [ DatabaseMigration(39, upgradeFromV38ToV39), DatabaseMigration(40, upgradeFromV39ToV40), DatabaseMigration(41, upgradeFromV40ToV41), + DatabaseMigration(42, upgradeFromV41ToV42), ]; class DatabaseService { diff --git a/lib/service/database/migrations/0003_groupchat_details_nick.dart b/lib/service/database/migrations/0003_groupchat_details_nick.dart new file mode 100644 index 00000000..163fd626 --- /dev/null +++ b/lib/service/database/migrations/0003_groupchat_details_nick.dart @@ -0,0 +1,8 @@ +import 'package:moxxyv2/service/database/constants.dart'; +import 'package:sqflite_sqlcipher/sqflite.dart'; + +Future upgradeFromV41ToV42(Database db) async { + await db.execute( + 'ALTER TABLE $conversationsTable ADD COLUMN nick TEXT DEFAULT NULL;', + ); +} diff --git a/lib/service/groupchat.dart b/lib/service/groupchat.dart index aa935e2b..1a5f87e5 100644 --- a/lib/service/groupchat.dart +++ b/lib/service/groupchat.dart @@ -12,7 +12,7 @@ class GroupchatService { final conn = GetIt.I.get(); final mm = conn.getManagerById(mucManager)!; final result = await mm.queryRoomInformation(roomJID); - if (result is RoomInformation) { + if (result.isType()) { return result.get(); } throw Exception(result.get()); @@ -26,7 +26,7 @@ class GroupchatService { throw Exception(GroupchatErrorType.roomPasswordProtected); } final result = await mm.joinRoom(muc, nick); - if (result is MUCError) { + if (result.isType()) { throw Exception(GroupchatErrorType.fromException(result.get())); } else { return result.get(); diff --git a/lib/shared/models/conversation.dart b/lib/shared/models/conversation.dart index 6703f810..5963df21 100644 --- a/lib/shared/models/conversation.dart +++ b/lib/shared/models/conversation.dart @@ -79,6 +79,20 @@ class ConversationTypeConverter } } +class GroupchatDetailsConverter + extends JsonConverter> { + const GroupchatDetailsConverter(); + + @override + GroupchatDetails fromJson(Map json) => + GroupchatDetails(json['nick'] as String); + + @override + Map toJson(GroupchatDetails object) => { + 'nick': object.nick, + }; +} + @freezed class Conversation with _$Conversation { factory Conversation( @@ -98,7 +112,7 @@ class Conversation with _$Conversation { String jid, // The nick with which the MUC is joined... - GroupchatDetails? nick, + @GroupchatDetailsConverter() GroupchatDetails? nick, // The number of unread messages. int unreadCounter, @@ -163,7 +177,8 @@ class Conversation with _$Conversation { ..remove('id') ..remove('chatState') ..remove('showAddToRoster') - ..remove('lastMessage'); + ..remove('lastMessage') + ..remove('nick'); return { ...map,