@@ -29,54 +29,76 @@ export default function FileEntryEditor() {
2929 initialState . type == "success" && initialState . value . history . present ;
3030
3131 useEffect ( ( ) => {
32- if ( file ) {
33- if ( ! file . __initial ) {
34- // when full file is loaded, allow editor with user interaction.
35- setLoading ( false ) ;
32+ if ( file . __type === "loading" ) {
33+ return ;
34+ }
35+
36+ if ( file . __type === "error" ) {
37+ // handle error by reason
38+ switch ( file . reason ) {
39+ case "unauthorized" :
40+ case "no-auth" : {
41+ router . push ( "/preferences/access-tokens" ) ;
42+ break ;
43+ }
44+ case "no-file" : {
45+ // ignore. might still be fetching file from query param.
46+ break ;
47+ }
3648 }
49+ return ;
50+ }
3751
38- let val : EditorSnapshot ;
52+ if ( ! file . __initial ) {
53+ // when full file is loaded, allow editor with user interaction.
54+ setLoading ( false ) ;
55+ }
3956
40- // TODO: seed this as well
41- // ->> file.styles;
57+ let val : EditorSnapshot ;
4258
43- const components = warmup . componentsFrom ( file ) ;
44- const pages = warmup . pagesFrom ( file ) ;
59+ // TODO: seed this as well
60+ // ->> file.styles ;
4561
46- if ( prevstate ) {
47- val = {
48- ...prevstate ,
49- design : {
50- ...prevstate . design ,
51- pages : pages ,
52- } ,
53- selectedPage : warmup . selectedPage (
54- prevstate ,
55- pages ,
56- prevstate . selectedNodes
57- ) ,
58- } ;
59- } else {
60- val = {
61- selectedNodes : [ ] ,
62- selectedLayersOnPreview : [ ] ,
63- design : {
64- input : null ,
65- components : components ,
66- // styles: null,
67- key : filekey ,
68- pages : pages ,
69- } ,
70- selectedPage : warmup . selectedPage ( prevstate , pages , null ) ,
71- } ;
72- }
62+ const components = warmup . componentsFrom ( file ) ;
63+ const pages = warmup . pagesFrom ( file ) ;
7364
74- initialDispatcher ( {
75- type : "set" ,
76- value : val ,
77- } ) ;
65+ if ( prevstate ) {
66+ val = {
67+ ...prevstate ,
68+ design : {
69+ ...prevstate . design ,
70+ pages : pages ,
71+ } ,
72+ selectedPage : warmup . selectedPage (
73+ prevstate ,
74+ pages ,
75+ prevstate . selectedNodes
76+ ) ,
77+ } ;
78+ } else {
79+ val = {
80+ selectedNodes : [ ] ,
81+ selectedLayersOnPreview : [ ] ,
82+ design : {
83+ input : null ,
84+ components : components ,
85+ // styles: null,
86+ key : filekey ,
87+ pages : pages ,
88+ } ,
89+ selectedPage : warmup . selectedPage ( prevstate , pages , null ) ,
90+ } ;
7891 }
79- } , [ filekey , file ?. document ?. children ] ) ;
92+
93+ initialDispatcher ( {
94+ type : "set" ,
95+ value : val ,
96+ } ) ;
97+ } , [
98+ filekey ,
99+ file ,
100+ file . __type == "file-fetched-for-app" ? file . document ?. children : null ,
101+ ] ) ;
80102
81103 const safe_value = warmup . safestate ( initialState ) ;
82104 return (
0 commit comments