Skip to content

Arweave Fallback - More gateways#2028

Closed
prxt6529 wants to merge 90 commits intomainfrom
arweave-fallback-3
Closed

Arweave Fallback - More gateways#2028
prxt6529 wants to merge 90 commits intomainfrom
arweave-fallback-3

Conversation

@prxt6529
Copy link
Copy Markdown
Collaborator

@prxt6529 prxt6529 commented Mar 2, 2026

Summary by CodeRabbit

  • New Features

    • Added Drop Forge feature with Craft and Launch modes for managing claims
    • Introduced multi-account wallet management with ability to switch between connected accounts
    • Added chain switching functionality
    • Enhanced connection sharing with profile previews and validation
  • Improvements

    • Improved image and animation format detection and display
    • Enhanced error handling with better user feedback and toast notifications
    • Upgraded modal styling and connection status indicators
    • Better fallback image handling for profile pictures
  • Tests

    • Added comprehensive test coverage for new features and components

Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
Signed-off-by: prxt6529 <prxt@6529.io>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 2, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between abd156e and 392bf92.

⛔ Files ignored due to path filters (21)
  • generated/models/ApiMintingClaimsPhaseTotalItem.ts is excluded by !**/generated/**
  • generated/models/ApiSeizeSettings.ts is excluded by !**/generated/**
  • generated/models/MintingClaim.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAnimationDetails.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAnimationDetailsGlb.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAnimationDetailsHtml.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAnimationDetailsVideo.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAttribute.ts is excluded by !**/generated/**
  • generated/models/MintingClaimAttributeValue.ts is excluded by !**/generated/**
  • generated/models/MintingClaimImageDetails.ts is excluded by !**/generated/**
  • generated/models/MintingClaimUpdateRequest.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsPageResponse.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsProofItem.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsProofsByAddressEntry.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsProofsByAddressResponse.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsProofsResponse.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsResponse.ts is excluded by !**/generated/**
  • generated/models/MintingClaimsRootItem.ts is excluded by !**/generated/**
  • generated/models/ObjectSerializer.ts is excluded by !**/generated/**
  • generated/models/PhaseAirdrop.ts is excluded by !**/generated/**
  • public/intern-no-bg.png is excluded by !**/*.png
📒 Files selected for processing (134)
  • .env.sample
  • __tests__/app/acceptConnectionSharing.test.tsx
  • __tests__/components/ManifoldMintingWidget.test.tsx
  • __tests__/components/auth/Auth.test.tsx
  • __tests__/components/auth/SeizeConnectContext.test.tsx
  • __tests__/components/auth/connection-state-indicator.test.ts
  • __tests__/components/header/AppSidebarUserInfo.test.tsx
  • __tests__/components/header/AppUserConnect.test.tsx
  • __tests__/components/header/HeaderSearchModal.test.tsx
  • __tests__/components/header/header-search/HeaderSearchModalFocus.test.tsx
  • __tests__/components/header/user/proxy/HeaderUserProxyDropdown.test.tsx
  • __tests__/components/manifold-minting/ManifoldMinting.test.tsx
  • __tests__/components/manifold-minting/ManifoldMintingConnect.test.tsx
  • __tests__/components/manifold-minting/ManifoldMintingWidget.test.tsx
  • __tests__/components/manifoldMinting/ManifoldMintingConnect.test.tsx
  • __tests__/components/manifoldMinting/ManifoldMintingWidget.test.tsx
  • __tests__/components/manifoldMinting/manifold-types.test.ts
  • __tests__/components/navigation/BottomNavigation.test.tsx
  • __tests__/components/notifications/NotificationsContext.test.tsx
  • __tests__/components/providers/AppKitAdapterManager.test.ts
  • __tests__/config/env.base-endpoint.test.ts
  • __tests__/helpers/dropForgePermissions.ts
  • __tests__/hooks/useManifoldClaim.test.tsx
  • __tests__/services/auth.utils.test.ts
  • app/accept-connection-sharing/page.client.tsx
  • app/drop-forge/craft/[id]/page.tsx
  • app/drop-forge/craft/page.tsx
  • app/drop-forge/launch/[id]/page.tsx
  • app/drop-forge/launch/page.tsx
  • app/drop-forge/page.tsx
  • components/auth/Auth.module.scss
  • components/auth/Auth.tsx
  • components/auth/SeizeConnectContext.tsx
  • components/auth/connection-state-indicator.ts
  • components/auth/error-boundary/WalletErrorBoundary.tsx
  • components/brain/my-stream/layout/LayoutContext.tsx
  • components/common/icons/DropForgeCraftIcon.tsx
  • components/common/icons/DropForgeIcon.tsx
  • components/common/icons/DropForgeLaunchIcon.tsx
  • components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.tsx
  • components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTableRow.tsx
  • components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTableSubscription.tsx
  • components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTableSubscriptionFooter.tsx
  • components/distribution/Distribution.tsx
  • components/drop-forge/DropForgeAccordionSection.tsx
  • components/drop-forge/DropForgeClaimsListPageClient.tsx
  • components/drop-forge/DropForgeExplorerLink.tsx
  • components/drop-forge/DropForgeFieldBox.tsx
  • components/drop-forge/DropForgeMediaTypePill.tsx
  • components/drop-forge/DropForgeNoPower.tsx
  • components/drop-forge/DropForgePageClient.tsx
  • components/drop-forge/DropForgePermissionFallback.tsx
  • components/drop-forge/DropForgeStatusPill.tsx
  • components/drop-forge/DropForgeTestnetIndicator.tsx
  • components/drop-forge/claimTraitsData.ts
  • components/drop-forge/craft/DropForgeCraftClaimPageClient.tsx
  • components/drop-forge/drop-forge-config.ts
  • components/drop-forge/drop-forge-status.helpers.ts
  • components/drop-forge/drop-forge.constants.ts
  • components/drop-forge/launch/ClaimTransactionModal.tsx
  • components/drop-forge/launch/DropForgeLaunchClaimPageClient.tsx
  • components/drop-forge/launch/DropForgeLaunchClaimPageClient.view.tsx
  • components/drop-forge/launch/DropForgeLaunchPageClient.tsx
  • components/drop-forge/launch/dropForgeLaunchClaimPageClient.helpers.ts
  • components/drop-forge/launch/launchClaimHelpers.ts
  • components/drops/view/item/content/media/MediaDisplayGLB.tsx
  • components/header/AppHeader.tsx
  • components/header/AppSidebar.tsx
  • components/header/AppSidebarConnectedAccounts.tsx
  • components/header/AppSidebarHeader.tsx
  • components/header/AppSidebarUserInfo.tsx
  • components/header/AppUserConnect.tsx
  • components/header/header-search/HeaderSearchModal.tsx
  • components/header/header-search/HeaderSearchModalItem.tsx
  • components/header/useChainSwitcher.ts
  • components/header/user/connected/HeaderUserConnectedAccounts.tsx
  • components/header/user/proxy/HeaderUserProxyDropdown.tsx
  • components/home/now-minting/NowMintingCountdown.tsx
  • components/home/now-minting/NowMintingDetails.tsx
  • components/home/now-minting/NowMintingStatsGrid.tsx
  • components/layout/SmallScreenLayout.tsx
  • components/layout/WebLayout.tsx
  • components/layout/sidebar/WebSidebar.tsx
  • components/layout/sidebar/WebSidebarNav.tsx
  • components/layout/sidebar/WebSidebarUser.tsx
  • components/manifold-minting/ManifoldMinting.module.scss
  • components/manifold-minting/ManifoldMinting.tsx
  • components/manifold-minting/ManifoldMintingConnect.tsx
  • components/manifold-minting/ManifoldMintingWidget.tsx
  • components/manifold-minting/manifold-mint-metadata.ts
  • components/manifoldMinting/manifold-types.ts
  • components/navigation/BottomNavigation.tsx
  • components/navigation/NavItem.tsx
  • components/nft-image/utils/arweave-fallback.ts
  • components/notifications/NotificationsContext.tsx
  • components/notifications/device-push.types.ts
  • components/providers/AppKitAdapterManager.ts
  • components/providers/LayoutWrapper.tsx
  • components/providers/WagmiSetup.tsx
  • components/the-memes/MemePage.tsx
  • components/the-memes/TheMemesMint.tsx
  • components/user/subscriptions/UserPageSubscriptionsTopUp.tsx
  • components/waves/drops/WaveDropReply.tsx
  • components/waves/memes/MemesArtSubmissionTraits.tsx
  • components/waves/memes/traits/BooleanTrait.tsx
  • components/waves/memes/traits/NumberTrait.tsx
  • components/waves/memes/traits/TextTrait.tsx
  • components/waves/memes/traits/TraitField.tsx
  • components/waves/memes/traits/TraitWrapper.tsx
  • components/waves/memes/traits/schema.ts
  • config/env.schema.ts
  • constants/constants.ts
  • contexts/HeaderContext.tsx
  • contexts/SeizeSettingsContext.tsx
  • contexts/TitleContext.tsx
  • entities/INFT.ts
  • helpers/manifoldDisplayHelpers.ts
  • hooks/isMobileDevice.ts
  • hooks/isMobileScreen.ts
  • hooks/useCapacitor.ts
  • hooks/useControlledTooltip.ts
  • hooks/useDropForgeManifoldClaim.ts
  • hooks/useDropForgePermissions.ts
  • hooks/useIsDropForgeAdmin.ts
  • hooks/useManifoldClaim.ts
  • hooks/useMintCountdownState.ts
  • hooks/useNowMintingStatus.ts
  • next.config.ts
  • openapi.yaml
  • services/api/common-api.ts
  • services/api/memes-minting-claims-api.ts
  • services/auth/auth.utils.ts
  • tsconfig.typecheck.json
  • utils/appkit-initialization.utils.ts

📝 Walkthrough

Walkthrough

This PR introduces the Drop Forge feature for minting claim management, expands multi-account wallet handling in authentication flows, refactors manifold minting to support chain-specific operations, and updates environment configuration, component styling, and test scaffolding across the application.

Changes

Cohort / File(s) Summary
Drop Forge Feature — Pages
app/drop-forge/page.tsx, app/drop-forge/craft/page.tsx, app/drop-forge/craft/[id]/page.tsx, app/drop-forge/launch/page.tsx, app/drop-forge/launch/[id]/page.tsx
New Next.js page routes with metadata generation for Drop Forge landing, craft list, craft claim detail, launch list, and launch claim detail pages.
Drop Forge Feature — Core Components
components/drop-forge/DropForgePageClient.tsx, components/drop-forge/DropForgeClaimsListPageClient.tsx, components/drop-forge/craft/DropForgeCraftClaimPageClient.tsx, components/drop-forge/launch/DropForgeLaunchPageClient.tsx, components/drop-forge/launch/DropForgeLaunchClaimPageClient.tsx, components/drop-forge/launch/DropForgeLaunchClaimPageClient.view.tsx
Main Drop Forge client components for permissions, claims listing, craft page (2200+ lines), and launch page (1400+ lines) with rich UI sections, form handling, and on-chain interactions.
Drop Forge Feature — UI Components & Helpers
components/drop-forge/DropForgeAccordionSection.tsx, components/drop-forge/DropForgeFieldBox.tsx, components/drop-forge/DropForgeMediaTypePill.tsx, components/drop-forge/DropForgeStatusPill.tsx, components/drop-forge/DropForgePermissionFallback.tsx, components/drop-forge/DropForgeNoPower.tsx, components/drop-forge/DropForgeExplorerLink.tsx, components/drop-forge/DropForgeTestnetIndicator.tsx
New reusable UI components for accordion sections, field boxes, media type pills, status indicators, permission fallback, and explorer links.
Drop Forge Feature — Icons
components/common/icons/DropForgeIcon.tsx, components/common/icons/DropForgeCraftIcon.tsx, components/common/icons/DropForgeLaunchIcon.tsx
New SVG-based icon components for Drop Forge branding and section navigation.
Drop Forge Feature — Configuration & Utilities
components/drop-forge/drop-forge.constants.ts, components/drop-forge/drop-forge-config.ts, components/drop-forge/drop-forge-status.helpers.ts, components/drop-forge/claimTraitsData.ts, components/drop-forge/launch/dropForgeLaunchClaimPageClient.helpers.ts, components/drop-forge/launch/launchClaimHelpers.ts, components/drop-forge/launch/ClaimTransactionModal.tsx
Configuration constants, minting mode detection, claim status helpers, trait data conversion, date/media formatting utilities, and transaction modal.
Multi-Account Wallet Management — Context
components/auth/SeizeConnectContext.tsx
Major expansion with new public API: seizeDisconnectAndLogoutAll, seizeSwitchConnectedAccount, seizeAddConnectedAccount, connectedAccounts array, canAddConnectedAccount flag. Updated disconnect/logout signatures and internal account switching logic.
Multi-Account Wallet Management — Auth Utilities
src/services/auth/auth.utils.ts
New exported functions: canStoreAnotherWalletAccount, getConnectedWalletAccounts, setActiveWalletAccount, clearAllWalletAuth, getRefreshToken, syncConnectedWalletProfile for multi-account management.
Authentication & Authorization
components/auth/Auth.tsx, components/auth/Auth.module.scss
Enhanced Auth component with race-condition safeguards, auth role derivation, multi-account handling, improved error messages, and new modal styling with header/body/footer composition and responsive design.
Connection State
components/auth/connection-state-indicator.ts
New module exporting getConnectionProfileIndicator function that maps authentication/connection states to UI indicators and styling classes.
Error Handling
components/auth/error-boundary/WalletErrorBoundary.tsx
Replaced removeAuthJwt() with clearAllWalletAuth() call in error boundary reset flow.
Header — User Interaction
components/header/AppHeader.tsx, components/header/AppUserConnect.tsx, components/header/user/proxy/HeaderUserProxyDropdown.tsx, components/header/user/connected/HeaderUserConnectedAccounts.tsx, components/header/AppSidebarHeader.tsx, components/header/AppSidebarUserInfo.tsx
Major updates to header interaction model: added profile activation with double-click account switching, connection indicator overlay, chain switching UI, sign-out-all profiles, and redesigned user menu with connected accounts section and wallet action areas.
Header — Navigation & Search
components/header/AppSidebar.tsx, components/layout/sidebar/WebSidebar.tsx, components/layout/sidebar/WebSidebarNav.tsx, components/layout/sidebar/WebSidebarUser.tsx, components/header/header-search/HeaderSearchModal.tsx, components/header/header-search/HeaderSearchModalItem.tsx
Drop Forge navigation integration, permission-gated menu items, sidebar user profile with double-activate switching, and search results with Drop Forge pages and search term aliases.
Header — Chain Switching
components/header/useChainSwitcher.ts
New hook for multi-chain navigation with next-chain cycling logic.
Header — Connected Accounts
components/header/AppSidebarConnectedAccounts.tsx
New component displaying and managing connected wallet accounts with avatar selection and add-account button.
Manifold Minting — Core Refactor
components/manifold-minting/ManifoldMinting.tsx, components/manifold-minting/ManifoldMintingWidget.tsx, components/manifold-minting/ManifoldMintingConnect.tsx
Refactored to use chain-based interaction model with mintMetadata, contract override, and API-driven merkle proofs; replaced proxy/token_id with chain prop.
Manifold Minting — Types & Metadata
components/manifold-minting/manifold-mint-metadata.ts, components/manifoldMinting/manifold-types.ts
New manifold mint metadata interfaces replacing old types; removed legacy type definitions.
Manifold Minting — Hooks
hooks/useManifoldClaim.ts, hooks/useDropForgeManifoldClaim.ts, hooks/useMintCountdownState.ts, hooks/useNowMintingStatus.ts
Refactored useManifoldClaim to accept options object, return { claim, isFetching, refetch }, support dynamic read methods; new useDropForgeManifoldClaim wrapper; updated countdown state and status hooks.
Minting Integration — Home Components
components/home/now-minting/NowMintingCountdown.tsx, components/home/now-minting/NowMintingDetails.tsx, components/home/now-minting/NowMintingStatsGrid.tsx, components/the-memes/TheMemesMint.tsx, components/the-memes/MemePage.tsx
Updated components to pass contract and chainId to countdown; switched to useDropForgeMintingConfig; updated manifold minting integration with new prop signatures.
Distribution Planning
components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTable.tsx, components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTableRow.tsx, components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTableSubscription.tsx, components/distribution-plan-tool/review-distribution-plan/table/ReviewDistributionPlanTableSubscriptionFooter.tsx
Integrated seizeSettings.distribution_admin_wallets; updated isSubscriptionsAdmin to accept configurable admin wallets; added formatCount for spot/wallet display.
Drop Forge Configuration
config/env.schema.ts, .env.sample, next.config.ts, contexts/TitleContext.tsx
Added DROP_FORGE_TESTNET environment variable and schema; updated Next.js config with testnet chain conditionals; added drop-forge route title detection.
Drop Forge Permissions & Settings
hooks/useDropForgePermissions.ts, hooks/useIsDropForgeAdmin.ts, contexts/SeizeSettingsContext.tsx
New hooks for permission checking and admin status; expanded settings context with distribution_admin_wallets and claims_admin_wallets.
Notifications — Push Handling
components/notifications/NotificationsContext.tsx, components/notifications/device-push.types.ts
Enhanced push notification handling with profile switching, multi-account address resolution, polling-based settlement, and new device push type definitions.
Waves/Memes Traits — Editing
components/waves/memes/MemesArtSubmissionTraits.tsx, components/waves/memes/traits/schema.ts, components/waves/memes/traits/TraitField.tsx, components/waves/memes/traits/TextTrait.tsx, components/waves/memes/traits/NumberTrait.tsx, components/waves/memes/traits/BooleanTrait.tsx, components/waves/memes/traits/TraitWrapper.tsx
Added per-field readOnly overrides in trait editor; updated schema with dynamic field-level read-only control; enhanced trait components to support override logic.
NFT Image Utilities
components/nft-image/utils/arweave-fallback.ts
Expanded Arweave gateway fallback logic with multi-gateway cycling, URL normalization, and robust error handling.
UI Components — 3D Media
components/drops/view/item/content/media/MediaDisplayGLB.tsx
Updated camera-controls interaction handling, model-viewer styling, and toggle button UI for 3D asset display.
Layout & Styling
components/layout/SmallScreenLayout.tsx, components/layout/WebLayout.tsx, components/layout/LayoutWrapper.tsx, components/brain/my-stream/layout/LayoutContext.tsx
Minor import reordering, prop forwarding to sidebar components, and layout adjustments for multi-account/connection state awareness.
Navigation
components/navigation/BottomNavigation.tsx, components/navigation/NavItem.tsx
Integrated wave data fetching and passed isCurrentWaveDm prop to nav items; removed internal wave data fetching from NavItem in favor of parent coordination.
Distribution & Waves
components/distribution/Distribution.tsx, components/waves/drops/WaveDropReply.tsx, components/waves/memes/MemesArtSubmissionTraits.tsx
Updated minting countdown integration; import reordering; trait editor prop expansion.
Utilities & Helpers
helpers/manifoldDisplayHelpers.ts, entities/INFT.ts, constants/constants.ts
Updated cost handling to use costWei; widened IAttribute.value to support number; added new constants (MEMES_DEPLOYER, RESEARCH_AIRDROP_ADDRESS, MAX_CONNECTED_PROFILES, DEFAULT_CONNECTED_PROFILE_FALLBACK_PFP) and renamed MEMES_MANIFOLD_PROXY_CONTRACT to MANIFOLD_LAZY_CLAIM_CONTRACT.
Contexts & Global State
contexts/HeaderContext.tsx, contexts/SeizeSettingsContext.tsx, contexts/TitleContext.tsx
Import reordering; settings context expanded with admin wallet lists; title context adds drop-forge route awareness.
Tests — Comprehensive Updates
__tests__/app/acceptConnectionSharing.test.tsx, __tests__/components/ManifoldMintingWidget.test.tsx, __tests__/components/auth/Auth.test.tsx, __tests__/components/auth/SeizeConnectContext.test.tsx, __tests__/components/auth/connection-state-indicator.test.ts, __tests__/components/header/*, __tests__/components/manifold-minting/*, __tests__/components/navigation/BottomNavigation.test.tsx, __tests__/components/notifications/NotificationsContext.test.tsx, __tests__/components/providers/AppKitAdapterManager.test.ts, __tests__/config/env.base-endpoint.test.ts, __tests__/helpers/dropForgePermissions.ts, __tests__/hooks/*, __tests__/services/auth.utils.test.ts
Extensive test scaffolding for new features: Drop Forge permissions mocks, multi-account wallet tests, manifold claim hook tests, connection state tests, and comprehensive auth utilities tests.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant UI as UI Component
    participant SeizeContext as SeizeConnectContext
    participant AuthService as Auth Service
    participant Blockchain as Blockchain

    User->>UI: Click "Switch Account" (connected account avatar)
    UI->>SeizeContext: seizeSwitchConnectedAccount(address)
    SeizeContext->>AuthService: Validate address in connectedAccounts
    AuthService->>AuthService: setActiveWalletAccount(address)
    AuthService->>Blockchain: Read nonce for address
    Blockchain-->>AuthService: nonce
    AuthService->>UI: Request wallet signature
    User->>UI: Sign with wallet
    UI->>AuthService: Submit signed message
    AuthService->>AuthService: setAuthJwt(token, address)
    AuthService->>SeizeContext: Update activeAddress
    SeizeContext->>UI: Notify observers (context update)
    UI-->>User: UI re-renders with new account
Loading
sequenceDiagram
    participant Admin as Drop Forge Admin
    participant UI as Craft Page UI
    participant ImageUpload as Image Upload Service
    participant ArweaveAPI as Arweave API
    participant Blockchain as Manifold Contract
    participant DB as Database

    Admin->>UI: Open craft claim page
    UI->>DB: Fetch claim (getClaimById)
    DB-->>UI: MintingClaim data
    UI->>ImageUpload: Upload image replacement
    ImageUpload->>ArweaveAPI: POST image to Arweave
    ArweaveAPI-->>ImageUpload: location (content hash)
    ImageUpload-->>UI: Update UI with preview
    Admin->>UI: Edit season/edition, click Save
    UI->>DB: PATCH claim (update image_location, attributes)
    DB->>Blockchain: (async) Sync to on-chain if initialized
    Blockchain-->>DB: Confirmation
    DB-->>UI: Claim updated (status: pending_initialization or live_needs_update)
    UI-->>Admin: Toast confirmation, status pill updates
Loading
sequenceDiagram
    participant Device as Mobile Device
    participant PushService as Push Notification Service
    participant NotifContext as NotificationsContext
    participant SeizeContext as SeizeConnectContext
    participant NavService as Navigation Service

    Device->>PushService: Receive push notification
    PushService->>Device: Deliver notification payload (target_profile_id, handle)
    Device->>NotifContext: handlePushNotificationAction(payload)
    NotifContext->>NotifContext: parseDevicePushData(payload)
    NotifContext->>NotifContext: resolveAddressForNotificationProfile(profile_id)
    NotifContext->>SeizeContext: Check connectedAccounts for match
    SeizeContext-->>NotifContext: matched address (if found)
    NotifContext->>SeizeContext: seizeSwitchConnectedAccount(matched_address)
    SeizeContext->>SeizeContext: Update activeAddress + auth
    NotifContext->>NotifContext: Wait for settlement (polling)
    NotifContext->>NavService: Navigate with redirect payload
    NavService-->>Device: Push user to target profile/waves view
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes


Possibly related PRs

  • #1623: Modifies NotificationsContext push notification initialization and handlePushNotificationAction signature, directly overlapping with this PR's notification system enhancements.
  • #1925: Updates mint-for-me flow, wallet/profile selection in manifold minting, and multi-account handling in SeizeConnectContext; shares manifold minting and wallet switching logic.
  • #1513: Adds wallet-account management functions to src/services/auth/auth.utils (canStoreAnotherWalletAccount, etc.), which this PR also introduces and relies upon.

Suggested reviewers

  • ragnep
  • simo6529

🐰 Hops through Drop Forge doors with glee,
Multi-wallets switch as easy as can be,
Claims craft and launch in grand array,
Permissions granted, admin's day!
Tests cover ground both far and wide,
A feature-rich adventure, let's ride!

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch arweave-fallback-3

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.

@prxt6529 prxt6529 closed this Mar 2, 2026
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented Mar 2, 2026

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.

1 participant