handle events_decrypted
This commit is contained in:
parent
58a27fdd9e
commit
ef25e765d4
2 changed files with 47 additions and 0 deletions
|
|
@ -17,6 +17,7 @@ import "package:nexus/helpers/extensions/gomuks_buffer.dart";
|
|||
import "package:nexus/main.dart";
|
||||
import "package:ffi/ffi.dart";
|
||||
import "package:nexus/models/event.dart";
|
||||
import "package:nexus/models/events_decrypted.dart";
|
||||
import "package:nexus/models/sync_data.dart";
|
||||
import "package:nexus/src/third_party/gomuks.g.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
|
|
@ -60,6 +61,29 @@ class GomuksListenerController extends AsyncNotifier<void> {
|
|||
event.roomId: .new(events: .new({event.rowId: event})),
|
||||
}),
|
||||
);
|
||||
case "events_decrypted":
|
||||
final decrypted = EventsDecrypted.fromJson(decodedMuksEvent);
|
||||
final metadata = ref
|
||||
.read(RoomsController.provider)[decrypted.roomId]
|
||||
?.metadata;
|
||||
|
||||
ref
|
||||
.read(RoomsController.provider.notifier)
|
||||
.update(
|
||||
.new({
|
||||
decrypted.roomId: .new(
|
||||
events: decrypted.events,
|
||||
metadata: metadata?.copyWith(
|
||||
previewEventRowID:
|
||||
decrypted.previewEventRowID ??
|
||||
metadata.previewEventRowID,
|
||||
sortingTimestamp:
|
||||
decrypted.sortingTimestamp ??
|
||||
metadata.sortingTimestamp,
|
||||
),
|
||||
),
|
||||
}),
|
||||
);
|
||||
case "sync_complete":
|
||||
final syncData = SyncData.fromJson(decodedMuksEvent);
|
||||
final roomProvider = RoomsController.provider;
|
||||
|
|
|
|||
23
lib/models/events_decrypted.dart
Normal file
23
lib/models/events_decrypted.dart
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||
import "package:freezed_annotation/freezed_annotation.dart";
|
||||
import "package:nexus/models/epoch_date_time_converter.dart";
|
||||
import "package:nexus/models/event.dart";
|
||||
import "package:nexus/models/room.dart";
|
||||
|
||||
part "events_decrypted.freezed.dart";
|
||||
part "events_decrypted.g.dart";
|
||||
|
||||
@Freezed(toJson: false, fromJson: false)
|
||||
@JsonSerializable(createToJson: false)
|
||||
class const EventsDecrypted({
|
||||
required final String roomId,
|
||||
@JsonKey(name: "preview_event_rowid") final int? previewEventRowID,
|
||||
@EpochDateTimeConverter() final DateTime? sortingTimestamp,
|
||||
|
||||
/// [events] is an IMap of eventRowId to event
|
||||
@JsonKey(fromJson: Room.eventsJsonToIMap)
|
||||
required final IMap<int, Event> events,
|
||||
}) with _$EventsDecrypted {
|
||||
factory EventsDecrypted.fromJson(Map<String, Object?> json) =>
|
||||
_$EventsDecryptedFromJson(json);
|
||||
}
|
||||
Loading…
Reference in a new issue