Details page for Dapp#3513
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. To trigger a review, include ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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. Comment |
There was a problem hiding this comment.
Pull request overview
Adds a dedicated Marketplace Dapp “Info” page (/apps/[id]/info) and migrates the previous in-list modal experience to a full page, while also refactoring Marketplace data loading and moving JSON-LD structured data generation into feature-specific builders (token + dapp info) with schema-dts types. Also updates routing/linking to point to the new info page and includes up to 50 dapp info URLs in the sitemap when Marketplace is enabled.
Changes:
- Introduces
/apps/[id]/infopage + shared GSSP logic; updates search/marketplace links to open the new info page instead of a modal/query-param flow. - Refactors Marketplace data fetching into hooks (
useAppQuery,useFavoriteApps) and updates Marketplace UI components accordingly; removes the modal + its Playwright tests. - Reworks structured-data generation: token Product schema and dapp info WebApplication schema using
schema-dts; updates sitemap generator to include dapp info URLs.
Reviewed changes
Copilot reviewed 45 out of 52 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/slices/token/structured-data/token.ts | Adds token Product JSON-LD builder using schema-dts. |
| src/slices/token/structured-data/token.spec.ts | Adds snapshot test coverage for token structured data. |
| src/slices/token/structured-data/snapshots/token.spec.ts.snap | Stores token schema snapshot. |
| src/slices/search/pages/search-results/SearchResultTableItem.tsx | Updates marketplace app search-result link to /apps/[id]/info. |
| src/slices/search/pages/search-results/SearchResultListItem.tsx | Updates marketplace app search-result link to /apps/[id]/info. |
| src/shell/metadata/update.ts | Renames JSON-LD script tag id to be structured-data-generic. |
| src/shell/metadata/types.ts | Replaces bespoke ProductSchema type with schema-dts-based union and updates marketplace ApiData typing. |
| src/shell/metadata/templates/title.ts | Adds title templates for /apps/[id]/info and updates app template placeholders. |
| src/shell/metadata/templates/description.ts | Adds description template for /apps/[id]/info. |
| src/shell/metadata/structured-data/index.ts | Centralizes structured-data generation routing (token + dapp info). |
| src/shell/metadata/get-page-og-type.ts | Registers OG type for /apps/[id]/info. |
| src/shell/metadata/generate.ts | Switches metadata generation to use the new structured-data generator. |
| src/shell/metadata/generate.spec.ts | Removes token structured-data expectations from metadata snapshot tests. |
| src/shell/metadata/generate-product-schema.ts | Removes legacy token Product schema generator from shell metadata. |
| src/shell/metadata/snapshots/generate.spec.ts.snap | Updates metadata snapshots after removing embedded token schema. |
| src/services/mixpanel/get-page-type.ts | Adds Mixpanel page type mapping for /apps/[id]/info. |
| src/server/nextjs-routes.d.ts | Adds typed route for /apps/[id]/info. |
| src/server/getServerSideProps/routes/apps/id.ts | Shares GSSP for /apps/[id] and /apps/[id]/info and provides bot OG data via full MarketplaceApp API data. |
| src/pages/apps/[id]/info.tsx | Adds Next.js page entry for the new Marketplace app info page. |
| src/pages/apps/[id]/index.tsx | Restores /apps/[id] page entry after moving GSSP out of the route module. |
| src/features/marketplace/utils/disclaimer-modal.ts | Extracts disclaimer localStorage helpers into a shared utility. |
| src/features/marketplace/types/client.ts | Converts marketplace app type aliases into interfaces to support extension/typing usage. |
| src/features/marketplace/structured-data/dapp-info.ts | Adds dapp info WebApplication structured-data builder. |
| src/features/marketplace/structured-data/dapp-info.spec.ts | Adds snapshot tests for dapp info structured data. |
| src/features/marketplace/structured-data/snapshots/dapp-info.spec.ts.snap | Stores dapp info schema snapshots. |
| src/features/marketplace/pages/index/MarketplaceList.tsx | Removes modal “info” plumbing; delegates info navigation to cards/links. |
| src/features/marketplace/pages/index/MarketplaceAppModal.tsx | Removes the legacy in-list app details modal. |
| src/features/marketplace/pages/index/MarketplaceAppModal.pw.tsx | Removes Playwright visual tests for the removed modal. |
| src/features/marketplace/pages/index/MarketplaceAppIntegrationIcon.tsx | Adds loading support to integration icon rendering. |
| src/features/marketplace/pages/index/MarketplaceAppGraphLinks.tsx | Adds loading support to graph links icon rendering. |
| src/features/marketplace/pages/index/MarketplaceAppCard.tsx | Changes “Info” from modal trigger to navigation link to /apps/[id]/info and keeps analytics logging. |
| src/features/marketplace/pages/index/Marketplace.tsx | Removes modal usage; uses disclaimer helper and keeps disclaimer flow. |
| src/features/marketplace/pages/index/banner/FeaturedAppMobile.tsx | Updates “More info” navigation to /apps/[id]/info. |
| src/features/marketplace/pages/index/banner/FeaturedApp.tsx | Updates “More info” navigation to /apps/[id]/info and removes modal wiring. |
| src/features/marketplace/pages/index/banner/Banner.tsx | Removes modal “info” callback prop from banner composition. |
| src/features/marketplace/pages/dapp/MarketplaceApp.tsx | Refactors app loading to useAppQuery and updates metadata update payload to full MarketplaceApp. |
| src/features/marketplace/pages/dapp-info/MarketplaceAppInfoPage.tsx | Adds the new full-page Marketplace app info UI + metadata/disclaimer/favorite/rating wiring. |
| src/features/marketplace/pages/dapp-info/MarketplaceAppInfoPage.pw.tsx | Adds Playwright visual test for the new info page. |
| src/features/marketplace/hooks/useMarketplaceApps.tsx | Refactors sorting/filtering and query selection logic for marketplace apps. |
| src/features/marketplace/hooks/useMarketplace.tsx | Removes modal query-param flow and redirects legacy selectedAppId to the new info route. |
| src/features/marketplace/hooks/useFavoriteApps.ts | Introduces a hook to centralize favorites localStorage + Mixpanel logic. |
| src/features/marketplace/hooks/useAppQuery.ts | Introduces a hook to centralize single-app loading for Marketplace app + info pages. |
| src/features/marketplace/components/SearchBarSuggestApp.tsx | Updates search suggestion navigation to the new info page route. |
| src/features/marketplace/components/MarketplaceDisclaimerModal.tsx | Uses extracted disclaimer setter and enables lazy mount/unmount. |
| pnpm-lock.yaml | Locks schema-dts dependency. |
| package.json | Adds schema-dts dev dependency. |
| deploy/tools/sitemap-generator/next-sitemap.config.js | Fetches marketplace dapps and adds up to 50 /apps/{id}/info entries to sitemap output. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Cursor <cursoragent@cursor.com>
Description and Related Issue(s)
Resolves #3492
Adds a dedicated marketplace dapp info page at
/apps/[id]/info, opened from the "Info" link on app cards and search results. Replaces the previous in-list modal with a full page that shows app metadata, ratings, favorites, graph links, and launch/disclaimer flow.Refactors marketplace data loading (
useAppQuery,useFavoriteApps) and moves JSON-LD structured data into feature-specific builders (dapp info, token) with a shared shell metadata helper andschema-dtstypes. Includes the top 50 dapp info URLs in the sitemap when marketplace is enabled.Proposed Changes
MarketplaceAppInfoPageand routes (/apps/[id]/info, shared GSSP with dapp view)MarketplaceAppModal; wire "Info" links to the new pageSoftwareApplication/ product structured data; remove generic product schema from shell metadata/apps/{id}/infoentries (priority-sorted, max 50)schema-dtsBreaking or Incompatible Changes
None. The modal UX is replaced by a navigable page; deep links use
/apps/[id]/info.Additional Information
Figma mockup
Checklist for PR author