diff --git a/__tests__/components/manifoldMinting/ManifoldMintingConnect.test.tsx b/__tests__/components/manifoldMinting/ManifoldMintingConnect.test.tsx index 18fb21c596..2959dd1d96 100644 --- a/__tests__/components/manifoldMinting/ManifoldMintingConnect.test.tsx +++ b/__tests__/components/manifoldMinting/ManifoldMintingConnect.test.tsx @@ -20,6 +20,11 @@ jest.mock('@/components/user/utils/UserCICAndLevel', () => ({ UserCICAndLevelSize: { XLARGE: 'XLARGE' }, })); +jest.mock('@/components/nft-transfer/TransferModalPfp', () => ({ + __esModule: true, + default: () =>
, +})); + let mockOnProfileSelect: ((profile: any) => void) | null = null; let mockOnWalletSelect: ((wallet: string | null) => void) | null = null; @@ -85,6 +90,42 @@ describe('ManifoldMintingConnect', () => { expect(onMintFor).toHaveBeenCalledWith(seizeCtx.address); }); + it('lets mint for me switch wallet inside connected profile', async () => { + const { onMintFor } = renderConnected(); + const alternateWallet = '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; + + if (mockOnWalletSelect) { + mockOnWalletSelect(alternateWallet); + } + + await waitFor(() => + expect(onMintFor).toHaveBeenLastCalledWith(alternateWallet) + ); + }); + + it('reselects connected wallet when switching back to mint for me', async () => { + const { onMintFor, seizeCtx } = renderConnected(); + const alternateWallet = '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'; + const frenWallet = '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; + + if (mockOnWalletSelect) { + mockOnWalletSelect(alternateWallet); + } + await waitFor(() => + expect(onMintFor).toHaveBeenLastCalledWith(alternateWallet) + ); + + await userEvent.click(screen.getByRole('button', { name: /Mint for fren/i })); + if (mockOnProfileSelect && mockOnWalletSelect) { + mockOnProfileSelect({ handle: 'fren', wallet: frenWallet }); + mockOnWalletSelect(frenWallet); + } + await waitFor(() => expect(onMintFor).toHaveBeenLastCalledWith(frenWallet)); + + await userEvent.click(screen.getByRole('button', { name: /Mint for me/i })); + await waitFor(() => expect(onMintFor).toHaveBeenLastCalledWith(seizeCtx.address)); + }); + it('shows RecipientSelector when mint for fren is clicked', async () => { renderConnected(); await userEvent.click(screen.getByRole('button', { name: /Mint for fren/i })); diff --git a/components/auth/SeizeConnectContext.tsx b/components/auth/SeizeConnectContext.tsx index 6a883b2490..840218c625 100644 --- a/components/auth/SeizeConnectContext.tsx +++ b/components/auth/SeizeConnectContext.tsx @@ -10,6 +10,7 @@ import React, { useState, } from "react"; +import { getNodeEnv, publicEnv } from "@/config/env"; import { getWalletAddress, removeAuthJwt } from "@/services/auth/auth.utils"; import { WalletInitializationError } from "@/src/errors/wallet"; import { SecurityEventType } from "@/src/types/security"; @@ -364,6 +365,23 @@ export const SeizeConnectProvider: React.FC<{ children: React.ReactNode }> = ({ isInitialized, } = useConsolidatedWalletState(); const debounceTimeoutRef = useRef