nexus/lib/widgets/chat_page/lazy_loading/message_avatar.dart

32 lines
1.1 KiB
Dart

import "package:flutter/material.dart";
import "package:flutter_chat_core/flutter_chat_core.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/controllers/author_controller.dart";
import "package:nexus/helpers/extensions/better_when.dart";
import "package:nexus/helpers/extensions/show_user_popover.dart";
import "package:nexus/widgets/avatar_or_hash.dart";
class MessageAvatar extends ConsumerWidget {
final Message message;
final double height;
const MessageAvatar(this.message, {this.height = 16, super.key});
@override
Widget build(BuildContext context, WidgetRef ref) => ref
.watch(AuthorController.provider(message))
.betterWhen(
data: (membership) => InkWell(
onTapUp: (details) => context.showUserPopover(
membership,
globalPosition: details.globalPosition,
),
child: AvatarOrHash(
membership.avatarUrl,
membership.displayName,
height: height,
),
),
loading: () =>
AvatarOrHash(null, message.authorId.substring(1), height: height),
);
}