11import React , { useEffect , useCallback , useReducer , useState } from "react" ;
2- import { useRouter } from "next/router" ;
2+ import { useRouter , NextRouter } from "next/router" ;
33import { SigninToContinueBannerPrmoptProvider } from "components/prompt-banner-signin-to-continue" ;
44import { Editor , EditorDefaultProviders } from "scaffolds/editor" ;
55import { EditorSnapshot , StateProvider } from "core/states" ;
66import { WorkspaceAction } from "core/actions" ;
7- import { useDesignFile } from "hooks" ;
8-
7+ import { useDesignFile , TUseDesignFile } from "hooks" ;
98import { warmup } from "scaffolds/editor" ;
109import { FileResponse } from "@design-sdk/figma-remote-types" ;
1110import { EditorBrowserMetaHead } from "components/editor" ;
1211
1312export 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