Skip to content

Commit 858f26a

Browse files
fix partof component tree - react invalid hook call issue
1 parent 95660a8 commit 858f26a

2 files changed

Lines changed: 54 additions & 20 deletions

File tree

editor/hooks/use-design.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ export function useDesign({
172172
return design;
173173
}
174174

175-
type TUseDesignFile =
175+
export type TUseDesignFile =
176176
| TFetchFileForApp
177177
| {
178178
__type: "error";

editor/pages/files/[key]/index.tsx

Lines changed: 53 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,61 @@
11
import React, { useEffect, useCallback, useReducer, useState } from "react";
2-
import { useRouter } from "next/router";
2+
import { useRouter, NextRouter } from "next/router";
33
import { SigninToContinueBannerPrmoptProvider } from "components/prompt-banner-signin-to-continue";
44
import { Editor, EditorDefaultProviders } from "scaffolds/editor";
55
import { EditorSnapshot, StateProvider } from "core/states";
66
import { WorkspaceAction } from "core/actions";
7-
import { useDesignFile } from "hooks";
8-
7+
import { useDesignFile, TUseDesignFile } from "hooks";
98
import { warmup } from "scaffolds/editor";
109
import { FileResponse } from "@design-sdk/figma-remote-types";
1110
import { EditorBrowserMetaHead } from "components/editor";
1211

1312
export default function FileEntryEditor() {
1413
const router = useRouter();
15-
const { key, node } = router.query;
16-
const filekey = key as string;
17-
const nodeid = node as string;
14+
const { key } = router.query;
1815

19-
const [loading, setLoading] = useState<boolean>(true);
16+
const [nodeid, setNodeid] = useState<string>();
17+
const filekey = key as string;
18+
// const nodeid = node as string;
2019

2120
// background whole file fetching
2221
const file = useDesignFile({ file: filekey });
2322

23+
useEffect(() => {
24+
if (!router.isReady) return;
25+
26+
if (!nodeid) {
27+
// set nodeid only first time
28+
setNodeid(router.query.node as string);
29+
console.log("nodeid set", router.query.node);
30+
}
31+
}, [router.isReady]);
32+
33+
return (
34+
<SigninToContinueBannerPrmoptProvider>
35+
<SetupEditor
36+
key={filekey}
37+
file={file}
38+
filekey={filekey}
39+
nodeid={nodeid}
40+
router={router}
41+
/>
42+
</SigninToContinueBannerPrmoptProvider>
43+
);
44+
}
45+
46+
function SetupEditor({
47+
filekey,
48+
nodeid,
49+
router,
50+
file,
51+
}: {
52+
nodeid: string;
53+
filekey: string;
54+
router: NextRouter;
55+
file: TUseDesignFile;
56+
}) {
57+
const [loading, setLoading] = useState<boolean>(true);
58+
2459
const [initialState, initialDispatcher] = useReducer(warmup.initialReducer, {
2560
type: "pending",
2661
});
@@ -29,10 +64,10 @@ export default function FileEntryEditor() {
2964
initialDispatcher({ type: "update", value: action });
3065
}, []);
3166

32-
const prevstate =
33-
initialState.type == "success" && initialState.value.history.present;
34-
3567
const initWith = (file: FileResponse) => {
68+
const prevstate =
69+
initialState.type == "success" && initialState.value.history.present;
70+
3671
let val: EditorSnapshot;
3772

3873
// TODO: seed this as well
@@ -129,16 +164,15 @@ export default function FileEntryEditor() {
129164
]);
130165

131166
const safe_value = warmup.safestate(initialState);
167+
132168
return (
133-
<SigninToContinueBannerPrmoptProvider>
134-
<StateProvider state={safe_value} dispatch={handleDispatch}>
135-
<EditorDefaultProviders>
136-
<EditorBrowserMetaHead>
137-
<Editor loading={loading} />
138-
</EditorBrowserMetaHead>
139-
</EditorDefaultProviders>
140-
</StateProvider>
141-
</SigninToContinueBannerPrmoptProvider>
169+
<StateProvider state={safe_value} dispatch={handleDispatch}>
170+
<EditorDefaultProviders>
171+
<EditorBrowserMetaHead>
172+
<Editor loading={loading} />
173+
</EditorBrowserMetaHead>
174+
</EditorDefaultProviders>
175+
</StateProvider>
142176
);
143177
}
144178

0 commit comments

Comments
 (0)