@@ -14,6 +14,11 @@ export interface MenuBarProps {
1414 editor : Editor ;
1515}
1616
17+
18+ interface FileHelper {
19+ fileName : string ;
20+ reader : FileReader ;
21+ }
1722/**
1823 *
1924 * MenuBar component
@@ -23,8 +28,8 @@ function MenuBar(props: MenuBarProps) {
2328
2429 const theme = useTheme ( ) ;
2530 const isDark = theme . palette . type === 'dark' ;
26- const projectReader = new FileReader ( ) ;
27- const blockReader = new FileReader ( ) ;
31+ const projectReader : FileHelper = { 'fileName' : '' , 'reader' : new FileReader ( ) } ;
32+ const blockReader : FileHelper = { 'fileName' : '' , 'reader' : new FileReader ( ) } ;
2833 const { editor } = props ;
2934
3035 /**
@@ -54,12 +59,13 @@ function MenuBar(props: MenuBarProps) {
5459 * @param _event Mouse click event. Unused
5560 */
5661 const openProject = ( _event : ClickEvent ) => {
62+ projectReader . fileName = '' ;
5763 // Simulate click to open file selection dialog.
5864 document . getElementById ( 'openProjectInput' ) ?. click ( ) ;
59- projectReader . onload = ( event ) => {
65+ projectReader . reader . onload = ( event ) => {
6066 if ( event . target ?. result ) {
6167 // Parse file as JSON
62- editor . loadProject ( JSON . parse ( event . target . result . toString ( ) ) )
68+ editor . loadProject ( JSON . parse ( event . target . result . toString ( ) ) , projectReader . fileName ) ;
6369 }
6470 } ;
6571 }
@@ -114,11 +120,12 @@ function MenuBar(props: MenuBarProps) {
114120 * @param event File field change event.
115121 * @param reader Reader to open the uploaded file as text
116122 */
117- const onFileUpload = ( event : ChangeEvent < HTMLInputElement > , reader : FileReader ) => {
123+ const onFileUpload = ( event : ChangeEvent < HTMLInputElement > , fileHelper : FileHelper ) => {
118124 const file = event . target . files ?. length ? event . target . files [ 0 ] : null ;
119125 event . target . value = '' ;
120126 if ( file ) {
121- reader . readAsText ( file ) ;
127+ fileHelper . fileName = file . name ;
128+ fileHelper . reader . readAsText ( file ) ;
122129 }
123130 }
124131
@@ -138,10 +145,11 @@ function MenuBar(props: MenuBarProps) {
138145 * @param _event Mouse click event. Unused
139146 */
140147 const addAsBlock = ( _event : ClickEvent ) => {
148+ blockReader . fileName = '' ;
141149 document . getElementById ( 'addAsBlockInput' ) ?. click ( ) ;
142- blockReader . onload = ( event ) => {
150+ blockReader . reader . onload = ( event ) => {
143151 if ( event . target ?. result ) {
144- editor . addAsBlock ( JSON . parse ( event . target . result . toString ( ) ) ) ;
152+ editor . addAsBlock ( JSON . parse ( event . target . result . toString ( ) ) , blockReader . fileName ) ;
145153 }
146154 } ;
147155 }
0 commit comments