Skip to content

feat: /profile route group absorbing profile and account dapps#456

Open
braianj wants to merge 85 commits into
masterfrom
feat/profile-rebuild
Open

feat: /profile route group absorbing profile and account dapps#456
braianj wants to merge 85 commits into
masterfrom
feat/profile-rebuild

Conversation

@braianj
Copy link
Copy Markdown
Collaborator

@braianj braianj commented May 13, 2026

absorbs the standalone profile.decentraland.org and account.decentraland.org dapps into this SPA as a new /profile/* heavy route group. UI rewritten in decentraland-ui2 against the Figma Profile-Account (yJKdWwOvajSa3R95RAEMkq) file. all data fetches use the existing sites stack (signedFetch, @dcl/social-rpc-client, RTK Query) — no Web3 providers added.

scope

  • /profile, /profile/me, /profile/:address, /profile/:address/:tab mounted inside DappsShell (heavy tier). /profile/me redirects to the logged-in address via useAuthIdentity. ProfileSurface renders both the standalone route and the in-modal swap.
  • standalone ProfileModal (URL-driven via ?profile=<addr>) and ModalProfileNavigationProvider (in-modal swap used by whats-on's event detail). jump's Card + whats-on's DetailModalCreator both open the modal via useOpenProfileModal().

tabs

  • overview: bio + info grid + links + badges with achieved-tier tooltip + equipped items grid (CatalogCard with new infoBadges slot for wearable category + body-shape icons)
  • creations: /v2/catalog?creator=:address paginated CatalogCard grid, wearables/emotes chip filters, "view all" link to marketplace account
  • assets (own only): /v1/nfts?owner=:address with all/wearables/emotes/names/lands/estates filters, on-sale price from order.price
  • communities (own only): /v1/members/:address/communities signed; member-profile view shows "private" empty state (endpoint enforces auth === :address)
  • places: places-api ?owner=:address, click → /jump/places?position=
  • photos: camera-reel-service, click → /reels/:id
  • referral rewards (own only): /v1/referral-progress signed; tier thresholds copied from profile-dapp; invite link copy

social

  • friendship status / request / cancel / accept / remove via @dcl/social-rpc-client (WebSocket). live status reflected in the friendship button label + icon
  • block / unblock kebab menu next to the friendship button
  • mutual friends preview (3 avatar dots + count) for member profile
  • friends modal opened from own-profile friends count

ui2 PR

decentraland-ui2 extended with infoBadges, disableInfoExpansion, bottomAction, creatorSlot, hoverShadow, hideRarityOnHover CatalogCard props plus spacing fixes. PR open at decentraland/ui2#440. consumed locally via npm pack + --no-save install until merged; sites carries override CSS in OverviewTab.styled.ts to handle the lag.

env

new vars added to src/config/env/*.json:

  • SOCIAL_RPC_URL (WebSocket for social-rpc-client)
  • BUILDER_URL (used by "get a name" CTA)
    plus .env.development sets VITE_REACT_APP_DCL_DEFAULT_ENV=prod so dev defaults to production data.

what's left (next PR)

  • mobile breakpoint polish per Figma drawer designs (167:85610, 322:49246). basic responsiveness in place
  • automated E2E + Lighthouse + bundle-size diff vs master
  • sort by latest dropdown in badges
  • additional unit test coverage on FriendsModal, paginated tabs

test plan

  • standalone profile pages: /profile/me, /profile/:address, every tab
  • friendship flow: request → cancel, request → accept, accept → unfriend
  • block / unblock via kebab menu
  • invite friends button copies ${origin}/invite/${address}
  • get a name opens ${BUILDER_URL}/names
  • friends modal: search filter, click navigates
  • in-modal profile swap from whats-on event detail; back chevron returns
  • jump events + places: avatar + creator name open profile modal
  • creations: wearable/emote filters, load more, view all link goes to /marketplace/accounts/:address
  • assets: each category filter, BUY action on listed items goes to marketplace token page
  • communities: shows for own profile, "private" message for member
  • referral rewards: invite link copies, tier locked/unlocked state reflects accepted count
  • mobile (<=600px): layout collapses to single column, modal goes full screen, tabs scroll horizontally
  • i18n smoke: switch locale and verify profile.* keys render in each

braianj added 30 commits May 13, 2026 13:40
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