import { Button, IconButton, Menu, useTheme } from "react-native-paper";
import { Account, useAuthorization } from "../../utils/useAuthorization";
import { useMobileWallet } from "../../utils/useMobileWallet";
import { useNavigation } from "@react-navigation/native";
import { ellipsify } from "../../utils/ellipsify";
import { useState } from "react";
import * as Clipboard from "expo-clipboard";
import { Linking } from "react-native";
import { useCluster } from "../cluster/cluster-data-access";
export function TopBarWalletButton({
selectedAccount,
openMenu,
}: {
selectedAccount: Account | null;
openMenu: () => void;
}) {
const { connect } = useMobileWallet();
return (
);
}
export function TopBarSettingsButton() {
const navigation = useNavigation();
return (
{
navigation.navigate("Settings");
}}
/>
);
}
export function TopBarWalletMenu() {
const { selectedAccount } = useAuthorization();
const { getExplorerUrl } = useCluster();
const [visible, setVisible] = useState(false);
const openMenu = () => setVisible(true);
const closeMenu = () => setVisible(false);
const { disconnect } = useMobileWallet();
const copyAddressToClipboard = async () => {
if (selectedAccount) {
await Clipboard.setStringAsync(selectedAccount.publicKey.toBase58());
}
closeMenu();
};
const viewExplorer = () => {
if (selectedAccount) {
const explorerUrl = getExplorerUrl(
`account/${selectedAccount.publicKey.toBase58()}`
);
Linking.openURL(explorerUrl);
}
closeMenu();
};
return (
}
>
{
await disconnect();
closeMenu();
}}
title="Disconnect"
leadingIcon="link-off"
/>
);
}