diff --git a/src/routes/home.lazy.tsx b/src/routes/home.lazy.tsx
index 952ecda..696248d 100644
--- a/src/routes/home.lazy.tsx
+++ b/src/routes/home.lazy.tsx
@@ -1,6 +1,17 @@
import HomePageStatic from "@/views/HomePageStatic";
import { createLazyFileRoute } from "@tanstack/react-router";
+import { ProfileOverlayProvider } from "@/contexts/ProfileOverlayContext";
+import ProfileOverlay from "@/components/ProfileOverlay";
+
+function HomePageWithProvider() {
+ return (
+
+
+
+
+ );
+}
export const Route = createLazyFileRoute("/home")({
- component: HomePageStatic,
+ component: HomePageWithProvider,
});
diff --git a/src/views/HomePageStatic.tsx b/src/views/HomePageStatic.tsx
index 0be6d93..1b1bfbb 100644
--- a/src/views/HomePageStatic.tsx
+++ b/src/views/HomePageStatic.tsx
@@ -4,10 +4,15 @@ import isAuthenticated from "@/hooks/isAuthenticated";
import { useQuery } from "@tanstack/react-query";
import { useNavigate } from "@tanstack/react-router";
import { useEffect, useState } from "react";
+import { getLocalUser } from "@/db/auth";
+import { useProfileOverlay } from "@/contexts/ProfileOverlayContext";
+import { User } from "lucide-react";
export default function HomePageStatic() {
const navigate = useNavigate();
const [loadingTimeout, setLoadingTimeout] = useState(false);
+ const [imageError, setImageError] = useState(false);
+ const { openProfile } = useProfileOverlay();
const { data, isLoading, error } = useQuery({
queryKey: ["user", "authenticated"],
@@ -17,6 +22,25 @@ export default function HomePageStatic() {
staleTime: 30000, // 30 seconds
});
+ const { data: profileData } = useQuery({
+ queryKey: ["profile"],
+ queryFn: getLocalUser,
+ enabled: data === true,
+ retry: 1,
+ retryDelay: 1000,
+ refetchOnMount: true,
+ refetchOnWindowFocus: true,
+ });
+
+ // Extract avatar URL for better readability
+ const userMetadata = profileData?.data.session?.user.user_metadata;
+ const avatarUrl = userMetadata?.avatar_url || userMetadata?.picture;
+
+ // Reset image error when avatar URL changes
+ useEffect(() => {
+ setImageError(false);
+ }, [avatarUrl]);
+
// Set a timeout for loading state to prevent infinite loading
useEffect(() => {
if (isLoading) {
@@ -45,8 +69,33 @@ export default function HomePageStatic() {
navigate({ to: "/login", replace: true });
}
}
+
return (
+ {/* Account button in top-right when authenticated */}
+ {data === true && (
+
+
+
+ )}