diff --git a/src/components/trade/header/user-menu.tsx b/src/components/trade/header/user-menu.tsx index dd7e8b57..6cb6d57a 100644 --- a/src/components/trade/header/user-menu.tsx +++ b/src/components/trade/header/user-menu.tsx @@ -6,6 +6,7 @@ import { PlusCircleIcon, SignOutIcon, SpinnerGapIcon, + TrophyIcon, WalletIcon, } from "@phosphor-icons/react"; import { useLogin, useLogout, usePrivy } from "@privy-io/react-auth"; @@ -22,6 +23,7 @@ import { import { useCopyToClipboard } from "@/hooks/ui/use-copy-to-clipboard"; import { useAutoRegisterReferral } from "@/hooks/use-referral"; import { shortenAddress } from "@/lib/format"; +import { usePointsModalActions } from "@/stores/use-global-modal-store"; function CopyAddressMenuItem({ address }: { address: string }) { const { copied, copy } = useCopyToClipboard(); @@ -50,22 +52,22 @@ export function UserMenu() { const { authenticated, ready } = usePrivy(); const { login } = useLogin(); const { logout } = useLogout(); - const { disconnect } = useDisconnect(); + const { mutate: disconnect } = useDisconnect(); const { data: ensName } = useEnsName({ address }); const [mounted, setMounted] = useState(false); useAutoRegisterReferral(); + const { open: openPointsModal } = usePointsModalActions(); useEffect(() => { setMounted(true); }, []); - function handleLogout() { + async function handleLogout() { if (authenticated) { - logout(); - } else { - disconnect(); + await logout(); } + disconnect(); } if (!mounted || !ready || isConnecting) { @@ -104,6 +106,12 @@ export function UserMenu() { Add funds + + + + Referrals + + diff --git a/src/hooks/use-referral.ts b/src/hooks/use-referral.ts index 4930bcde..e6d1035d 100644 --- a/src/hooks/use-referral.ts +++ b/src/hooks/use-referral.ts @@ -33,14 +33,16 @@ export function useReferralCapture() { export function useAutoRegisterReferral() { const { address, isConnected } = useConnection(); - const { user } = usePrivy(); - const registeredRef = useRef(false); + const { user, authenticated } = usePrivy(); + const registeredAddressRef = useRef(null); useEffect(() => { async function autoRegister() { - if (!isConnected || !address || registeredRef.current) return; + if (!isConnected || !authenticated || !address) return; + if (authenticated && !user?.id) return; + if (registeredAddressRef.current === address) return; - registeredRef.current = true; + registeredAddressRef.current = address; try { const res = await fetch(`${API_URL}/user_points?user_address=${address}`); @@ -67,12 +69,12 @@ export function useAutoRegisterReferral() { } } catch (error) { console.error("Auto-registration failed:", error); - registeredRef.current = false; + registeredAddressRef.current = null; } } autoRegister(); - }, [isConnected, address, user?.id]); + }, [isConnected, authenticated, address, user?.id]); } export { getStoredReferral }; diff --git a/src/locales/ar/messages.po b/src/locales/ar/messages.po index 80d948cf..d47646af 100644 --- a/src/locales/ar/messages.po +++ b/src/locales/ar/messages.po @@ -1467,6 +1467,10 @@ msgstr "" msgid "Referral Code (optional)" msgstr "" +#: src/components/trade/header/user-menu.tsx +msgid "Referrals" +msgstr "" + #: src/components/pages/builder-page.tsx #~ msgid "Register Another" #~ msgstr "" diff --git a/src/locales/en/messages.po b/src/locales/en/messages.po index 09737820..fd7a0bd8 100644 --- a/src/locales/en/messages.po +++ b/src/locales/en/messages.po @@ -1476,6 +1476,10 @@ msgstr "Refer friends" msgid "Referral Code (optional)" msgstr "Referral Code (optional)" +#: src/components/trade/header/user-menu.tsx +msgid "Referrals" +msgstr "Referrals" + #: src/components/pages/builder-page.tsx #~ msgid "Register Another" #~ msgstr "Register Another" diff --git a/src/locales/es/messages.po b/src/locales/es/messages.po index b43e0be9..90885348 100644 --- a/src/locales/es/messages.po +++ b/src/locales/es/messages.po @@ -1467,6 +1467,10 @@ msgstr "" msgid "Referral Code (optional)" msgstr "" +#: src/components/trade/header/user-menu.tsx +msgid "Referrals" +msgstr "" + #: src/components/pages/builder-page.tsx #~ msgid "Register Another" #~ msgstr "" diff --git a/src/locales/fr/messages.po b/src/locales/fr/messages.po index 5c94e71f..d600be9e 100644 --- a/src/locales/fr/messages.po +++ b/src/locales/fr/messages.po @@ -1467,6 +1467,10 @@ msgstr "" msgid "Referral Code (optional)" msgstr "" +#: src/components/trade/header/user-menu.tsx +msgid "Referrals" +msgstr "" + #: src/components/pages/builder-page.tsx #~ msgid "Register Another" #~ msgstr "" diff --git a/src/locales/hi/messages.po b/src/locales/hi/messages.po index fed857b9..0196085c 100644 --- a/src/locales/hi/messages.po +++ b/src/locales/hi/messages.po @@ -1467,6 +1467,10 @@ msgstr "" msgid "Referral Code (optional)" msgstr "" +#: src/components/trade/header/user-menu.tsx +msgid "Referrals" +msgstr "" + #: src/components/pages/builder-page.tsx #~ msgid "Register Another" #~ msgstr "" diff --git a/src/locales/zh/messages.po b/src/locales/zh/messages.po index e45d55bb..f3b7280a 100644 --- a/src/locales/zh/messages.po +++ b/src/locales/zh/messages.po @@ -1467,6 +1467,10 @@ msgstr "" msgid "Referral Code (optional)" msgstr "" +#: src/components/trade/header/user-menu.tsx +msgid "Referrals" +msgstr "" + #: src/components/pages/builder-page.tsx #~ msgid "Register Another" #~ msgstr ""