make profile fetching much faster
This commit is contained in:
parent
ab48472aec
commit
6b4d612535
2 changed files with 9 additions and 22 deletions
|
|
@ -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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue