diff --git a/src/v2/components/Account/components/AccountModal/AccountModal.tsx b/src/v2/components/Account/components/AccountModal/AccountModal.tsx index 93b1f0b6e5..a3794a9aa6 100644 --- a/src/v2/components/Account/components/AccountModal/AccountModal.tsx +++ b/src/v2/components/Account/components/AccountModal/AccountModal.tsx @@ -1,14 +1,5 @@ -import { CheckMark } from "@/components/CheckMark" -import { CircularProgressBar } from "@/components/CircularProgressBar" -import { CopyableAddress } from "@/components/CopyableAddress" -import { GuildAvatar } from "@/components/GuildAvatar" -import { ProfileAvatar } from "@/components/ProfileAvatar" import { accountModalAtom } from "@/components/Providers/atoms" -import useConnectorNameAndIcon from "@/components/Web3ConnectionManager/hooks/useConnectorNameAndIcon" import { useWeb3ConnectionManager } from "@/components/Web3ConnectionManager/hooks/useWeb3ConnectionManager" -import { Anchor } from "@/components/ui/Anchor" -import { Avatar } from "@/components/ui/Avatar" -import { buttonVariants } from "@/components/ui/Button" import { Dialog, DialogBody, @@ -18,43 +9,23 @@ import { DialogHeader, DialogTitle, } from "@/components/ui/Dialog" -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuTrigger, -} from "@/components/ui/DropdownMenu" -import { IconButton } from "@/components/ui/IconButton" import { Separator } from "@/components/ui/Separator" -import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/Tooltip" import { useUserPublic } from "@/hooks/useUserPublic" -import { LevelBadge } from "@app/(marketing)/profile/_components/LevelBadge" -import { useExperienceProgression } from "@app/(marketing)/profile/_hooks/useExperienceProgression" -import { ArrowRight, DotsThreeVertical } from "@phosphor-icons/react" -import { SignOut } from "@phosphor-icons/react/dist/ssr" import useUser from "components/[guild]/hooks/useUser" -import useResolveAddress from "hooks/useResolveAddress" import { useAtom } from "jotai" import { deleteKeyPairFromIdb } from "utils/keyPair" -import { useAccount } from "wagmi" +import { Account } from "./components/Account" import { AccountConnections } from "./components/AccountConnections" -import { NetworkIndicator } from "./components/NetworkIndicator" +import { AccountGuildProfile } from "./components/AccountGuildProfile" import { UsersGuildPins } from "./components/UsersGuildPins" const AccountModal = () => { - const { address, disconnect, type } = useWeb3ConnectionManager() - const { connectorName } = useConnectorNameAndIcon() - + const { address, disconnect } = useWeb3ConnectionManager() const [isOpen, setIsOpen] = useAtom(accountModalAtom) const { id, guildProfile } = useUser() const { deleteKeys } = useUserPublic() - const { address: evmAddress, chainId } = useAccount() - const domain = useResolveAddress(evmAddress) - const xp = useExperienceProgression(true) - const handleLogout = () => { const keysToRemove = Object.keys({ ...window.localStorage }).filter((key) => /^dc_auth_[a-z]*$/.test(key) @@ -65,7 +36,7 @@ const AccountModal = () => { }) deleteKeyPairFromIdb(id) - ?.catch(() => {}) + ?.catch(() => null) .finally(() => { setIsOpen(false) disconnect() @@ -87,129 +58,12 @@ const AccountModal = () => { {address ? ( <> {guildProfile ? ( -
- {xp && ( -
- - - - - -
- )} -
-

- - {guildProfile.name || guildProfile.username} - - -

-
- @{guildProfile.username} - - {xp && ( - - {xp.experienceCount} XP - - {`${xp.currentLevelXp} -> `} - - {xp.experienceCount} XP - - {` -> ${xp.nextLevelXp}`} - - - )} -
-
- setIsOpen(false)} - > - View profile - - - - - } - /> - - - - Connected with {connectorName} - - - - - Disconnect - - - -
-
-
+ setIsOpen(false)} + /> ) : ( -
-
- -
-
- - -
-

- {`Connected with ${connectorName}`} -

- -
-
- - - - } - variant="outline" - size="sm" - className="ml-auto" - onClick={handleLogout} - /> - - - Disconnect - - -
+ )} diff --git a/src/v2/components/Account/components/AccountModal/components/Account.tsx b/src/v2/components/Account/components/AccountModal/components/Account.tsx new file mode 100644 index 0000000000..f47ae46619 --- /dev/null +++ b/src/v2/components/Account/components/AccountModal/components/Account.tsx @@ -0,0 +1,77 @@ +import { CopyableAddress } from "@/components/CopyableAddress" +import { GuildAvatar } from "@/components/GuildAvatar" +import useConnectorNameAndIcon from "@/components/Web3ConnectionManager/hooks/useConnectorNameAndIcon" +import { useWeb3ConnectionManager } from "@/components/Web3ConnectionManager/hooks/useWeb3ConnectionManager" +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/components/ui/DropdownMenu" +import { IconButton } from "@/components/ui/IconButton" +import { DotsThreeVertical, File, SignOut } from "@phosphor-icons/react" +import useResolveAddress from "hooks/useResolveAddress" +import { useAccount } from "wagmi" +import { NetworkIndicator } from "./NetworkIndicator" + +type AccountProps = { + handleLogout: () => void +} + +export const Account = ({ handleLogout }: AccountProps) => { + const { address } = useWeb3ConnectionManager() + const { connectorName } = useConnectorNameAndIcon() + + const { address: evmAddress } = useAccount() + const domain = useResolveAddress(evmAddress ?? "") + + if (!address) return null + + return ( +
+
+ +
+
+ + +
+

+ {`Connected with ${connectorName}`} +

+ +
+
+ + + + } + /> + + + + + Purchase history + + + + Disconnect + + + +
+ ) +} diff --git a/src/v2/components/Account/components/AccountModal/components/AccountGuildProfile.tsx b/src/v2/components/Account/components/AccountModal/components/AccountGuildProfile.tsx new file mode 100644 index 0000000000..6a803eb8f4 --- /dev/null +++ b/src/v2/components/Account/components/AccountModal/components/AccountGuildProfile.tsx @@ -0,0 +1,133 @@ +import { CheckMark } from "@/components/CheckMark" +import { CircularProgressBar } from "@/components/CircularProgressBar" +import { ProfileAvatar } from "@/components/ProfileAvatar" +import { Anchor } from "@/components/ui/Anchor" +import { Avatar } from "@/components/ui/Avatar" +import { buttonVariants } from "@/components/ui/Button" +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuTrigger, +} from "@/components/ui/DropdownMenu" +import { IconButton } from "@/components/ui/IconButton" +import { Separator } from "@/components/ui/Separator" +import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/Tooltip" +import { LevelBadge } from "@app/(marketing)/profile/_components/LevelBadge" +import { ArrowRight, DotsThreeVertical } from "@phosphor-icons/react" +import { File, SignOut } from "@phosphor-icons/react/dist/ssr" + +import useConnectorNameAndIcon from "@/components/Web3ConnectionManager/hooks/useConnectorNameAndIcon" +import { useExperienceProgression } from "@app/(marketing)/profile/_hooks/useExperienceProgression" +import useUser from "components/[guild]/hooks/useUser" +import { NetworkIndicator } from "../components/NetworkIndicator" + +type AccountGuildProfileProps = { + handleLogout: () => void + onClose: () => void +} + +export const AccountGuildProfile = ({ + handleLogout, + onClose, +}: AccountGuildProfileProps) => { + const { guildProfile } = useUser() + const xp = useExperienceProgression(true) + const { connectorName } = useConnectorNameAndIcon() + + if (!guildProfile) return null + + return ( +
+ {xp && ( +
+ + + + + +
+ )} +
+

+ + {guildProfile.name || guildProfile.username} + + +

+
+ @{guildProfile.username} + + {xp && ( + + {xp.experienceCount} XP + + {`${xp.currentLevelXp} -> `} + {xp.experienceCount} XP + {` -> ${xp.nextLevelXp}`} + + + )} +
+
+ + View profile + + + + + } + /> + + + + + Purchase history + + + + Connected with {connectorName} + + + + + Disconnect + + + +
+
+
+ ) +}