Skip to content

Ux impros 18122025 1#1610

Merged
simo6529 merged 6 commits intomainfrom
ux-impros-18122025-1
Nov 18, 2025
Merged

Ux impros 18122025 1#1610
simo6529 merged 6 commits intomainfrom
ux-impros-18122025-1

Conversation

@simo6529
Copy link
Copy Markdown
Collaborator

@simo6529 simo6529 commented Nov 18, 2025

Summary by CodeRabbit

  • New Features

    • Profile tooltips now display follow buttons for other users, enabling quick social interactions
  • Improvements

    • Tooltip hover behavior enhanced with smoother transitions and better timing
    • User profile card layout redesigned for improved visual hierarchy and information organization
    • Profile picture navigation improved with better linking behavior
  • Other Changes

    • AWS RUM monitoring disabled

Signed-off-by: Simo <simo@6529.io>
Signed-off-by: Simo <simo@6529.io>
Signed-off-by: Simo <simo@6529.io>
Signed-off-by: Simo <simo@6529.io>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Nov 18, 2025

Walkthrough

Multiple component enhancements addressing tooltip behavior, profile interactions, and monitoring initialization. Updates CustomTooltip with hover-aware timer management, redesigns UserProfileTooltip layout with follow button integration, configures WaveDropAuthorPfp for navigable profile links, and disables AWS RUM initialization via guard clause.

Changes

Cohort / File(s) Summary
Tooltip & Hover Behavior
components/utils/tooltip/CustomTooltip.tsx
Added hoverTransitionDelay prop (default 150ms) with pointer-aware hover state tracking; introduced timer cancellation helpers (cancelShowTimer, cancelHideTimer); added mouse enter/leave handlers to tooltip element to prevent hiding when pointer hovers over tooltip; updated show/hide logic to respect hover state and delay hide transitions; changed pointer-events from 'none' to 'auto'.
Profile Components
components/user/utils/profile/UserProfileTooltip.tsx, components/waves/drops/WaveDropAuthorPfp.tsx
UserProfileTooltip redesigned with two-column layout, memoized handle comparisons, and conditional follow button rendering. WaveDropAuthorPfp adds router-based navigation, Link wrapper with onClick handler, computed profileHref from author handle, and tooltip user identifier support.
Monitoring
components/monitoring/AwsRumProvider.tsx
Modified client-side initialization guard to unconditionally short-circuit, making AWS RUM initialization unreachable in all cases.
Build Configuration
package.json
Added "lint:changed" npm script to scan and lint changed/untracked JavaScript/TypeScript files (excluding generated/**) with ESLint.

Sequence Diagram(s)

sequenceDiagram
    participant User as User<br/>(Pointer)
    participant Child as Child<br/>Component
    participant Tooltip as CustomTooltip<br/>Container
    participant Timer as Timer<br/>Manager

    User->>Child: onMouseEnter
    Child->>Tooltip: onMouseEnter (merged handler)
    Tooltip->>Timer: cancelHideTimer()
    Tooltip->>Timer: setTimeout(show, 0)

    User->>Tooltip: Move pointer over tooltip
    Tooltip->>Tooltip: handleTooltipMouseEnter()
    Tooltip->>Tooltip: isPointerOverTooltipRef = true
    Tooltip->>Timer: cancelHideTimer()

    User->>Child: onMouseLeave
    Child->>Tooltip: onMouseLeave (merged handler)
    Tooltip->>Tooltip: isPointerOverTooltipRef = false
    Tooltip->>Timer: cancelShowTimer()
    Tooltip->>Timer: setTimeout(hide, delayHide + hoverTransitionDelay)

    User->>Tooltip: Move pointer back over tooltip
    Tooltip->>Tooltip: handleTooltipMouseEnter()
    Tooltip->>Tooltip: isPointerOverTooltipRef = true
    Tooltip->>Timer: cancelHideTimer()
    Tooltip->>Tooltip: Tooltip remains visible
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • CustomTooltip.tsx requires careful review of timer lifecycle management, hover state tracking logic, and event handler merging patterns—the pointer-events change and timer cancellation helpers introduce moderate complexity
  • UserProfileTooltip.tsx layout refactoring and follow button conditional rendering are straightforward but require visual verification of the new two-column structure
  • WaveDropAuthorPfp.tsx router navigation and tooltip wrapper integration are clear but router.push callback should be verified for proper error handling
  • AwsRumProvider.tsx is a simple guard change but should confirm intent (intentional feature disable vs. bug fix)

Possibly related PRs

  • PR #1575: Also modifies components/utils/tooltip/CustomTooltip.tsx with event handler wiring and positioning logic changes—potential for conflicts in shared code paths, particularly around child cloning and handler merging.

Suggested reviewers

  • ragnep
  • prxt6529

Poem

🐰 Hop, hop—the tooltips now hover with grace,
Profiles link smoothly to each user's place,
Timers dance gently, delaying with care,
While RUM sleeps sound, without a single flare!
Lint scripts stand guard—all changes held fair.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Title check ❓ Inconclusive The title 'Ux impros 18122025 1' is vague and does not clearly convey the main changes; it appears to be a timestamp-based label without descriptive content about the actual modifications. Rename the pull request title to clearly describe the primary changes, such as 'Add profile tooltip follow button and improve custom tooltip hover behavior' or similar descriptive phrasing.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch ux-impros-18122025-1

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 and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
components/monitoring/AwsRumProvider.tsx (1)

14-21: Replace if (true) return; with an explicit early return to satisfy linters and clarify intent

Right now AWS RUM is effectively disabled via a constant condition, which Biome correctly flags as an error (noConstantCondition). It also contradicts the “Only initialize AWS RUM on the client side” comment.

You can keep RUM disabled while making the intent clear and avoiding the constant-condition error by using a plain early return:

-  useEffect(() => {
-    // Only initialize AWS RUM on the client side
-    if (true) return;
+  useEffect(() => {
+    // AWS RUM temporarily disabled; remove this early return to re-enable initialization
+    return;

This keeps all the initialization code ready for later reactivation, avoids linter errors, and keeps the behavior explicit.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 618225b and 35604d9.

📒 Files selected for processing (5)
  • components/monitoring/AwsRumProvider.tsx (1 hunks)
  • components/user/utils/profile/UserProfileTooltip.tsx (2 hunks)
  • components/utils/tooltip/CustomTooltip.tsx (6 hunks)
  • components/waves/drops/WaveDropAuthorPfp.tsx (1 hunks)
  • package.json (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
components/waves/drops/WaveDropAuthorPfp.tsx (3)
generated/models/ApiDrop.ts (1)
  • ApiDrop (28-227)
components/ipfs/IPFSContext.tsx (1)
  • resolveIpfsUrlSync (77-89)
components/utils/tooltip/UserProfileTooltipWrapper.tsx (1)
  • UserProfileTooltipWrapper (12-34)
components/user/utils/profile/UserProfileTooltip.tsx (2)
components/auth/Auth.tsx (1)
  • AuthContext (83-93)
components/user/utils/UserFollowBtn.tsx (1)
  • UserFollowBtn (47-232)
🪛 Biome (2.1.2)
components/monitoring/AwsRumProvider.tsx

[error] 16-16: Unexpected constant condition.

(lint/correctness/noConstantCondition)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (javascript-typescript)
🔇 Additional comments (2)
components/user/utils/profile/UserProfileTooltip.tsx (1)

7-9: Follow button + header layout logic looks solid

The new AuthContext wiring and follow button conditions are well-structured:

  • showFollowButton only when the tooltip profile has a handle and it differs (case-insensitive) from connectedProfile.handle, so you don’t get a follow button on your own profile.
  • Using the handle as the UserFollowBtn key keeps the API consistent with existing follow logic.
  • The inline layout (avatar + CIC icon + handle + description + level + follow button) is cohesive and keeps the tooltip compact.

I don’t see any correctness issues here; this is a clean UX improvement.

Also applies to: 17-19, 60-73, 78-110

components/utils/tooltip/CustomTooltip.tsx (1)

22-23: Verification confirms the review is accurate; pointer-events change is appropriate for the single production usage

Verification found only one production usage of CustomTooltip in UserProfileTooltipWrapper.tsx (profile tooltip with delayHide={0}), which is fully compatible with the pointerEvents: 'auto' change and the new 150ms hoverTransitionDelay. Profile content is contextually appropriate for blocking underlying pointer events. The component has comprehensive test coverage, and all timer cleanup logic is sound.

The review's two points remain valid:

  • Pointer-events behavior change: Correctly identified; appropriate for this tooltip use case.
  • Optional show-timer refinement: Valid suggestion; clearing the existing show timer is tidy but benign since rapid enter/leave/enter just enqueues redundant setIsVisible(true) calls.

Proceed with confidence; manually verify any future contexts where tooltips might overlap interactive UI requiring pointer passthrough.

Comment thread components/waves/drops/WaveDropAuthorPfp.tsx Outdated
Comment thread package.json Outdated
Signed-off-by: Simo <simo@6529.io>
Signed-off-by: Simo <simo@6529.io>
@sonarqubecloud
Copy link
Copy Markdown

@simo6529 simo6529 merged commit a5abbd0 into main Nov 18, 2025
7 checks passed
@simo6529 simo6529 deleted the ux-impros-18122025-1 branch November 18, 2025 11:46
This was referenced Nov 27, 2025
@coderabbitai coderabbitai Bot mentioned this pull request Dec 22, 2025
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