feat(all): Add db support for GroupchatDetails.

Signed-off-by: Ikjot Singh Dhody <ikjotsd@gmail.com>
This commit is contained in:
Ikjot Singh Dhody 2023-07-10 01:32:17 +05:30
parent f0a79ca0e0
commit 7880f51b76
4 changed files with 29 additions and 4 deletions

View File

@ -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_shared_media.dart';
import 'package:moxxyv2/service/database/migrations/0002_sticker_metadata.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_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.dart';
import 'package:moxxyv2/service/database/migrations/0003_new_omemo_pseudo_messages.dart'; import 'package:moxxyv2/service/database/migrations/0003_new_omemo_pseudo_messages.dart';
import 'package:moxxyv2/service/database/migrations/0003_remove_subscriptions.dart'; import 'package:moxxyv2/service/database/migrations/0003_remove_subscriptions.dart';
@ -152,6 +153,7 @@ const List<DatabaseMigration<Database>> migrations = [
DatabaseMigration(39, upgradeFromV38ToV39), DatabaseMigration(39, upgradeFromV38ToV39),
DatabaseMigration(40, upgradeFromV39ToV40), DatabaseMigration(40, upgradeFromV39ToV40),
DatabaseMigration(41, upgradeFromV40ToV41), DatabaseMigration(41, upgradeFromV40ToV41),
DatabaseMigration(42, upgradeFromV41ToV42),
]; ];
class DatabaseService { class DatabaseService {

View File

@ -0,0 +1,8 @@
import 'package:moxxyv2/service/database/constants.dart';
import 'package:sqflite_sqlcipher/sqflite.dart';
Future<void> upgradeFromV41ToV42(Database db) async {
await db.execute(
'ALTER TABLE $conversationsTable ADD COLUMN nick TEXT DEFAULT NULL;',
);
}

View File

@ -12,7 +12,7 @@ class GroupchatService {
final conn = GetIt.I.get<XmppConnection>(); final conn = GetIt.I.get<XmppConnection>();
final mm = conn.getManagerById<MUCManager>(mucManager)!; final mm = conn.getManagerById<MUCManager>(mucManager)!;
final result = await mm.queryRoomInformation(roomJID); final result = await mm.queryRoomInformation(roomJID);
if (result is RoomInformation) { if (result.isType<RoomInformation>()) {
return result.get<RoomInformation>(); return result.get<RoomInformation>();
} }
throw Exception(result.get<MUCError>()); throw Exception(result.get<MUCError>());
@ -26,7 +26,7 @@ class GroupchatService {
throw Exception(GroupchatErrorType.roomPasswordProtected); throw Exception(GroupchatErrorType.roomPasswordProtected);
} }
final result = await mm.joinRoom(muc, nick); final result = await mm.joinRoom(muc, nick);
if (result is MUCError) { if (result.isType<MUCError>()) {
throw Exception(GroupchatErrorType.fromException(result.get<MUCError>())); throw Exception(GroupchatErrorType.fromException(result.get<MUCError>()));
} else { } else {
return result.get<bool>(); return result.get<bool>();

View File

@ -79,6 +79,20 @@ class ConversationTypeConverter
} }
} }
class GroupchatDetailsConverter
extends JsonConverter<GroupchatDetails, Map<String, dynamic>> {
const GroupchatDetailsConverter();
@override
GroupchatDetails fromJson(Map<String, dynamic> json) =>
GroupchatDetails(json['nick'] as String);
@override
Map<String, dynamic> toJson(GroupchatDetails object) => <String, dynamic>{
'nick': object.nick,
};
}
@freezed @freezed
class Conversation with _$Conversation { class Conversation with _$Conversation {
factory Conversation( factory Conversation(
@ -98,7 +112,7 @@ class Conversation with _$Conversation {
String jid, String jid,
// The nick with which the MUC is joined... // The nick with which the MUC is joined...
GroupchatDetails? nick, @GroupchatDetailsConverter() GroupchatDetails? nick,
// The number of unread messages. // The number of unread messages.
int unreadCounter, int unreadCounter,
@ -163,7 +177,8 @@ class Conversation with _$Conversation {
..remove('id') ..remove('id')
..remove('chatState') ..remove('chatState')
..remove('showAddToRoster') ..remove('showAddToRoster')
..remove('lastMessage'); ..remove('lastMessage')
..remove('nick');
return { return {
...map, ...map,