"use client";
import { ShuffleIcon } from "@radix-ui/react-icons";
import type { ThirdwebClient } from "../../../../../client/client.js";
import { isInAppWallet } from "../../../../../wallets/in-app/core/wallet/index.js";
import { injectedProvider } from "../../../../../wallets/injected/mipdStore.js";
import { fontSize, iconSize } from "../../../../core/design-system/index.js";
import type { ConnectButton_detailsModalOptions } from "../../../../core/hooks/connection/ConnectButtonProps.js";
import { useActiveWallet } from "../../../../core/hooks/wallets/useActiveWallet.js";
import { useAdminWallet } from "../../../../core/hooks/wallets/useAdminWallet.js";
import { Container, Line, ModalHeader } from "../../components/basic.js";
import { Spacer } from "../../components/Spacer.js";
import { Text } from "../../components/text.js";
import { KeyIcon } from "../icons/KeyIcon.js";
import { MultiUserIcon } from "../icons/MultiUserIcon.js";
import { WalletConnectIcon } from "../icons/WalletConnectIcon.js";
import type { ConnectLocale } from "../locale/types.js";
import { MenuButton } from "../MenuButton.js";
import type { WalletDetailsModalScreen } from "./types.js";
/**
* @internal
*/
export function ManageWalletScreen(props: {
onBack: () => void;
setScreen: (screen: WalletDetailsModalScreen) => void;
closeModal: () => void;
locale: ConnectLocale;
client: ThirdwebClient;
manageWallet?: ConnectButton_detailsModalOptions["manageWallet"];
}) {
const adminWallet = useAdminWallet();
const activeWallet = useActiveWallet();
const wallet = adminWallet || activeWallet;
return (
{/* Switch Metamask Account (only shows if the active wallet is MetaMask) */}
{/* Unified Identity */}
{typeof wallet !== "undefined" &&
props.manageWallet?.allowLinkingProfiles !== false && (
{
props.setScreen("linked-profiles");
}}
style={{
fontSize: fontSize.sm,
}}
>
{props.locale.manageWallet.linkedProfiles}
)}
{/* Wallet Connect Receiver */}
{
props.setScreen("wallet-connect-receiver");
}}
style={{
fontSize: fontSize.sm,
}}
>
{props.locale.manageWallet.connectAnApp}
{/* Private Key Export (if enabled) */}
{wallet &&
isInAppWallet(wallet) &&
!wallet.getConfig()?.hidePrivateKeyExport && (
{
props.setScreen("private-key");
}}
style={{
fontSize: fontSize.sm,
}}
>
{props.locale.manageWallet.exportPrivateKey}
)}
);
}
function SwitchMetamaskAccount(props: {
closeModal: () => void;
connectLocale: ConnectLocale;
}) {
const wallet = useActiveWallet();
const connectLocale = props.connectLocale;
if (wallet?.id !== "io.metamask") {
return null;
}
const injectedMetamaskProvider = injectedProvider("io.metamask");
if (!injectedMetamaskProvider) {
return null;
}
return (
{
await injectedMetamaskProvider.request({
method: "wallet_requestPermissions",
params: [{ eth_accounts: {} }],
});
props.closeModal();
}}
type="button"
>
{connectLocale.switchAccount}
);
}