@@ -43,7 +43,15 @@ export default class MediaDbPlugin extends Plugin {
4343 this . addCommand ( {
4444 id : 'update-media-db-note' ,
4545 name : 'Update the open note, if it is a Media DB entry.' ,
46- callback : ( ) => this . updateActiveNote ( ) ,
46+ checkCallback : ( checking : boolean ) => {
47+ if ( ! this . app . workspace . getActiveFile ( ) ) {
48+ return false ;
49+ }
50+ if ( ! checking ) {
51+ this . updateActiveNote ( )
52+ }
53+ return true ;
54+ } ,
4755 } ) ;
4856
4957 // register the settings tab
@@ -88,7 +96,11 @@ export default class MediaDbPlugin extends Plugin {
8896 const fileName = replaceIllegalFileNameCharactersInString ( this . mediaTypeManager . getFileName ( mediaTypeModel ) ) ;
8997 const filePath = `${ this . settings . folder . replace ( / \/ $ / , '' ) } /${ fileName } .md` ;
9098
91- await this . app . vault . delete ( this . app . vault . getAbstractFileByPath ( filePath ) ) ;
99+ const file = this . app . vault . getAbstractFileByPath ( filePath ) ;
100+ if ( file ) {
101+ await this . app . vault . delete ( file ) ;
102+ }
103+
92104 const targetFile = await this . app . vault . create ( filePath , fileContent ) ;
93105
94106 // open file
@@ -127,10 +139,12 @@ export default class MediaDbPlugin extends Plugin {
127139 }
128140
129141 async updateActiveNote ( ) {
130- const activeLeaf : TFile = this . app . workspace . getActiveFile ( ) ;
131- if ( ! activeLeaf . name ) return ;
142+ const activeFile : TFile = this . app . workspace . getActiveFile ( ) ;
143+ if ( ! activeFile ) {
144+ throw new Error ( 'MDB | there is no active note' ) ;
145+ }
132146
133- let metadata : FrontMatterCache = this . app . metadataCache . getFileCache ( activeLeaf ) . frontmatter ;
147+ let metadata : FrontMatterCache = this . app . metadataCache . getFileCache ( activeFile ) . frontmatter ;
134148
135149 if ( ! metadata ?. type || ! metadata ?. dataSource || ! metadata ?. id ) {
136150 throw new Error ( 'MDB | active note is not a Media DB entry or is missing metadata' ) ;
@@ -139,15 +153,15 @@ export default class MediaDbPlugin extends Plugin {
139153 delete metadata . position ; // remove unnecessary data from the FrontMatterCache
140154 let oldMediaTypeModel = this . mediaTypeManager . createMediaTypeModelFromMediaType ( metadata , metadata . type ) ;
141155
142- let newMediaTypeModel = await this . apiManager . queryDetailedInfo ( { dataSource : metadata . dataSource , id : metadata . id } as MediaTypeModel ) ;
156+ let newMediaTypeModel = await this . apiManager . queryDetailedInfoById ( metadata . id , metadata . dataSource ) ;
143157 if ( ! newMediaTypeModel ) {
144158 return ;
145159 }
146160
147161 newMediaTypeModel = Object . assign ( oldMediaTypeModel , newMediaTypeModel . getWithOutUserData ( ) ) ;
148162
149163 console . log ( 'MDB | deleting old entry' ) ;
150- await this . app . vault . delete ( activeLeaf ) ;
164+ await this . app . vault . delete ( activeFile ) ;
151165 await this . createMediaDbNoteFromModel ( newMediaTypeModel ) ;
152166 }
153167
0 commit comments