From 795660d5c34aaf4e13ca216a4565963873ef3aa1 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Thu, 28 Jul 2022 00:37:54 +0100 Subject: [PATCH] feat: connect button drop down --- src/components/common/ConnectButton.tsx | 63 +++++++++++++++++++- src/components/dashboard/DashboardLayout.tsx | 2 +- src/components/icons/CopyIcon.tsx | 9 +++ src/components/icons/LogoutIcon.tsx | 9 +++ 4 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 src/components/icons/CopyIcon.tsx create mode 100644 src/components/icons/LogoutIcon.tsx diff --git a/src/components/common/ConnectButton.tsx b/src/components/common/ConnectButton.tsx index 1832f507..7484c4d8 100644 --- a/src/components/common/ConnectButton.tsx +++ b/src/components/common/ConnectButton.tsx @@ -1,11 +1,51 @@ import { ConnectButton as RainbowConnectButton } from "@rainbow-me/rainbowkit" import { useGetUserSites } from "~/queries/site" -import { useAccount } from "wagmi" +import { useAccount, useDisconnect } from "wagmi" import { Avatar } from "~/components/ui/Avatar"; +import type { HeaderLinkType } from "~/components/site/SiteHeader" +import { DashboardIcon } from "../icons/DashboardIcon" +import { LogoutIcon } from "../icons/LogoutIcon" +import { CopyIcon } from "../icons/CopyIcon" +import { IS_PROD } from "~/lib/constants" +import { OUR_DOMAIN } from "~/lib/env" +import { UniLink } from "../ui/UniLink" +import { useState } from "react" -export const ConnectButton = () => { +export const ConnectButton: React.FC<{ + left?: boolean +}> = ({ left, }) => { const { data: viewer } = useAccount() const userSites = useGetUserSites(viewer?.address) + const { disconnect } = useDisconnect() + + const addressDisplay = viewer?.address?.slice(0, 5) + "..." + viewer?.address?.slice(-4) + const [copyLabel, setCopyLabel] = useState(addressDisplay) + + const dropdownLinks: HeaderLinkType[] = [ + { + icon: , + label: copyLabel, + onClick() { + navigator.clipboard.writeText(viewer?.address || "") + setCopyLabel("Copied!") + setTimeout(() => { + setCopyLabel(addressDisplay) + }, 1000) + }, + }, + { + icon: , + label: "Writer dashboard", + url: `${IS_PROD ? "https" : "http"}://${OUR_DOMAIN}/dashboard`, + }, + { + icon: , + label: "Disconnect", + onClick() { + disconnect() + }, + }, + ] return ( @@ -38,7 +78,7 @@ export const ConnectButton = () => { ); } return ( -
+
+
); })()} diff --git a/src/components/dashboard/DashboardLayout.tsx b/src/components/dashboard/DashboardLayout.tsx index 28abd02c..c5a5831c 100644 --- a/src/components/dashboard/DashboardLayout.tsx +++ b/src/components/dashboard/DashboardLayout.tsx @@ -77,7 +77,7 @@ export function DashboardLayout({
- +
diff --git a/src/components/icons/CopyIcon.tsx b/src/components/icons/CopyIcon.tsx new file mode 100644 index 00000000..56277b03 --- /dev/null +++ b/src/components/icons/CopyIcon.tsx @@ -0,0 +1,9 @@ +import React from "react" + +export const CopyIcon: React.FC> = ( + props +) => { + return ( + + ) +} diff --git a/src/components/icons/LogoutIcon.tsx b/src/components/icons/LogoutIcon.tsx new file mode 100644 index 00000000..baf6f9bb --- /dev/null +++ b/src/components/icons/LogoutIcon.tsx @@ -0,0 +1,9 @@ +import React from "react" + +export const LogoutIcon: React.FC> = ( + props +) => { + return ( + + ) +}