refactor(wishlist): route owner detail page through the unified layout - #406
Merged
Conversation
Settled money on a FleetCrown-linked OC project is the one ground-truth signal the capability layer can't derive itself. Fire-and-forget HMAC POST to FC /api/orangecat/events (same shared secret as entitlement); the receiver drops events for unlinked entities. Inert until the secret is set. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The owner dashboard wishlist page was the last marketplace entity still on the legacy EntityDetailLayout — a flat label→value grid showing Status/Created/ Visibility as content, exactly what the detail-redesign spec deletes. Every other entity's owner view is already PublicEntityDetailPage (buyers' layout + manage bar); wishlist now joins them. - Extract buildWishlistDetailConfig(items) + WISHLIST_ITEM_COLUMNS into a shared detail-config module — SSOT for both the public and owner routes (they previously duplicated the item-list rendering). - Make EntityDetailConfig.renderDetails owner-aware (adds an `isOwner` arg, backward-compatible — existing configs ignore it). Wishlist uses it to keep the owner's management affordances (Add Item + per-item edit links) while visitors see the same items read-only. - Owner page becomes a thin wrapper: fetch items → PublicEntityDetailPage. Deletes the flat _components.tsx grid + sidebar. Owner keeps Edit (via the manage bar's editHref → create?edit=id), Share, and item management; drafts/inactive wishlists still show only to their owner via the existing owner-preview path. Type-check + lint clean; production build green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
The owner dashboard wishlist page was the last marketplace entity still on the legacy
EntityDetailLayout— a flat label→value grid showingStatus/Created/Visibilityas content, exactly what the entity-detail-redesign spec deletes. Every other entity's owner view already renders throughPublicEntityDetailPage(the buyers' intent-driven layout + a manage bar). Wishlist now joins them, finishing the redesign rollout.Changes
src/components/public/detail-configs/wishlist.tsx—buildWishlistDetailConfig(items)+WISHLIST_ITEM_COLUMNS. The public and owner routes previously duplicated the item-list rendering; now they share one builder (layout, funding math, copy live in one place).renderDetailsis now owner-aware — added anisOwnerarg toEntityDetailConfig.renderDetails(backward-compatible; existing configs ignore it). Wishlist uses it to keep the owner's management affordances (Add Item + per-item edit links) while visitors see the same items read-only.PublicEntityDetailPage. Deletes the flat_components.tsxgrid + sidebar.Behavior preserved
editHref→create?edit=<id>, same target as the old button), Share, and item management.Status:/Created/Visibilityrendered as primary content (spec acceptance criteria).Verification
type-check(non-incremental) clean ·lintclean · production build green (both/wishlists/[id]and/dashboard/wishlists/[id]compile as dynamic server routes).🤖 Generated with Claude Code