forked from Henry-Hiles/nexus
wip
This commit is contained in:
parent
0df327d125
commit
bfd0b1ec47
15 changed files with 186 additions and 89 deletions
|
|
@ -1,16 +1,19 @@
|
|||
import "package:flutter_chat_core/flutter_chat_core.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:nexus/controllers/client_controller.dart";
|
||||
import "package:nexus/controllers/profile_controller.dart";
|
||||
import "package:nexus/models/event.dart";
|
||||
import "package:nexus/models/requests/get_event_request.dart";
|
||||
import "package:nexus/models/requests/get_related_events_request.dart";
|
||||
|
||||
extension EventToMessage on Event {
|
||||
Future<Message?> toMessage(
|
||||
ClientController client, {
|
||||
Ref ref, {
|
||||
bool mustBeText = false,
|
||||
bool includeEdits = false,
|
||||
}) async {
|
||||
if (relationType == "m.replace" && !includeEdits) return null;
|
||||
final client = ref.watch(ClientController.provider.notifier);
|
||||
|
||||
final newEvents = await client.getRelatedEvents(
|
||||
GetRelatedEventsRequest(
|
||||
|
|
@ -28,22 +31,25 @@ extension EventToMessage on Event {
|
|||
GetEventRequest(roomId: roomId, eventId: replyId),
|
||||
);
|
||||
|
||||
final author = await client.getProfile(event.authorId);
|
||||
final author = await ref.watch(
|
||||
ProfileController.provider(event.authorId).future,
|
||||
);
|
||||
final content = (decrypted ?? this.content);
|
||||
final type = (decryptedType ?? this.type);
|
||||
final newContent = content["m.new_content"] as Map?;
|
||||
final metadata = {
|
||||
"timelineId": event.timelineRowId,
|
||||
"formatted":
|
||||
newContent?["formatted_body"] ??
|
||||
newContent?["body"] ??
|
||||
content["formatted_body"] ??
|
||||
content["body"] ??
|
||||
"",
|
||||
"reply": await replyEvent?.toMessage(client, mustBeText: true),
|
||||
"reply": await replyEvent?.toMessage(ref, mustBeText: true),
|
||||
"body": newContent?["body"] ?? content["body"],
|
||||
"eventType": type,
|
||||
"avatarUrl": author?.avatarUrl,
|
||||
"displayName": author?.displayName ?? authorId,
|
||||
"avatarUrl": author.avatarUrl,
|
||||
"displayName": author.displayName ?? authorId,
|
||||
"txnId": transactionId,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,10 @@
|
|||
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||
import "package:flutter_chat_core/flutter_chat_core.dart";
|
||||
import "package:nexus/controllers/client_controller.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:nexus/helpers/extensions/event_to_message.dart";
|
||||
import "package:nexus/models/event.dart";
|
||||
|
||||
extension ListToMessages on IList<Event> {
|
||||
Future<List<Message>> toMessages(ClientController client) async =>
|
||||
(await Future.wait(
|
||||
map((event) => event.toMessage(client)),
|
||||
)).nonNulls.toList();
|
||||
extension ListToMessages on Iterable<Event> {
|
||||
Future<List<Message>> toMessages(Ref ref) async => (await Future.wait(
|
||||
map((event) => event.toMessage(ref)),
|
||||
)).nonNulls.toList();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue