add membership rendering
This commit is contained in:
parent
f9b1960cf8
commit
b3d1dc81b5
2 changed files with 35 additions and 1 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
import "package:freezed_annotation/freezed_annotation.dart";
|
import "package:freezed_annotation/freezed_annotation.dart";
|
||||||
|
|
||||||
@JsonEnum()
|
@JsonEnum()
|
||||||
enum MembershipStatus { leave, invite, ban, join }
|
enum MembershipStatus { leave, invite, ban, join, knock }
|
||||||
|
|
|
||||||
|
|
@ -8,14 +8,18 @@ import "package:linkify/linkify.dart";
|
||||||
import "package:nexus/controllers/client_state_controller.dart";
|
import "package:nexus/controllers/client_state_controller.dart";
|
||||||
import "package:nexus/controllers/cross_cache_controller.dart";
|
import "package:nexus/controllers/cross_cache_controller.dart";
|
||||||
import "package:nexus/helpers/extensions/get_headers.dart";
|
import "package:nexus/helpers/extensions/get_headers.dart";
|
||||||
|
import "package:nexus/helpers/extensions/get_localpart.dart";
|
||||||
import "package:nexus/helpers/extensions/mxc_to_https.dart";
|
import "package:nexus/helpers/extensions/mxc_to_https.dart";
|
||||||
import "package:nexus/helpers/extensions/show_context_menu.dart";
|
import "package:nexus/helpers/extensions/show_context_menu.dart";
|
||||||
|
import "package:nexus/helpers/extensions/show_user_popover.dart";
|
||||||
import "package:nexus/helpers/launch_helper.dart";
|
import "package:nexus/helpers/launch_helper.dart";
|
||||||
import "package:nexus/models/content/avatar.dart";
|
import "package:nexus/models/content/avatar.dart";
|
||||||
import "package:nexus/models/content/content.dart";
|
import "package:nexus/models/content/content.dart";
|
||||||
import "package:nexus/models/content/encrypted.dart";
|
import "package:nexus/models/content/encrypted.dart";
|
||||||
|
import "package:nexus/models/content/membership.dart";
|
||||||
import "package:nexus/models/content/message.dart";
|
import "package:nexus/models/content/message.dart";
|
||||||
import "package:nexus/models/event.dart";
|
import "package:nexus/models/event.dart";
|
||||||
|
import "package:nexus/models/membership_status.dart";
|
||||||
import "package:nexus/widgets/chat_page/expandable_image.dart";
|
import "package:nexus/widgets/chat_page/expandable_image.dart";
|
||||||
import "package:nexus/widgets/chat_page/html/html.dart";
|
import "package:nexus/widgets/chat_page/html/html.dart";
|
||||||
import "package:nexus/widgets/chat_page/lazy_loading/message_avatar.dart";
|
import "package:nexus/widgets/chat_page/lazy_loading/message_avatar.dart";
|
||||||
|
|
@ -290,6 +294,36 @@ class RenderEvent extends ConsumerWidget {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
MembershipContent content => Row(
|
||||||
|
spacing: 4,
|
||||||
|
children: [
|
||||||
|
SizedBox(width: 4),
|
||||||
|
Icon(Icons.people),
|
||||||
|
InkWell(
|
||||||
|
onTapUp: (details) => context.showUserPopover(
|
||||||
|
content,
|
||||||
|
event.sender,
|
||||||
|
globalPosition: details.globalPosition,
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
content.displayName ?? event.stateKey!.localpart,
|
||||||
|
style: TextStyle(
|
||||||
|
color: theme.colorScheme.primary,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
"${switch (content.status) {
|
||||||
|
MembershipStatus.invite => "was invited to",
|
||||||
|
MembershipStatus.join => "joined",
|
||||||
|
MembershipStatus.leave => event.sender == event.stateKey ? "left" : (event.unsigned["prev_content"]?["membership"] == "ban" ? "was unbanned from" : "was kicked from"),
|
||||||
|
MembershipStatus.ban => "was banned from",
|
||||||
|
MembershipStatus.knock => "asked to join",
|
||||||
|
}} the room. ${content.reason ?? ""}",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
AvatarContent() => Row(
|
AvatarContent() => Row(
|
||||||
spacing: 4,
|
spacing: 4,
|
||||||
children: [
|
children: [
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue