Skip to content

Conversation

@grv-saini-20
Copy link
Collaborator

@grv-saini-20 grv-saini-20 commented Jan 16, 2026

Description of change

Fixed the dreamsync welcome with user name.
image

Issue Number

closes #629

Type of change

  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)

How the change has been tested

Manual

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Profile follow UI improved: clearer loading state and a distinct "Following" confirmation.
    • Follow state tracking refined to provide smoother animations and consistent feedback.
  • Bug Fixes / Improvements

    • Welcome name display updated to prefer a consolidated name field with email fallback.
  • Chores

    • Simplified follow interaction logic for more reliable UX and faster UI resets.

✏️ Tip: You can customize this high-level summary in your review settings.

@grv-saini-20 grv-saini-20 self-assigned this Jan 16, 2026
@grv-saini-20 grv-saini-20 requested a review from coodos as a code owner January 16, 2026 05:25
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 16, 2026

📝 Walkthrough

Walkthrough

Updated user display to use user?.name (with fallbacks) and added name?: string to UserWithProfile. Enhanced profile follow UI by adding isFollowing and didFollowed state, wiring them between page and Profile component, and simplifying follow request logic/animation.

Changes

Cohort / File(s) Summary
User name & schema
platforms/dreamSync/client/src/pages/wishlist-editor.tsx, platforms/dreamSync/shared/schema.ts
Replace user?.firstName with user?.name (fallback to email or 'User'); add optional name?: string to UserWithProfile type.
Profile follow UI & state
platforms/pictique/src/lib/fragments/Profile/Profile.svelte, platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte
Add exported didFollowed prop and isFollowing/didFollowed bindings; remove requestSent flow; simplify follow handler to set isFollowing, call follow API, set didFollowed, trigger brief animation/1s delay then refresh profile, and reset flags. UI shows final state using didFollowed.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant ProfilePage as Profile Page (Svelte)
  participant ProfileComponent as Profile.svelte
  participant API as /api/users/:id/follow
  participant Backend as Server/DB

  User->>ProfileComponent: Click "Follow" button
  ProfileComponent->>ProfilePage: emit follow action (bound)
  ProfilePage->>ProfilePage: set isFollowing = true
  ProfilePage->>API: POST /api/users/{id}/follow
  API->>Backend: persist follow
  Backend-->>API: 200 OK
  API-->>ProfilePage: success
  ProfilePage->>ProfileComponent: set didFollowed = true (bound)
  ProfileComponent-->>ProfilePage: visual animation (btnScale) / display Tick
  ProfilePage->>ProfilePage: wait 1s, set didFollowed = false
  ProfilePage->>ProfilePage: fetchProfile() to refresh state
  ProfilePage->>ProfileComponent: update props (isFollowing=false or updated)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • coodos
  • sosweetham

Poem

🐰 I hopped in with a tiny cheer,
No more "User" whispering here.
Names now spring and buttons prance,
A follow click, a joyful dance. ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 3
❌ Failed checks (2 warnings, 1 inconclusive)
Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR includes changes to the Profile.svelte component and follow functionality that appear unrelated to the Dreamsync welcome message fix described in the objectives. Review whether changes to pictique Profile component's didFollowed prop and follow functionality are intentional or should be excluded from this PR.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Fix/dreamsync welcome' is vague and uses generic phrasing that doesn't clearly convey the specific change of displaying actual user names instead of placeholders. Consider revising to something more specific like 'Show actual user name in Dreamsync welcome message' or 'Fix hardcoded User placeholder in welcome message'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The pull request description is mostly complete, following the template with Issue Number, Type of change, How tested, and Change checklist all properly filled out.
Linked Issues check ✅ Passed The pull request successfully addresses issue #629 by replacing the hardcoded 'User' placeholder with actual user name, email fallback, and proper type definition in the schema.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.



📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1f0a0af and b54c566.

📒 Files selected for processing (1)
  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte
🚧 Files skipped from review as they are similar to previous changes (1)
  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte
⏰ 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). (2)
  • GitHub Check: build
  • GitHub Check: lint

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.


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
Contributor

@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: 1

🤖 Fix all issues with AI agents
In `@platforms/pictique/src/lib/fragments/Profile/Profile.svelte`:
- Around line 30-37: wrappedFollow currently sets requestSent unconditionally
after await handleFollow(), causing failures to be treated as success; modify
handleFollow to return a boolean success flag (or rethrow on failure) and then
update wrappedFollow to capture that return value and only set requestSent =
true when success === true; ensure btnScale.target is restored to 1 in a finally
block so the button animation resets regardless of outcome.
🧹 Nitpick comments (1)
platforms/pictique/src/lib/fragments/Profile/Profile.svelte (1)

57-83: Check button variant hierarchy for Follow vs Message.

In Pictique, variant="primary" is visually secondary while variant="secondary" reads as primary. If “Follow” should be the primary CTA, consider swapping variants for the follow and message buttons.

Based on learnings, the Button variant mapping in this codebase is intentionally inverted for visual hierarchy.

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d6dc3c7 and c2faa2d.

📒 Files selected for processing (4)
  • platforms/dreamSync/client/src/pages/wishlist-editor.tsx
  • platforms/dreamSync/shared/schema.ts
  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte
  • platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2026-01-08T06:01:19.105Z
Learnt from: grv-saini-20
Repo: MetaState-Prototype-Project/prototype PR: 651
File: platforms/pictique/src/routes/(protected)/messages/+page.svelte:569-587
Timestamp: 2026-01-08T06:01:19.105Z
Learning: In the Pictique platform codebase at platforms/pictique, the Button component's `variant="primary"` visually appears more like a secondary button, while `variant="secondary"` appears more prominent/primary. Developers intentionally swap these variants to achieve the desired visual hierarchy.

Applied to files:

  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte
📚 Learning: 2026-01-05T11:46:43.214Z
Learnt from: Bekiboo
Repo: MetaState-Prototype-Project/prototype PR: 653
File: platforms/pictique/src/routes/(auth)/auth/+page.svelte:173-173
Timestamp: 2026-01-05T11:46:43.214Z
Learning: In Tailwind CSS v4, gradient utilities were renamed from bg-gradient-to-{direction} to bg-linear-to-{direction}. For all Svelte components (e.g., any .svelte files in the project), replace usages like bg-gradient-to-r, bg-gradient-to-l, etc. with bg-linear-to-r, bg-linear-to-l, etc. Ensure consistency across the codebase, update any documentation or design tokens, and run visual/test checks to confirm gradients render as intended.

Applied to files:

  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte
  • platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte
⏰ 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). (2)
  • GitHub Check: lint
  • GitHub Check: build

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

Copy link
Contributor

@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: 1

🤖 Fix all issues with AI agents
In `@platforms/pictique/src/routes/`(auth)/auth/+page.svelte:
- Around line 150-152: The onDestroy cleanup is currently registered inside the
onMount block and can be skipped when auto-login returns early; move the
onDestroy(...) call so it is declared alongside (and before) onMount(...) to
ensure it always runs; specifically, ensure the onDestroy handler clears
timerInterval (if set) and removes the window resize listener that references
checkMobile (the same listener added earlier) so the resize listener and
interval are always cleaned up even when auto-login short-circuits.
♻️ Duplicate comments (1)
platforms/pictique/src/lib/fragments/Profile/Profile.svelte (1)

29-35: Reset button scale even if follow fails.
If handleFollow throws, the scale never resets. Wrap it in try/finally to guarantee the UI returns to normal.

🐛 Suggested fix
 async function wrappedFollow() {
 	btnScale.target = 0.95;
-	await handleFollow();
-	btnScale.target = 1;
+	try {
+		await handleFollow();
+	} finally {
+		btnScale.target = 1;
+	}
 }
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c2faa2d and 900ba62.

📒 Files selected for processing (3)
  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte
  • platforms/pictique/src/routes/(auth)/auth/+page.svelte
  • platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2026-01-08T06:01:19.105Z
Learnt from: grv-saini-20
Repo: MetaState-Prototype-Project/prototype PR: 651
File: platforms/pictique/src/routes/(protected)/messages/+page.svelte:569-587
Timestamp: 2026-01-08T06:01:19.105Z
Learning: In the Pictique platform codebase at platforms/pictique, the Button component's `variant="primary"` visually appears more like a secondary button, while `variant="secondary"` appears more prominent/primary. Developers intentionally swap these variants to achieve the desired visual hierarchy.

Applied to files:

  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte
📚 Learning: 2026-01-05T11:46:43.214Z
Learnt from: Bekiboo
Repo: MetaState-Prototype-Project/prototype PR: 653
File: platforms/pictique/src/routes/(auth)/auth/+page.svelte:173-173
Timestamp: 2026-01-05T11:46:43.214Z
Learning: In Tailwind CSS v4, gradient utilities were renamed from bg-gradient-to-{direction} to bg-linear-to-{direction}. For all Svelte components (e.g., any .svelte files in the project), replace usages like bg-gradient-to-r, bg-gradient-to-l, etc. with bg-linear-to-r, bg-linear-to-l, etc. Ensure consistency across the codebase, update any documentation or design tokens, and run visual/test checks to confirm gradients render as intended.

Applied to files:

  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte
  • platforms/pictique/src/routes/(auth)/auth/+page.svelte
  • platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte
⏰ 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). (2)
  • GitHub Check: lint
  • GitHub Check: build
🔇 Additional comments (9)
platforms/pictique/src/lib/fragments/Profile/Profile.svelte (2)

4-25: Follow-state props wiring looks good.
Props/defaults for isFollowing and didFollowed plus the message handler align cleanly with the new UI state surface.


54-80: Follow button state rendering is clear.
The disabled logic and Follow / Following / Followed visuals read well and should feel responsive.

platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte (3)

30-31: Local follow state tracking looks good.
Clear separation of isFollowing and didFollowed makes the UI state readable.


53-66: Follow request flow is solid.
Setting isFollowing before the request and resetting in finally keeps UI state consistent.


105-108: Bindings correctly wire follow state to the Profile component.
Two‑way bindings match the new child props and should keep UI in sync.

platforms/pictique/src/routes/(auth)/auth/+page.svelte (4)

19-20: State additions for countdown are clear.

The new state and interval handle read well and are easy to follow.


74-83: Timer loop is straightforward and self-terminating.

Interval decrement + reload-on-expiry is easy to reason about.


109-110: Starting the timer after QR data is fetched is appropriate.

Keeps the expiry aligned with the QR/session lifetime.


226-231: Dynamic countdown messaging reads well.

Conditional styling for the last 10 seconds is a nice touch.

✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.

@coodos coodos merged commit a6c5925 into main Jan 16, 2026
4 checks passed
@coodos coodos deleted the fix/dreamsync-welcome branch January 16, 2026 12:54
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.

[Bug] Dreamsync welcomes users

3 participants