feat: migrate from Next.js to Vite and React Router, updating routing and environment variable handling
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
||||
import type { ChangeEvent as ReactChangeEvent, DragEvent as ReactDragEvent, MouseEvent as ReactMouseEvent, PointerEvent as ReactPointerEvent } from "react";
|
||||
import { useParams, useRouter, useSearchParams } from "next/navigation";
|
||||
import { useNavigate, useParams, useSearchParams } from "react-router-dom";
|
||||
import { BookOpen, Bot, Home, ImageIcon, Images, List, Menu, Music2, Plus, Redo2, Settings2, Trash2, Undo2, Upload, Video } from "lucide-react";
|
||||
import { saveAs } from "file-saver";
|
||||
|
||||
@@ -220,9 +220,9 @@ function ConnectionCreateOption({ theme, icon, title, description, onClick }: {
|
||||
function InfiniteCanvasPage() {
|
||||
const { message, modal } = App.useApp();
|
||||
const params = useParams<{ id: string }>();
|
||||
const router = useRouter();
|
||||
const searchParams = useSearchParams();
|
||||
const projectId = params.id;
|
||||
const navigate = useNavigate();
|
||||
const [searchParams] = useSearchParams();
|
||||
const projectId = params.id || "";
|
||||
const localAgentConnected = useCanvasAgentStore((state) => state.connected);
|
||||
const localAgentActivity = useCanvasAgentStore((state) => state.activity);
|
||||
const localAgentEnabled = useCanvasAgentStore((state) => state.enabled);
|
||||
@@ -399,7 +399,7 @@ function InfiniteCanvasPage() {
|
||||
setProjectLoaded(false);
|
||||
const project = openProject(projectId);
|
||||
if (!project) {
|
||||
router.replace("/canvas");
|
||||
navigate("/canvas", { replace: true });
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -430,7 +430,7 @@ function InfiniteCanvasPage() {
|
||||
setProjectLoaded(true);
|
||||
};
|
||||
void restore();
|
||||
}, [hydrated, openProject, projectId, router]);
|
||||
}, [hydrated, navigate, openProject, projectId]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!projectLoaded || !["new", "recent", "choose"].includes(searchParams.get("mode") || "")) return;
|
||||
@@ -1032,14 +1032,14 @@ function InfiniteCanvasPage() {
|
||||
|
||||
const createAndOpenProject = useCallback(() => {
|
||||
const id = createProject(`无限画布 ${useCanvasStore.getState().projects.length + 1}`);
|
||||
router.push(`/canvas/${id}`);
|
||||
}, [createProject, router]);
|
||||
navigate(`/canvas/${id}`);
|
||||
}, [createProject, navigate]);
|
||||
|
||||
const deleteCurrentProject = useCallback(() => {
|
||||
deleteProjects([projectId]);
|
||||
cleanupAssetImages();
|
||||
router.push("/canvas");
|
||||
}, [cleanupAssetImages, deleteProjects, projectId, router]);
|
||||
navigate("/canvas");
|
||||
}, [cleanupAssetImages, deleteProjects, navigate, projectId]);
|
||||
|
||||
const handleCanvasMouseDown = useCallback(
|
||||
(event: ReactPointerEvent<HTMLDivElement>) => {
|
||||
@@ -2503,8 +2503,8 @@ function InfiniteCanvasPage() {
|
||||
onCancelTitleEditing={() => setTitleEditing(false)}
|
||||
canUndo={historyState.canUndo}
|
||||
canRedo={historyState.canRedo}
|
||||
onHome={() => router.push("/")}
|
||||
onProjects={() => router.push("/canvas")}
|
||||
onHome={() => navigate("/")}
|
||||
onProjects={() => navigate("/canvas")}
|
||||
onCreateProject={createAndOpenProject}
|
||||
onDeleteProject={deleteCurrentProject}
|
||||
onImportImage={() => handleUploadRequest()}
|
||||
|
||||
Reference in New Issue
Block a user