feat(all): Add db support for GroupchatDetails.
Signed-off-by: Ikjot Singh Dhody <ikjotsd@gmail.com>
This commit is contained in:
parent
f0a79ca0e0
commit
7880f51b76
@ -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<DatabaseMigration<Database>> migrations = [
|
||||
DatabaseMigration(39, upgradeFromV38ToV39),
|
||||
DatabaseMigration(40, upgradeFromV39ToV40),
|
||||
DatabaseMigration(41, upgradeFromV40ToV41),
|
||||
DatabaseMigration(42, upgradeFromV41ToV42),
|
||||
];
|
||||
|
||||
class DatabaseService {
|
||||
|
@ -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;',
|
||||
);
|
||||
}
|
@ -12,7 +12,7 @@ class GroupchatService {
|
||||
final conn = GetIt.I.get<XmppConnection>();
|
||||
final mm = conn.getManagerById<MUCManager>(mucManager)!;
|
||||
final result = await mm.queryRoomInformation(roomJID);
|
||||
if (result is RoomInformation) {
|
||||
if (result.isType<RoomInformation>()) {
|
||||
return result.get<RoomInformation>();
|
||||
}
|
||||
throw Exception(result.get<MUCError>());
|
||||
@ -26,7 +26,7 @@ class GroupchatService {
|
||||
throw Exception(GroupchatErrorType.roomPasswordProtected);
|
||||
}
|
||||
final result = await mm.joinRoom(muc, nick);
|
||||
if (result is MUCError) {
|
||||
if (result.isType<MUCError>()) {
|
||||
throw Exception(GroupchatErrorType.fromException(result.get<MUCError>()));
|
||||
} else {
|
||||
return result.get<bool>();
|
||||
|
@ -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
|
||||
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,
|
||||
|
Loading…
Reference in New Issue
Block a user