feat: Implement get mentions from event content
This commit is contained in:
parent
2d6f043861
commit
77fb2b29e7
|
|
@ -1180,6 +1180,17 @@ class Event extends MatrixEvent {
|
||||||
(fileSendingStatus) => fileSendingStatus.name == status,
|
(fileSendingStatus) => fileSendingStatus.name == status,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the mentioned userIds and wether the event includes an @room
|
||||||
|
/// mention. This is only determined by the `m.mention` object in the event
|
||||||
|
/// content.
|
||||||
|
({List<String> userIds, bool room}) get mentions {
|
||||||
|
final mentionsMap = content.tryGetMap<String, Object?>('m.mentions');
|
||||||
|
return (
|
||||||
|
userIds: mentionsMap?.tryGetList<String>('user_ids') ?? [],
|
||||||
|
room: mentionsMap?.tryGet<bool>('room') ?? false,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum FileSendingStatus {
|
enum FileSendingStatus {
|
||||||
|
|
|
||||||
|
|
@ -2951,5 +2951,28 @@ void main() async {
|
||||||
Timeline(room: room, chunk: TimelineChunk(events: [targetEvent]));
|
Timeline(room: room, chunk: TimelineChunk(events: [targetEvent]));
|
||||||
expect(await event.getReplyEvent(timeline), targetEvent);
|
expect(await event.getReplyEvent(timeline), targetEvent);
|
||||||
});
|
});
|
||||||
|
test('getMentions', () {
|
||||||
|
final event = Event.fromJson(
|
||||||
|
{
|
||||||
|
'content': {
|
||||||
|
'msgtype': 'text',
|
||||||
|
'body': 'Hello world @alice:matrix.org',
|
||||||
|
'm.mentions': {
|
||||||
|
'user_ids': ['@alice:matrix.org'],
|
||||||
|
'room': false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'event_id': '\$143273582443PhrSn:example.org',
|
||||||
|
'origin_server_ts': 1432735824653,
|
||||||
|
'room_id': room.id,
|
||||||
|
'sender': '@example:example.org',
|
||||||
|
'type': 'm.room.message',
|
||||||
|
'unsigned': {'age': 1234},
|
||||||
|
},
|
||||||
|
room,
|
||||||
|
);
|
||||||
|
expect(event.mentions.userIds, ['@alice:matrix.org']);
|
||||||
|
expect(event.mentions.room, false);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue