feat: Store original event
This commit is contained in:
parent
64f2a4b3c6
commit
403824b261
|
|
@ -287,6 +287,7 @@ class Encryption {
|
|||
stateKey: event.stateKey,
|
||||
prevContent: event.prevContent,
|
||||
status: event.status,
|
||||
originalSource: event,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,6 +72,8 @@ class Event extends MatrixEvent {
|
|||
? room.unsafeGetUserFromMemoryOrFallback(stateKey!)
|
||||
: null;
|
||||
|
||||
final MatrixEvent? originalSource;
|
||||
|
||||
Event({
|
||||
this.status = defaultStatus,
|
||||
required Map<String, dynamic> content,
|
||||
|
|
@ -83,6 +85,7 @@ class Event extends MatrixEvent {
|
|||
Map<String, dynamic>? prevContent,
|
||||
String? stateKey,
|
||||
required this.room,
|
||||
this.originalSource,
|
||||
}) : super(
|
||||
content: content,
|
||||
type: type,
|
||||
|
|
@ -154,7 +157,7 @@ class Event extends MatrixEvent {
|
|||
}
|
||||
}
|
||||
|
||||
static Map<String, dynamic> getMapFromPayload(dynamic payload) {
|
||||
static Map<String, dynamic> getMapFromPayload(Object? payload) {
|
||||
if (payload is String) {
|
||||
try {
|
||||
return json.decode(payload);
|
||||
|
|
@ -192,6 +195,8 @@ class Event extends MatrixEvent {
|
|||
final content = Event.getMapFromPayload(jsonPayload['content']);
|
||||
final unsigned = Event.getMapFromPayload(jsonPayload['unsigned']);
|
||||
final prevContent = Event.getMapFromPayload(jsonPayload['prev_content']);
|
||||
final originalSource =
|
||||
Event.getMapFromPayload(jsonPayload['original_source']);
|
||||
return Event(
|
||||
status: eventStatusFromInt(jsonPayload['status'] ??
|
||||
unsigned[messageSendingStatusKey] ??
|
||||
|
|
@ -203,11 +208,14 @@ class Event extends MatrixEvent {
|
|||
eventId: jsonPayload['event_id'] ?? '',
|
||||
senderId: jsonPayload['sender'],
|
||||
originServerTs: jsonPayload.containsKey('origin_server_ts')
|
||||
? DateTime.fromMillisecondsSinceEpoch(jsonPayload['origin_server_ts'])
|
||||
? DateTime.fromMillisecondsSinceEpoch(
|
||||
jsonPayload['origin_server_ts'])
|
||||
: DateTime.now(),
|
||||
unsigned: unsigned,
|
||||
room: room,
|
||||
);
|
||||
originalSource: originalSource.isEmpty
|
||||
? null
|
||||
: MatrixEvent.fromJson(originalSource));
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -226,6 +234,9 @@ class Event extends MatrixEvent {
|
|||
if (unsigned?.isNotEmpty == true) {
|
||||
data['unsigned'] = unsigned;
|
||||
}
|
||||
if (originalSource != null) {
|
||||
data['original_source'] = originalSource?.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ void main() {
|
|||
expect(decryptedEvent.type, 'm.room.message');
|
||||
expect(decryptedEvent.content['msgtype'], 'm.text');
|
||||
expect(decryptedEvent.content['text'], 'Hello foxies!');
|
||||
expect(decryptedEvent.originalSource?.toJson(), encryptedEvent.toJson());
|
||||
});
|
||||
|
||||
test('decrypt payload nocache', () async {
|
||||
|
|
|
|||
Loading…
Reference in New Issue