Skip to content

fix(mobile): comment kebab menu desyncs after close, requiring extra taps#14343

Closed
dylanjeffers wants to merge 3 commits into
mainfrom
claude/determined-banzai-51a290
Closed

fix(mobile): comment kebab menu desyncs after close, requiring extra taps#14343
dylanjeffers wants to merge 3 commits into
mainfrom
claude/determined-banzai-51a290

Conversation

@dylanjeffers
Copy link
Copy Markdown
Contributor

Summary

  • The comment kebab handler toggled isOpen and isVisible together with !, but the two are intentionally separated: isOpen drives the open/close animation, isVisible controls when the drawer is mounted (kept around during the close animation, unmounted in onClosed).
  • A tap during the close animation flipped them out of sync — isOpen went false → true, but isVisible was still true and went true → false, leaving the drawer unmounted while state thought it was open. The next tap to open the kebab appeared to do nothing.
  • Make handlePress explicitly set both to true. Dismissal is already handled by onClose/onClosed (row tap, backdrop tap, swipe down).

Verified that Edit and Delete remain correctly wired:

  • Edit sets replyingAndEditingState.editingComment on the outer CommentSectionProvider; CommentDrawerForm reads that and submits via editComment(id, message, mentions).
  • Delete opens the confirmation drawer; confirm calls deleteComment(id, parentCommentId) from @audius/common/context.

Test plan

  • On iOS, open a track's comment drawer, tap the kebab on your own comment → menu appears with Share / Edit / Delete (and Pin/Mute Thread if applicable)
  • Tap Edit → comment switches to edit mode in the footer composer; submit edits the comment
  • Tap Delete → confirmation drawer appears; confirm deletes the comment
  • Open the kebab, dismiss (backdrop tap or swipe down), then immediately tap the kebab again — menu re-opens on the first tap (regression case)
  • Repeat on Android

🤖 Generated with Claude Code

dylanjeffers and others added 3 commits May 8, 2026 14:42
Instruments three key contest interactions following the existing
'Remix Contest:' event prefix and {remixContestId, trackId} property
shape used by the host/pick-winners events:

  - REMIX_CONTEST_VIEW: contest page/screen first resolves trackId+eventId
  - REMIX_CONTEST_ENTER: user taps Enter Contest / Upload Remix
  - REMIX_CONTEST_VIEW_SUBMISSIONS: user opens the submissions tab

Mobile submissions-tab firing uses useFocusedTab from
react-native-collapsible-tab-view because the contest tabs mount
eagerly (lazy: false) — a plain mount effect would fire even for
users who only view the Details tab.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…t sections

Bug 1 (web): Align static explore section visibility with SearchResults render
condition — hide sections when inputValue is set (during debounce window) in
addition to when showSearchResults is true, so Premium and other filters applied
via the filter pills always suppress unfiltered curated sections.

Bug 2 (web): Guard empty-state tile behind !isPending in AlbumResultsPage and
PlaylistResultsPage so the NoResultsTile is not shown while the query is still
in its initial loading phase, preventing a spurious empty-state flash when
combining "Downloads Available" + "Electronic" genre filters.

Bug 3 (mobile): Include category !== 'all' in the showSearch guard on the
explore screen so tapping a content-type pill (Tracks, Albums, etc.) immediately
shows the filtered SearchResults without requiring a second filter to be added.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…taps

The kebab handler toggled isOpen and isVisible together, but these
two pieces of state are intentionally separated: isOpen drives the
open/close animation while isVisible controls when the drawer is
mounted (kept around during the close animation, then unmounted in
onClosed). Toggling both in lock-step lets a tap during the close
animation flip them out of sync, leaving the drawer unmounted while
state thinks it is open — subsequent taps then need two presses
before the Edit/Delete menu visibly appears.

Make handlePress explicitly open the menu. Dismissal is already
handled by onClose/onClosed (row tap, backdrop tap, or swipe down).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 15, 2026

⚠️ No Changeset found

Latest commit: 04e33c9

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@dylanjeffers
Copy link
Copy Markdown
Contributor Author

Closing as a duplicate of #14342, which has the same focused fix to CommentOverflowMenu.handlePress without unrelated bundled changes (contest analytics, search/explore page tweaks, AlbumResults/PlaylistResults). Tracking the canonical fix on #14342.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant