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:nexus/main.dart";
|
||||||
import "package:ffi/ffi.dart";
|
import "package:ffi/ffi.dart";
|
||||||
import "package:nexus/models/event.dart";
|
import "package:nexus/models/event.dart";
|
||||||
|
import "package:nexus/models/events_decrypted.dart";
|
||||||
import "package:nexus/models/sync_data.dart";
|
import "package:nexus/models/sync_data.dart";
|
||||||
import "package:nexus/src/third_party/gomuks.g.dart";
|
import "package:nexus/src/third_party/gomuks.g.dart";
|
||||||
import "package:flutter_riverpod/flutter_riverpod.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})),
|
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":
|
case "sync_complete":
|
||||||
final syncData = SyncData.fromJson(decodedMuksEvent);
|
final syncData = SyncData.fromJson(decodedMuksEvent);
|
||||||
final roomProvider = RoomsController.provider;
|
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