From 2687f98952c98103b1571789cf838702455efea8 Mon Sep 17 00:00:00 2001
From: Leda <38331868+LedaThemis@users.noreply.github.com>
Date: Tue, 20 Sep 2022 17:22:25 +0000
Subject: [PATCH] fix: display server identity (if present) in typing indicator
(#703)
---
.../common/messaging/bars/TypingIndicator.tsx | 53 ++++++++++++++-----
1 file changed, 39 insertions(+), 14 deletions(-)
diff --git a/src/components/common/messaging/bars/TypingIndicator.tsx b/src/components/common/messaging/bars/TypingIndicator.tsx
index b7d2d75c..e8f88845 100644
--- a/src/components/common/messaging/bars/TypingIndicator.tsx
+++ b/src/components/common/messaging/bars/TypingIndicator.tsx
@@ -1,5 +1,5 @@
import { observer } from "mobx-react-lite";
-import { Channel } from "revolt.js";
+import { Channel, Member } from "revolt.js";
import styled from "styled-components/macro";
import { Text } from "preact-i18n";
@@ -60,6 +60,8 @@ const Base = styled.div`
`;
export default observer(({ channel }: Props) => {
+ const client = channel.client;
+
const users = channel.typing.filter(
(x) =>
typeof x !== "undefined" &&
@@ -67,24 +69,47 @@ export default observer(({ channel }: Props) => {
x.relationship !== "Blocked",
);
- if (users.length > 0) {
- users.sort((a, b) =>
- a!._id.toUpperCase().localeCompare(b!._id.toUpperCase()),
+ const members = users.map((user) => {
+ return client.members.getKey({
+ server: channel.server_id!,
+ user: user!._id,
+ });
+ });
+
+ const getName = (member: Member) => {
+ return member.nickname === null
+ ? member.user?.username
+ : member.nickname;
+ };
+
+ const getAvatar = (member: Member) => {
+ const memberAvatarURL = member.generateAvatarURL({
+ max_side: 256,
+ });
+
+ return memberAvatarURL === undefined
+ ? member.user?.generateAvatarURL({ max_side: 256 })
+ : memberAvatarURL;
+ };
+
+ if (members.length > 0) {
+ members.sort((a, b) =>
+ a!._id.user.toUpperCase().localeCompare(b!._id.user.toUpperCase()),
);
let text;
- if (users.length >= 5) {
+ if (members.length >= 5) {
text =