mirror of
https://github.com/mattermost/mattermost.git
synced 2026-05-28 04:35:04 -04:00
* Fix: Global Threads shows 1 quick reaction emoji instead of 3 (MM-68681)
When posts are viewed in the Global Threads full-width view, the hover
toolbar was incorrectly showing only 1 quick reaction emoji instead of 3.
Root cause: In post/index.tsx, the isExpanded prop (which controls whether
the toolbar shows 3 or 1 emojis) was derived only from
state.views.rhs.isSidebarExpanded. When navigating to Global Threads,
suppressRHS is dispatched (setting state.views.rhsSuppressed = true), but
isSidebarExpanded remains false. Since posts in the thread viewer use
RHS_ROOT/RHS_COMMENT locations (not CENTER), and the #sidebar-right element
is suppressed (width = 0), the showMoreReactions check in post_options.tsx
always fell through to showing only 1 emoji.
Fix: Include state.views.rhsSuppressed in the isExpanded computation so that
when the RHS is suppressed (i.e., we are in a full-width context like Global
Threads or Drafts), the toolbar correctly renders 3 quick reaction emojis.
Tests: Added post_options.test.tsx with 4 unit tests verifying:
- CENTER location → 3 emojis (existing behavior)
- RHS_ROOT + isExpanded=false → 1 emoji (narrow RHS, existing behavior)
- RHS_ROOT + isExpanded=true → 3 emojis (expanded RHS or Global Threads)
- RHS_COMMENT + isExpanded=true → 3 emojis
Co-authored-by: Miguel de la Cruz <mgdelacroix@users.noreply.github.com>
* Refactor: use getIsGlobalThreadsView selector instead of rhsSuppressed (MM-68681)
Replace the broad state.views.rhsSuppressed check (which also fires for the
Drafts view) with a precise getIsGlobalThreadsView() selector that reads the
already-existing state.views.lhs.currentStaticPageId field.
When global_threads.tsx mounts it dispatches selectLhsItem(LhsItemType.Page,
LhsPage.Threads) which sets currentStaticPageId to LhsPage.Threads ('threads').
This is the existing, canonical signal that the Global Threads full-width view
is active; the selector wraps it with a name that conveys intent directly.
Changes:
- selectors/lhs.ts: add getIsGlobalThreadsView() — returns true iff
state.views.lhs.currentStaticPageId === LhsPage.Threads
- selectors/lhs.test.ts: 3 new tests covering Threads, Drafts, and empty page
- post/index.tsx: import getIsGlobalThreadsView and use it in isExpanded
- post_options.test.tsx: update test description to match new mechanism
Co-authored-by: Miguel de la Cruz <mgdelacroix@users.noreply.github.com>
* Fix tests: use renderWithContext + real component tree, not jest.mock
The previous post_options.test.tsx used jest.mock() to replace
PostRecentReactions, DotMenu, and several other components. That pattern
is not established in this codebase — post_component.test.tsx and
post_reaction.test.tsx both exercise the real connected component tree
via renderWithContext with a partial Redux state.
Rewrite to match:
- Drop all jest.mock() calls for child components.
- Provide minimal Redux state (roles with ADD_REACTION + user with
system_user role) so that ChannelPermissionGate lets the emoji
buttons render — the same pattern used in post_reaction.test.tsx.
- Use proper SystemEmoji shaped objects (with short_name) as
recentEmojis so that getEmojiName() does not crash.
- Assert on the real rendered emoji buttons (data-testid=
'post-menu__item_emoji') rather than a mocked prop capture.
Co-authored-by: Miguel de la Cruz <mgdelacroix@users.noreply.github.com>
* Remove selector comment; add e2e test for Global Threads quick reactions (MM-68681)
- selectors/lhs.ts: remove JSDoc block from getIsGlobalThreadsView; the
name is self-explanatory and the comment was narrating the code.
- emoji_recently_used_spec.js:
* Add group tag @collapsed_reply_threads (test now requires CRT config).
* Add MM-T4261_3: verifies that hovering a post in the Global Threads
full-width panel shows 3 quick reaction emojis, matching the center
channel and unlike the narrow RHS sidebar which shows 1.
* Add GLOBAL_THREADS case to validateQuickReactions helper (uses
rhsPost id prefix, numReactions=3).
Co-authored-by: Miguel de la Cruz <mgdelacroix@users.noreply.github.com>
* Fix lint: correct import order in post_options.test.tsx and post/index.tsx
- post_options.test.tsx: move @mattermost/types/emojis type import before
mattermost-redux/constants; add missing blank line between import groups.
- post/index.tsx: move selectors/lhs import before selectors/posts
(alphabetical order within the selectors/* group).
Co-authored-by: Miguel de la Cruz <mgdelacroix@users.noreply.github.com>
* Fix types: use correct EmojiCategory value 'people-body' not 'people'
Co-authored-by: Miguel de la Cruz <mgdelacroix@users.noreply.github.com>
* Remove dead RHS_EXPANDED branch from validateQuickReactions helper
No call site ever passes 'RHS_EXPANDED' to validateQuickReactions — the
branch was unreachable. Keep only the 'GLOBAL_THREADS' case that the new
MM-T4261_3 test actually exercises.
Co-authored-by: Miguel de la Cruz <mgdelacroix@users.noreply.github.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Miguel de la Cruz <mgdelacroix@users.noreply.github.com>
|
||
|---|---|---|
| .. | ||
| tests | ||
| utils | ||
| cypress.config.ts | ||
| Dockerfile.webhook | ||
| eslint.config.mjs | ||
| generate_test_cycle.js | ||
| package-lock.json | ||
| package.json | ||
| README-Subpath.md | ||
| reporter-config.json | ||
| run_test_cycle.js | ||
| run_tests.js | ||
| save_report.js | ||
| tsconfig.json | ||
| webhook_serve.js | ||