Skip to content

feat: introduce extractDisplayInfo for Avatar/AvatarStack components#3244

Open
arnautov-anton wants to merge 4 commits into
masterfrom
extract-display-info-enhancement
Open

feat: introduce extractDisplayInfo for Avatar/AvatarStack components#3244
arnautov-anton wants to merge 4 commits into
masterfrom
extract-display-info-enhancement

Conversation

@arnautov-anton

@arnautov-anton arnautov-anton commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

🎯 Goal

Unify how the Avatar/AvatarStack information is being constructed through the common and replaceable utility extractDisplayInfo function.

Summary by CodeRabbit

  • New Features
    • Added an initials prop override for avatars.
    • Introduced a context-overridable display-info extractor to customize avatar rendering across messages, threads, polls, reactions, search results, typing indicators, and channel/member/pinned views.
  • Bug Fixes
    • Improved consistency for avatar display data by trimming usernames and using the trimmed name for avatar alt text, with the explicit initials override taking priority.
  • Tests
    • Updated component-context mocks to support the new context-driven avatar customization.

@arnautov-anton
arnautov-anton force-pushed the extract-display-info-enhancement branch from 6096b6d to 856bacd Compare July 16, 2026 16:58
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: db11d366-7eb2-464a-982e-713dcc208de7

📥 Commits

Reviewing files that changed from the base of the PR and between 04956d7 and 54cb7b7.

📒 Files selected for processing (3)
  • src/components/Avatar/Avatar.tsx
  • src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.tsx
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx
  • src/components/Avatar/Avatar.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.tsx

📝 Walkthrough

Walkthrough

Avatar rendering now supports explicit initials and context-provided display extraction. Core components, participant lists, typing indicators, and ChannelDetail views use customizable Avatar and display-info implementations with default fallbacks.

Changes

Avatar customization

Layer / File(s) Summary
Avatar contract and display extraction
src/components/Avatar/*, src/context/ComponentContext.tsx
Avatar accepts explicit initials, while extractDisplayInfo and its component-context contract map user data into avatar display props.
Core avatar rendering surfaces
src/components/Dialog/..., src/components/Message/..., src/components/Poll/..., src/components/Reactions/..., src/components/Search/..., src/components/TextareaComposer/...
Core avatar and avatar-stack renderers resolve contextual components and display extraction functions with default fallbacks.
Participant lists and avatar stacks
src/components/ChannelListItem/..., src/components/Threads/..., src/components/TypingIndicator/...
Participant display information is generated through the shared extractor, with typing state now using the SDK typing entry type.
ChannelDetail avatar integration
src/plugins/ChannelDetail/...
Media, member, and pinned-message views use contextual avatar rendering and updated component-context test mocks.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant View
  participant ComponentContext
  participant extractDisplayInfo
  participant Avatar
  View->>ComponentContext: resolve Avatar and extractor
  View->>extractDisplayInfo: provide user data
  extractDisplayInfo-->>View: return avatar display props
  View->>Avatar: render contextual avatar
Loading

Possibly related PRs

Suggested labels: released on @latest``

Suggested reviewers: martincupela

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description only includes the Goal section; Implementation details and UI Changes are missing. Add the Implementation details section and the UI Changes section, or state that there are no screenshots to include.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly names the main change: introducing extractDisplayInfo for Avatar/AvatarStack.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch extract-display-info-enhancement

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown

Size Change: +863 B (+0.1%)

Total Size: 881 kB

📦 View Changed
Filename Size Change
dist/cjs/channel-detail.js 23.1 kB +188 B (+0.82%)
dist/cjs/index.js 293 kB +180 B (+0.06%)
dist/cjs/useChannelHeaderOnlineStatus.js 41.1 kB +99 B (+0.24%)
dist/es/channel-detail.mjs 22.7 kB +118 B (+0.52%)
dist/es/index.mjs 290 kB +178 B (+0.06%)
dist/es/useChannelHeaderOnlineStatus.mjs 40.6 kB +100 B (+0.25%)
ℹ️ View Unchanged
Filename Size
dist/cjs/audioProcessing.js 1.74 kB
dist/cjs/emojis.js 2.56 kB
dist/cjs/mp3-encoder.js 814 B
dist/cjs/ReactPlayerWrapper.js 547 B
dist/cjs/useMessageComposerController.js 1.01 kB
dist/cjs/useNotificationApi.js 57.5 kB
dist/css/channel-detail.css 2.84 kB
dist/css/emoji-picker.css 178 B
dist/css/emoji-replacement.css 456 B
dist/css/index.css 41.4 kB
dist/es/audioProcessing.mjs 1.65 kB
dist/es/emojis.mjs 2.48 kB
dist/es/mp3-encoder.mjs 768 B
dist/es/ReactPlayerWrapper.mjs 485 B
dist/es/useMessageComposerController.mjs 935 B
dist/es/useNotificationApi.mjs 56.1 kB

compressed-size-action

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 87.80488% with 5 lines in your changes missing coverage. Please review.
✅ Project coverage is 85.21%. Comparing base (fa67adf) to head (54cb7b7).
⚠️ Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
src/components/Dialog/components/ContextMenu.tsx 0.00% 4 Missing ⚠️
src/components/Poll/PollVote.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #3244      +/-   ##
==========================================
+ Coverage   85.17%   85.21%   +0.03%     
==========================================
  Files         505      506       +1     
  Lines       15779    15795      +16     
  Branches     5008     5023      +15     
==========================================
+ Hits        13440    13459      +19     
+ Misses       2339     2336       -3     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (3)
src/components/Avatar/utils.ts (1)

3-9: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove commented-out code.

Please remove the commented-out code // || user?.id, to keep the codebase clean. If you intend to fall back to id, uncomment it; otherwise, remove it entirely.

♻️ Proposed refactor
 export const extractDisplayInfo: NonNullable<
   ComponentContextValue['extractDisplayInfo']
 > = ({ user }) => ({
   id: user?.id,
   imageUrl: user?.image,
-  userName: user?.name, // || user?.id,
+  userName: user?.name,
 });
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/Avatar/utils.ts` around lines 3 - 9, Remove the commented-out
fallback `// || user?.id,` from the `userName` property in `extractDisplayInfo`;
leave the existing `user?.name` behavior unchanged.
src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx (1)

3-3: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Remove unused import.

The UserResponse type is imported but never used in this file. Removing it will keep the imports clean and address the linter warning.

♻️ Proposed refactor
-import type { UserResponse, UserSuggestion } from 'stream-chat';
+import type { UserSuggestion } from 'stream-chat';
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx` at
line 3, Remove the unused UserResponse type from the import in UserItem.tsx,
leaving only the UserSuggestion type required by the file.

Source: Linters/SAST tools

src/components/Poll/PollOptionSelector.tsx (1)

106-107: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Be explicit when mapping to the context callback.

Passing the iteration item directly to map can be risky if the context consumer expects strictly { user } without the other properties present on PollVote (like id or created_at), or if they rely on the second parameter (index). For consistency with other components and safer contract adherence, wrap the callback to explicitly pass only the expected payload.

♻️ Proposed refactor
-        .map(extractDisplayInfo),
-    [displayAvatarCount, extractDisplayInfo, latest_votes_by_option, option.id],
+        .map((vote) => extractDisplayInfo({ user: vote.user })),
+    [displayAvatarCount, extractDisplayInfo, latest_votes_by_option, option.id],
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/Poll/PollOptionSelector.tsx` around lines 106 - 107, Update
the mapping logic in PollOptionSelector’s vote display computation to wrap
extractDisplayInfo in an explicit callback, passing only the expected user
payload rather than the full PollVote item and avoiding reliance on map’s index
argument. Preserve the existing dependency list and resulting display data.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/Avatar/Avatar.tsx`:
- Around line 65-76: Update the Avatar component’s prop destructuring to remove
initials from the object spread before rendering the div, and use the resulting
DOM-safe props object in place of rest. Also remove the redundant trim call when
assigning avatarImageAlt, since nameString is already trimmed.

In
`@src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.tsx`:
- Around line 68-76: Prevent unstable component-slot recreation by moving
extractDisplayInfo calls inside the useMemo factory for
ChannelMembersAddView.tsx lines 68-76, ChannelMembersBrowseView.tsx lines 65-73,
and PinnedMessagesView.tsx lines 90-98. Update the respective dependency arrays
to [Avatar, extractDisplayInfo, user, user.online], [Avatar, extractDisplayInfo,
user, user?.online], and [Avatar, extractDisplayInfo, message.user], preserving
each slot’s existing avatar behavior.

---

Nitpick comments:
In `@src/components/Avatar/utils.ts`:
- Around line 3-9: Remove the commented-out fallback `// || user?.id,` from the
`userName` property in `extractDisplayInfo`; leave the existing `user?.name`
behavior unchanged.

In `@src/components/Poll/PollOptionSelector.tsx`:
- Around line 106-107: Update the mapping logic in PollOptionSelector’s vote
display computation to wrap extractDisplayInfo in an explicit callback, passing
only the expected user payload rather than the full PollVote item and avoiding
reliance on map’s index argument. Preserve the existing dependency list and
resulting display data.

In `@src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx`:
- Line 3: Remove the unused UserResponse type from the import in UserItem.tsx,
leaving only the UserSuggestion type required by the file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6c4e6f7b-6546-4bdc-8b55-ef98b08f31e8

📥 Commits

Reviewing files that changed from the base of the PR and between 20936d6 and 856bacd.

📒 Files selected for processing (23)
  • src/components/Avatar/Avatar.tsx
  • src/components/Avatar/utils.ts
  • src/components/ChannelListItem/utils.tsx
  • src/components/Dialog/components/ContextMenu.tsx
  • src/components/Message/MessageRepliesCountButton.tsx
  • src/components/Message/MessageUI.tsx
  • src/components/Poll/PollOptionSelector.tsx
  • src/components/Poll/PollVote.tsx
  • src/components/Reactions/MessageReactionsDetail.tsx
  • src/components/Search/SearchResults/SearchResultItem.tsx
  • src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx
  • src/components/Threads/ThreadList/ThreadListItemUI.tsx
  • src/components/Threads/ThreadList/__tests__/ThreadListItemUI.test.tsx
  • src/components/TypingIndicator/TypingIndicator.tsx
  • src/components/TypingIndicator/hooks/useDebouncedTypingActive.ts
  • src/context/ComponentContext.tsx
  • src/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/__tests__/ChannelMembersAddView.test.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/__tests__/ChannelMembersBrowseView.test.tsx
  • src/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.tsx
  • src/plugins/ChannelDetail/Views/PinnedMessagesView/__tests__/PinnedMessagesView.test.tsx

Comment thread src/components/Avatar/Avatar.tsx Outdated
Comment on lines +68 to 76
const displayInfo = extractDisplayInfo({ user });

const LeadingSlot = useMemo(
() =>
function MemberAvatar() {
return (
<Avatar
imageUrl={user.image}
isOnline={user.online}
size='md'
userName={displayName}
/>
);
return <Avatar {...displayInfo} isOnline={user.online} size='md' />;
},
[displayName, user.image, user.online],
[Avatar, displayInfo, user.online],
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀 Performance & Scalability | 🔴 Critical | ⚡ Quick win

Unmount/remount loop caused by unstable dependency in component slot.

extractDisplayInfo returns a new object on every call. Computing displayInfo during render and passing it into the useMemo dependency array causes the array to change on every render. Consequently, the inline functional component (LeadingSlot) is recreated on every render, forcing React to continuously unmount and remount the avatar slot component, causing layout thrashing and loss of DOM state.

To resolve this, move the displayInfo computation inside the useMemo factory function so the slot component is only recreated when its actual dependencies (user, Avatar, extractDisplayInfo) change.

  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.tsx#L68-L76: Move displayInfo computation inside the useMemo factory function and update dependencies to [Avatar, extractDisplayInfo, user, user.online].
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.tsx#L65-L73: Move displayInfo computation inside the useMemo factory function and update dependencies to [Avatar, extractDisplayInfo, user, user?.online].
  • src/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.tsx#L90-L98: Move displayInfo computation inside the useMemo factory function and update dependencies to [Avatar, extractDisplayInfo, message.user].
🚀 Proposed fixes

ChannelMembersAddView.tsx

-  const displayInfo = extractDisplayInfo({ user });
-
   const LeadingSlot = useMemo(
-    () =>
-      function MemberAvatar() {
-        return <Avatar {...displayInfo} isOnline={user.online} size='md' />;
-      },
-    [Avatar, displayInfo, user.online],
+    () => {
+      const displayInfo = extractDisplayInfo({ user });
+      return function MemberAvatar() {
+        return <Avatar {...displayInfo} isOnline={user.online} size='md' />;
+      };
+    },
+    [Avatar, extractDisplayInfo, user, user.online],
   );

ChannelMembersBrowseView.tsx

-  const displayInfo = extractDisplayInfo({ user: user ?? undefined });
-
   const LeadingSlot = useMemo(
-    () =>
-      function MemberAvatar() {
-        return <Avatar {...displayInfo} isOnline={user?.online} size='md' />;
-      },
-    [Avatar, displayInfo, user],
+    () => {
+      const displayInfo = extractDisplayInfo({ user: user ?? undefined });
+      return function MemberAvatar() {
+        return <Avatar {...displayInfo} isOnline={user?.online} size='md' />;
+      };
+    },
+    [Avatar, extractDisplayInfo, user, user?.online],
   );

PinnedMessagesView.tsx

-  const displayInfo = extractDisplayInfo({ user: message.user ?? undefined });
-
   const LeadingSlot = useMemo(
-    () =>
-      function MessageAuthorAvatar() {
-        return <Avatar {...displayInfo} size='md' />;
-      },
-    [Avatar, displayInfo],
+    () => {
+      const displayInfo = extractDisplayInfo({ user: message.user ?? undefined });
+      return function MessageAuthorAvatar() {
+        return <Avatar {...displayInfo} size='md' />;
+      };
+    },
+    [Avatar, extractDisplayInfo, message.user],
   );
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const displayInfo = extractDisplayInfo({ user });
const LeadingSlot = useMemo(
() =>
function MemberAvatar() {
return (
<Avatar
imageUrl={user.image}
isOnline={user.online}
size='md'
userName={displayName}
/>
);
return <Avatar {...displayInfo} isOnline={user.online} size='md' />;
},
[displayName, user.image, user.online],
[Avatar, displayInfo, user.online],
);
const LeadingSlot = useMemo(
() => {
const displayInfo = extractDisplayInfo({ user });
return function MemberAvatar() {
return <Avatar {...displayInfo} isOnline={user.online} size='md' />;
};
},
[Avatar, extractDisplayInfo, user, user.online],
);
📍 Affects 3 files
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.tsx#L68-L76 (this comment)
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.tsx#L65-L73
  • src/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.tsx#L90-L98
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.tsx`
around lines 68 - 76, Prevent unstable component-slot recreation by moving
extractDisplayInfo calls inside the useMemo factory for
ChannelMembersAddView.tsx lines 68-76, ChannelMembersBrowseView.tsx lines 65-73,
and PinnedMessagesView.tsx lines 90-98. Update the respective dependency arrays
to [Avatar, extractDisplayInfo, user, user.online], [Avatar, extractDisplayInfo,
user, user?.online], and [Avatar, extractDisplayInfo, message.user], preserving
each slot’s existing avatar behavior.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx`:
- Around line 35-44: Stabilize the displayInfo value used by the LeadingSlot
useMemo in UserItem by memoizing the extractDisplayInfo({ user: entity }) result
with the appropriate stable dependencies. Keep LeadingSlot dependent on this
memoized value so the UserItemAvatar component is not recreated on every render.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 348ecba8-13ad-4e57-ae0e-835b788390f1

📥 Commits

Reviewing files that changed from the base of the PR and between 856bacd and d947464.

📒 Files selected for processing (23)
  • src/components/Avatar/Avatar.tsx
  • src/components/Avatar/utils.ts
  • src/components/ChannelListItem/utils.tsx
  • src/components/Dialog/components/ContextMenu.tsx
  • src/components/Message/MessageRepliesCountButton.tsx
  • src/components/Message/MessageUI.tsx
  • src/components/Poll/PollOptionSelector.tsx
  • src/components/Poll/PollVote.tsx
  • src/components/Reactions/MessageReactionsDetail.tsx
  • src/components/Search/SearchResults/SearchResultItem.tsx
  • src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx
  • src/components/Threads/ThreadList/ThreadListItemUI.tsx
  • src/components/Threads/ThreadList/__tests__/ThreadListItemUI.test.tsx
  • src/components/TypingIndicator/TypingIndicator.tsx
  • src/components/TypingIndicator/hooks/useDebouncedTypingActive.ts
  • src/context/ComponentContext.tsx
  • src/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/__tests__/ChannelMembersAddView.test.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/__tests__/ChannelMembersBrowseView.test.tsx
  • src/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.tsx
  • src/plugins/ChannelDetail/Views/PinnedMessagesView/__tests__/PinnedMessagesView.test.tsx
🚧 Files skipped from review as they are similar to previous changes (20)
  • src/plugins/ChannelDetail/Views/PinnedMessagesView/tests/PinnedMessagesView.test.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/tests/ChannelMembersBrowseView.test.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/tests/ChannelMembersAddView.test.tsx
  • src/components/Threads/ThreadList/tests/ThreadListItemUI.test.tsx
  • src/components/Message/MessageRepliesCountButton.tsx
  • src/components/TypingIndicator/hooks/useDebouncedTypingActive.ts
  • src/components/TypingIndicator/TypingIndicator.tsx
  • src/components/Poll/PollOptionSelector.tsx
  • src/context/ComponentContext.tsx
  • src/components/Dialog/components/ContextMenu.tsx
  • src/plugins/ChannelDetail/Views/PinnedMessagesView/PinnedMessagesView.tsx
  • src/components/Reactions/MessageReactionsDetail.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersAddView.tsx
  • src/components/Poll/PollVote.tsx
  • src/components/Threads/ThreadList/ThreadListItemUI.tsx
  • src/components/ChannelListItem/utils.tsx
  • src/plugins/ChannelDetail/Views/ChannelMembersView/ChannelMembersBrowseView.tsx
  • src/components/Avatar/Avatar.tsx
  • src/plugins/ChannelDetail/Views/ChannelMediaView/ChannelMediaView.tsx
  • src/components/Message/MessageUI.tsx

Comment thread src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants