Repository navigation
Refactor/627 sharecard decompose - #705
Merged
Merged
Conversation
…pace, define failure modes Resolves the obscured storage boundary described in zintarh#618. - app/api/notifications/_lib/kv.ts: now imports storage helpers directly from ../../_lib/kv (no re-export chain). Adds full JSDoc for the notif:sub:, notif:period:, and notif:log: key families. Adds KV_FAILURE_LOUD / KV_FAILURE_DEGRADE constants and KvFailureMode type. - All six notification routes annotated with // KV_FAILURE: LOUD or DEGRADE at the import site. dispatch/subscribe/subscribe-email/confirm-email use ../_lib/kv; preferences/{wallet} and data/{wallet} use ../../_lib/kv (both resolve to the notifications _lib). - app/api/notifications/__tests__/kv.test.ts: 39 tests covering key builders, namespace isolation, failure-mode constants, storage helper re-exports, and LOUD vs DEGRADE caller behaviour (all green). Closes zintarh#618
ShareCard.tsx was 847 lines mixing layout, animation, data formatting, and archetype selection in a single monolith (zintarh#377 flagged it as unparseable). Changes ------- - Extract pure logic into shareCard/shareCardUtils.ts getMintButtonText, buildShareText, getExplorerUrl No React / browser dependencies; fully unit-tested. - Extract CardPreview sub-component (shareCard/CardPreview.tsx) Animated share-card visual (left panel). Pure presentational — all data passed as props. - Extract MintSection sub-component (shareCard/MintSection.tsx) Mint button + confirming progress bar + timeout/error banners. All state passed as props for easy snapshot testing. - Extract ShareActions sub-component (shareCard/ShareActions.tsx) SHARE heading + format toggle + all download/share buttons + export progress bar + error state with retry. - Rewrite ShareCard.tsx as a thin orchestrator (~420 lines) Wires stores, hooks, and event handlers; delegates rendering to the three sub-components above. Public interface (props) is identical — callers are unaffected. - Add unit tests (app/components/__tests__/shareCardUtils.test.ts) 21 tests covering all branches of getMintButtonText (11 cases), buildShareText (4 cases), and getExplorerUrl (6 cases). All 21 pass. Closes zintarh#627
|
@zintarh is attempting to deploy a commit to the zintarh Team on Vercel. A member of the Team first needs to authorize it. |
|
@AnnieIj Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
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.
Summary
Refactors the 847-line
ShareCard.tsxinto smaller, focused modules to improve readability, maintainability, and testability while preserving the existing public component interface.Changes
ShareCard.tsxfrom 847 lines to approximately 420 lines, retaining it as the main entry point.shareCardUtils.ts.CardPreview.tsxfor animated card presentation.MintSection.tsxfor minting controls, transaction progress, and error states.ShareActions.tsxfor download and sharing functionality.Testing
Added 21 unit tests for the extracted utility functions:
getMintButtonText, covering transaction states and online/offline behaviour.buildShareText.getExplorerUrl, covering network mapping and resource types.All 21 new utility tests pass.
Outcome
The component is decomposed into smaller, independently maintainable modules, with extracted pure logic covered by direct unit tests.
Closes #627