diff --git a/app/auth/callback/page.tsx b/app/auth/callback/page.tsx index 318597a6d53..db976b81502 100644 --- a/app/auth/callback/page.tsx +++ b/app/auth/callback/page.tsx @@ -4,7 +4,9 @@ import { useEffect } from "react" import { useRouter } from "next/navigation" import { Loader2 } from "lucide-react" -import { createClient } from "@/lib/supabase/client" +import { webSupabaseClientFactory } from "@ui/web/adapters/supabaseClient" +import { webStorageAdapter } from "@ui/web/adapters/storage" +import { supabaseConfig } from "@ui/web/config" export default function AuthCallback() { const router = useRouter() @@ -18,7 +20,10 @@ export default function AuthCallback() { return } - const supabase = createClient() + const supabase = webSupabaseClientFactory.createClient( + supabaseConfig, + { storage: webStorageAdapter } + ) // If Supabase already processed the callback (detectSessionInUrl runs internally) // and we already have a session, just redirect without re-exchanging the code. diff --git a/app/page.tsx b/app/page.tsx index 4b3ad6da51c..7f196339a40 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -6,7 +6,7 @@ import { toast } from "sonner" import { AuthShell } from "@/components/features/auth/AuthShell" import { NotesShell } from "@/components/features/notes/NotesShell" -import { useNoteAppController } from "@/hooks/useNoteAppController" +import { useNoteAppController } from "@ui/web/hooks/useNoteAppController" export default function App() { const controller = useNoteAppController() diff --git a/components/ImportButton.tsx b/components/ImportButton.tsx index ddbe701f143..6c0beb652be 100644 --- a/components/ImportButton.tsx +++ b/components/ImportButton.tsx @@ -21,7 +21,6 @@ import { import { useSupabase } from "@/lib/providers/SupabaseProvider" import { browser } from "@/lib/adapters/browser" -const MAX_FILE_SIZE = 100 * 1024 * 1024 // 100MB const IMPORT_STATE_KEY = "everfreenote-import-state" const initialProgress: ImportProgress = { @@ -37,9 +36,10 @@ type ImportButtonProps = { status: ImportStatus, counts: { successCount: number; errorCount: number } ) => void + maxFileSize?: number } -export function ImportButton({ onImportComplete }: ImportButtonProps) { +export function ImportButton({ onImportComplete, maxFileSize = 100 * 1024 * 1024 }: ImportButtonProps) { const [importing, setImporting] = React.useState(false) const [dialogOpen, setDialogOpen] = React.useState(false) const [progressDialogOpen, setProgressDialogOpen] = React.useState(false) @@ -99,10 +99,10 @@ export function ImportButton({ onImportComplete }: ImportButtonProps) { setImportResult(null) // Validate file sizes - const oversizedFiles = files.filter((file) => file.size > MAX_FILE_SIZE) + const oversizedFiles = files.filter((file) => file.size > maxFileSize) if (oversizedFiles.length > 0) { const fileNames = oversizedFiles.map((file) => file.name).join(", ") - toast.error(`Files too large (max 100MB): ${fileNames}`) + toast.error(`Files too large (max ${Math.round(maxFileSize / 1024 / 1024)}MB): ${fileNames}`) setImporting(false) setProgressDialogOpen(false) return diff --git a/components/RichTextEditor.tsx b/components/RichTextEditor.tsx index e963c453536..cc3922ddd45 100644 --- a/components/RichTextEditor.tsx +++ b/components/RichTextEditor.tsx @@ -137,11 +137,10 @@ const MenuBar = ({ editor }: MenuBarProps) => {