@@ -641,8 +641,8 @@ async function store(state, emitter) {
641
641
state . renamingFile = source
642
642
emitter . emit ( 'render' )
643
643
} )
644
- emitter . on ( 'finish-renaming' , async ( value ) => {
645
- log ( 'finish-renaming' , value )
644
+ emitter . on ( 'finish-renaming-file ' , async ( value ) => {
645
+ log ( 'finish-renaming-file ' , value )
646
646
647
647
// You can only rename one file, the selected one
648
648
const file = state . selectedFiles [ 0 ]
@@ -776,6 +776,166 @@ async function store(state, emitter) {
776
776
emitter . emit ( 'render' )
777
777
} )
778
778
779
+ emitter . on ( 'rename-tab' , ( id ) => {
780
+ log ( 'rename-tab' , id )
781
+ state . renamingTab = id
782
+ emitter . emit ( 'render' )
783
+ } )
784
+ emitter . on ( 'finish-renaming-tab' , async ( value ) => {
785
+ log ( 'finish-renaming-tab' , value )
786
+ let response = canSave ( {
787
+ view : state . view ,
788
+ isConnected : state . isConnected ,
789
+ openFiles : state . openFiles ,
790
+ editingFile : state . editingFile
791
+ } )
792
+ if ( response == false ) {
793
+ log ( "can't save" )
794
+ return
795
+ }
796
+
797
+ state . isSaving = true
798
+ emitter . emit ( 'render' )
799
+
800
+ // Rename the open file object
801
+ let openFile = state . openFiles . find ( f => f . id === state . renamingTab )
802
+ if ( value == openFile . fileName ) {
803
+ state . renamingTab = null
804
+ state . isSaving = false
805
+ emitter . emit ( 'render' )
806
+ return
807
+ }
808
+
809
+ const oldName = openFile . fileName
810
+ openFile . fileName = value
811
+
812
+ let willOverwrite = false
813
+ if ( openFile . parentFolder === null ) { // it's a new file
814
+ // Define parent folder
815
+ if ( openFile . source == 'board' ) {
816
+ openFile . parentFolder = state . boardNavigationPath
817
+ // Check for overwrite
818
+ willOverwrite = await serial . fileExists (
819
+ serial . getFullPath (
820
+ state . boardNavigationRoot ,
821
+ openFile . parentFolder ,
822
+ openFile . fileName
823
+ )
824
+ )
825
+ } else if ( openFile . source == 'disk' ) {
826
+ openFile . parentFolder = state . diskNavigationPath
827
+ // Check for overwrite
828
+ willOverwrite = await disk . fileExists (
829
+ disk . getFullPath (
830
+ state . diskNavigationRoot ,
831
+ openFile . parentFolder ,
832
+ openFile . fileName
833
+ )
834
+ )
835
+ }
836
+ } else if ( openFile . parentFolder !== null ) {
837
+ if ( openFile . source == 'board' ) {
838
+ // Check for overwrite
839
+ willOverwrite = await serial . fileExists (
840
+ serial . getFullPath (
841
+ state . boardNavigationRoot ,
842
+ openFile . parentFolder ,
843
+ openFile . fileName
844
+ )
845
+ )
846
+ } else if ( openFile . source == 'disk' ) {
847
+ // Check for overwrite
848
+ willOverwrite = await disk . fileExists (
849
+ disk . getFullPath (
850
+ state . diskNavigationRoot ,
851
+ openFile . parentFolder ,
852
+ openFile . fileName
853
+ )
854
+ )
855
+ }
856
+ }
857
+
858
+ // SAVE FILE CONTENTS
859
+ const contents = openFile . editor . editor . state . doc . toString ( )
860
+ try {
861
+ if ( openFile . source == 'board' ) {
862
+ await serial . get_prompt ( )
863
+ await serial . saveFileContent (
864
+ serial . getFullPath (
865
+ state . boardNavigationRoot ,
866
+ openFile . parentFolder ,
867
+ oldName
868
+ ) ,
869
+ contents ,
870
+ ( e ) => {
871
+ state . savingProgress = e
872
+ emitter . emit ( 'render' )
873
+ }
874
+ )
875
+ } else if ( openFile . source == 'disk' ) {
876
+ await disk . saveFileContent (
877
+ disk . getFullPath (
878
+ state . diskNavigationRoot ,
879
+ openFile . parentFolder ,
880
+ oldName
881
+ ) ,
882
+ contents
883
+ )
884
+ }
885
+ } catch ( e ) {
886
+ log ( 'error' , e )
887
+ }
888
+
889
+ if ( willOverwrite ) {
890
+ const confirmation = confirm ( `You are about to overwrite the file ${ openFile . fileName } on your ${ openFile . source } .\n\n Are you sure you want to proceed?` , 'Cancel' , 'Yes' )
891
+ if ( ! confirmation ) {
892
+ state . renamingTab = null
893
+ state . isSaving = false
894
+ openFile . fileName = oldName
895
+ emitter . emit ( 'render' )
896
+ return
897
+ }
898
+ }
899
+
900
+ try {
901
+ if ( openFile . source == 'board' ) {
902
+ await serial . renameFile (
903
+ serial . getFullPath (
904
+ state . boardNavigationRoot ,
905
+ openFile . parentFolder ,
906
+ oldName
907
+ ) ,
908
+ serial . getFullPath (
909
+ state . boardNavigationRoot ,
910
+ openFile . parentFolder ,
911
+ openFile . fileName
912
+ )
913
+ )
914
+ } else if ( openFile . source == 'disk' ) {
915
+ await disk . renameFile (
916
+ disk . getFullPath (
917
+ state . diskNavigationRoot ,
918
+ openFile . parentFolder ,
919
+ oldName
920
+ ) ,
921
+ disk . getFullPath (
922
+ state . diskNavigationRoot ,
923
+ openFile . parentFolder ,
924
+ openFile . fileName
925
+ )
926
+ )
927
+ }
928
+ } catch ( e ) {
929
+ log ( 'error' , e )
930
+ }
931
+
932
+ state . renamingTab = null
933
+ state . isSaving = false
934
+ state . savingProgress = 0
935
+ emitter . emit ( 'refresh-files' )
936
+ emitter . emit ( 'render' )
937
+ } )
938
+
779
939
emitter . on ( 'toggle-file-selection' , ( file , source , event ) => {
780
940
log ( 'toggle-file-selection' , file , source , event )
781
941
// Single file selection unless holding keyboard key
0 commit comments