diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index 7389f4a..8cb15d1 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -38,10 +38,6 @@ public function share(Request $request): array { return [ ...parent::share($request), - 'auth' => [ - 'user' => $request->user(), - 'user_is_admin' => user_is_master_admin($request->user()), - ], 'ziggy' => fn (): array => [ ...(new Ziggy)->toArray(), 'location' => $request->url(), diff --git a/resources/js/app.tsx b/resources/js/app.tsx index 6b92f94..09ee4aa 100644 --- a/resources/js/app.tsx +++ b/resources/js/app.tsx @@ -8,8 +8,6 @@ import { ErrorBoundary } from 'react-error-boundary'; import { GA4Provider } from '@/plugins/GA4Context.jsx'; // Updated import import DetailedErrorFallback from './components/custom/detailed-error-fallback'; // Import your component import { Toaster } from './components/ui/sonner'; -import { useTheme } from './hooks/useTheme'; -import AuthDialog from './modules/auth/AuthDialog'; import { AxiosProvider } from './plugins/AxiosContext'; import { MittProvider } from './plugins/MittContext'; @@ -40,8 +38,7 @@ createInertiaApp({ - - + {/* */} diff --git a/resources/js/components/app-header.tsx b/resources/js/components/app-header.tsx index 854f7d7..ba85230 100644 --- a/resources/js/components/app-header.tsx +++ b/resources/js/components/app-header.tsx @@ -7,8 +7,9 @@ import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from '@/co import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; import { UserMenuContent } from '@/components/user-menu-content'; import { cn } from '@/lib/utils'; -import { type BreadcrumbItem, type NavItem, type SharedData } from '@/types'; -import { Link, usePage } from '@inertiajs/react'; +import { type BreadcrumbItem, type NavItem } from '@/types'; +import { Link } from '@inertiajs/react'; +import useUserStore from '@/stores/UserStore'; import { LayoutGrid, Menu, Search } from 'lucide-react'; import AppLogo from './app-logo'; import AppLogoIcon from './app-logo-icon'; @@ -41,8 +42,7 @@ interface AppHeaderProps { } export function AppHeader({ breadcrumbs = [] }: AppHeaderProps) { - const page = usePage(); - const { auth } = page.props; + const { user } = useUserStore(); return ( <> @@ -156,7 +156,7 @@ export function AppHeader({ breadcrumbs = [] }: AppHeaderProps) { - + diff --git a/resources/js/components/app-sidebar.tsx b/resources/js/components/app-sidebar.tsx index 334541b..f1b1ebb 100644 --- a/resources/js/components/app-sidebar.tsx +++ b/resources/js/components/app-sidebar.tsx @@ -2,8 +2,9 @@ import { NavFooter } from '@/components/nav-footer'; import { NavMain } from '@/components/nav-main'; import { NavUser } from '@/components/nav-user'; import { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem } from '@/components/ui/sidebar'; -import { SharedData, type NavItem } from '@/types'; -import { Link, usePage } from '@inertiajs/react'; +import { type NavItem } from '@/types'; +import { Link } from '@inertiajs/react'; +import useUserStore from '@/stores/UserStore'; import { LayoutGrid, UserCog } from 'lucide-react'; import AppLogo from './app-logo'; @@ -42,7 +43,7 @@ const footerNavItems: NavItem[] = [ ]; export function AppSidebar() { - const { auth } = usePage().props; + const { user } = useUserStore(); return ( diff --git a/resources/js/components/nav-user.tsx b/resources/js/components/nav-user.tsx index 1210250..271e952 100644 --- a/resources/js/components/nav-user.tsx +++ b/resources/js/components/nav-user.tsx @@ -3,12 +3,11 @@ import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '@/c import { UserInfo } from '@/components/user-info'; import { UserMenuContent } from '@/components/user-menu-content'; import { useIsMobile } from '@/hooks/use-mobile'; -import { type SharedData } from '@/types'; -import { usePage } from '@inertiajs/react'; +import useUserStore from '@/stores/UserStore'; import { ChevronsUpDown } from 'lucide-react'; export function NavUser() { - const { auth } = usePage().props; + const { user } = useUserStore(); const { state } = useSidebar(); const isMobile = useIsMobile(); @@ -18,7 +17,7 @@ export function NavUser() { - + @@ -27,7 +26,7 @@ export function NavUser() { align="end" side={isMobile ? 'bottom' : state === 'collapsed' ? 'left' : 'bottom'} > - + diff --git a/resources/js/modules/auth/AuthDialog.jsx b/resources/js/modules/auth/AuthDialog.jsx index 74ba2e7..0e840a1 100644 --- a/resources/js/modules/auth/AuthDialog.jsx +++ b/resources/js/modules/auth/AuthDialog.jsx @@ -18,7 +18,8 @@ const AuthDialog = ({}) => { // Listen for text element selection (but don't auto-open sidebar) useEffect(() => { const handleOpenAuth = () => { - setIsOpen(true); + // Disabled for MVP - don't auto-open auth dialog + // setIsOpen(true); }; const handleOpenLogin = () => { diff --git a/resources/js/modules/auth/auth-user.jsx b/resources/js/modules/auth/auth-user.jsx index 926118d..8b9052d 100644 --- a/resources/js/modules/auth/auth-user.jsx +++ b/resources/js/modules/auth/auth-user.jsx @@ -1,18 +1,15 @@ import useUserStore from '@/stores/UserStore'; -import { usePage } from '@inertiajs/react'; import { useEffect } from 'react'; const AuthUser = () => { - const { auth } = usePage().props; const { user, fetchUser } = useUserStore(); useEffect(() => { - if (auth.user) { - if (user == null) { - fetchUser(); - } + // Always try to fetch user data on component mount + if (user === null) { + fetchUser(); } - }, [auth.user]); + }, [user, fetchUser]); }; export default AuthUser; diff --git a/resources/js/modules/editor/partials/edit-nav-sidebar.jsx b/resources/js/modules/editor/partials/edit-nav-sidebar.jsx index 5400735..2d2d696 100644 --- a/resources/js/modules/editor/partials/edit-nav-sidebar.jsx +++ b/resources/js/modules/editor/partials/edit-nav-sidebar.jsx @@ -1,13 +1,12 @@ -import { usePage } from '@inertiajs/react'; - import { Button } from '@/components/ui/button'; import { Sheet, SheetContent, SheetHeader, SheetTitle } from '@/components/ui/sheet'; import { useMitt } from '@/plugins/MittContext'; import useLocalSettingsStore from '@/stores/localSettingsStore'; +import useUserStore from '@/stores/UserStore'; import { Link } from '@inertiajs/react'; export default function EditNavSidebar({ isOpen, onClose }) { - const { auth } = usePage().props; + const { user } = useUserStore(); const emitter = useMitt(); @@ -32,7 +31,7 @@ export default function EditNavSidebar({ isOpen, onClose }) { - {!auth.user && ( + {!user && ( { openAuth(false); @@ -42,7 +41,7 @@ export default function EditNavSidebar({ isOpen, onClose }) { Sign Up )} - {!auth.user && ( + {!user && ( { openAuth(true); @@ -58,7 +57,7 @@ export default function EditNavSidebar({ isOpen, onClose }) { Home - {auth.user && ( + {user && ( { const pollingIntervalRef = useRef(null); const currentJobIdRef = useRef(null); - const { credits } = useUserStore(); - const { auth } = usePage().props; + const { credits, user } = useUserStore(); useEffect(() => { const openSheetListener = () => { @@ -46,10 +45,10 @@ const EditorAISheet = () => { // Check for active job on component mount useEffect(() => { - if (auth.user) { + if (user) { checkForActiveJob(); } - }, [auth.user]); + }, [user]); const checkForActiveJob = async () => { try { @@ -218,7 +217,7 @@ const EditorAISheet = () => { )} - {auth.user ? ( + {user ? ( <> { const { subscription, one_times, isFetchingPricing, fetchPricing, isCheckingOut, checkoutSubscribe, checkoutPurchase } = usePricingStore(); - const { plan, billing, user_usage, credits, redirectBillingPortal, isRedirectingToBilling } = useUserStore(); - const { auth } = usePage().props; + const { plan, billing, user_usage, credits, redirectBillingPortal, isRedirectingToBilling, user } = useUserStore(); // State to control sheet visibility const [isOpen, setIsOpen] = useState(false); @@ -118,7 +116,7 @@ const UpgradeSheet = () => { - {auth?.user ? ( + {user ? ( {/* Non-watermark Exports */} @@ -163,7 +161,7 @@ const UpgradeSheet = () => { {subscription ? ( <> - {auth.user && plan.tier != 'free' ? ( + {user && plan.tier != 'free' ? ( You're now in the {plan?.name} plan! @@ -268,7 +266,7 @@ const UpgradeSheet = () => { - {!(auth.user && plan.tier != 'free') && ( + {!(user && plan.tier != 'free') && ( Frequently Asked Questions diff --git a/resources/js/pages/settings/profile.tsx b/resources/js/pages/settings/profile.tsx index 7be605f..c2d1eda 100644 --- a/resources/js/pages/settings/profile.tsx +++ b/resources/js/pages/settings/profile.tsx @@ -1,6 +1,6 @@ -import { type BreadcrumbItem, type SharedData } from '@/types'; +import { type BreadcrumbItem } from '@/types'; import { Transition } from '@headlessui/react'; -import { Head, Link, useForm, usePage } from '@inertiajs/react'; +import { Head, Link, useForm } from '@inertiajs/react'; import { FormEventHandler } from 'react'; import DeleteUser from '@/components/delete-user'; @@ -11,6 +11,7 @@ import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import AppLayout from '@/layouts/app-layout'; import SettingsLayout from '@/layouts/settings/layout'; +import useUserStore from '@/stores/UserStore'; const breadcrumbs: BreadcrumbItem[] = [ { @@ -25,11 +26,11 @@ type ProfileForm = { } export default function Profile({ mustVerifyEmail, status }: { mustVerifyEmail: boolean; status?: string }) { - const { auth } = usePage().props; + const { user } = useUserStore(); const { data, setData, patch, errors, processing, recentlySuccessful } = useForm>({ - name: auth.user.name, - email: auth.user.email, + name: user?.name || '', + email: user?.email || '', }); const submit: FormEventHandler = (e) => { @@ -82,7 +83,7 @@ export default function Profile({ mustVerifyEmail, status }: { mustVerifyEmail: - {mustVerifyEmail && auth.user.email_verified_at === null && ( + {mustVerifyEmail && user?.email_verified_at === null && ( Your email address is unverified.{' '} diff --git a/resources/js/pages/welcome.tsx b/resources/js/pages/welcome.tsx index 6487e7e..8aae4e6 100644 --- a/resources/js/pages/welcome.tsx +++ b/resources/js/pages/welcome.tsx @@ -1,8 +1,8 @@ -import { type SharedData } from '@/types'; -import { Head, Link, usePage } from '@inertiajs/react'; +import { Head, Link } from '@inertiajs/react'; +import useUserStore from '@/stores/UserStore'; export default function Welcome() { - const { auth } = usePage().props; + const { user } = useUserStore(); return ( <> @@ -13,7 +13,7 @@ export default function Welcome() { - {auth.user ? ( + {user ? (
Your email address is unverified.{' '} diff --git a/resources/js/pages/welcome.tsx b/resources/js/pages/welcome.tsx index 6487e7e..8aae4e6 100644 --- a/resources/js/pages/welcome.tsx +++ b/resources/js/pages/welcome.tsx @@ -1,8 +1,8 @@ -import { type SharedData } from '@/types'; -import { Head, Link, usePage } from '@inertiajs/react'; +import { Head, Link } from '@inertiajs/react'; +import useUserStore from '@/stores/UserStore'; export default function Welcome() { - const { auth } = usePage().props; + const { user } = useUserStore(); return ( <> @@ -13,7 +13,7 @@ export default function Welcome() { - {auth.user ? ( + {user ? (