make profile fetching much faster

This commit is contained in:
Henry Hiles 2026-02-13 17:17:47 -05:00
commit 6b4d612535
No known key found for this signature in database
2 changed files with 9 additions and 22 deletions

View file

@ -3,7 +3,7 @@ import "package:flutter_chat_core/flutter_chat_core.dart";
import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/controllers/client_controller.dart"; import "package:nexus/controllers/client_controller.dart";
import "package:nexus/controllers/client_state_controller.dart"; import "package:nexus/controllers/client_state_controller.dart";
import "package:nexus/controllers/profile_controller.dart"; import "package:nexus/controllers/members_controller.dart";
import "package:nexus/helpers/extensions/mxc_to_https.dart"; import "package:nexus/helpers/extensions/mxc_to_https.dart";
import "package:nexus/models/message_config.dart"; import "package:nexus/models/message_config.dart";
import "package:nexus/models/requests/get_event_request.dart"; import "package:nexus/models/requests/get_event_request.dart";
@ -37,8 +37,11 @@ class MessageController extends AsyncNotifier<Message?> {
if (!ref.mounted) return null; if (!ref.mounted) return null;
final author = await ref.read( final members = await ref.watch(
ProfileController.provider(event.authorId).future, MembersController.provider(config.room).future,
);
final author = members.firstWhereOrNull(
(member) => member.stateKey == event.authorId,
); );
if (!ref.mounted) return null; if (!ref.mounted) return null;
@ -63,10 +66,11 @@ class MessageController extends AsyncNotifier<Message?> {
), ),
).future, ).future,
), ),
"big": event.localContent?.bigEmoji == true,
"body": newContent?["body"] ?? content["body"], "body": newContent?["body"] ?? content["body"],
"eventType": type, "eventType": type,
"avatarUrl": author.avatarUrl, "avatarUrl": author?.content["avatar_url"],
"displayName": author.displayName ?? event.authorId, "displayName": author?.content["displayname"] ?? event.stateKey,
"txnId": config.event.transactionId, "txnId": config.event.transactionId,
}; };

View file

@ -1,17 +0,0 @@
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/controllers/client_controller.dart";
import "package:nexus/models/profile.dart";
class ProfileController extends AsyncNotifier<Profile> {
final String userId;
ProfileController(this.userId);
@override
Future<Profile> build() =>
ref.watch(ClientController.provider.notifier).getProfile(userId);
static final provider =
AsyncNotifierProvider.family<ProfileController, Profile, String>(
ProfileController.new,
);
}