@@ -8,6 +8,7 @@ import {OMDbAPI} from './api/apis/OMDbAPI';
88import { MediaDbAdvancedSearchModal } from './modals/MediaDbAdvancedSearchModal' ;
99import { MediaDbSearchResultModal } from './modals/MediaDbSearchResultModal' ;
1010import { MALAPI } from './api/apis/MALAPI' ;
11+ import { MediaDbIdSearchModal } from './modals/MediaDbIdSearchModal' ;
1112
1213export default class MediaDbPlugin extends Plugin {
1314 settings : MediaDbPluginSettings ;
@@ -18,15 +19,21 @@ export default class MediaDbPlugin extends Plugin {
1819
1920 // add icon to the left ribbon
2021 const ribbonIconEl = this . addRibbonIcon ( 'database' , 'Add new Media DB entry' , ( evt : MouseEvent ) =>
21- this . createMediaDbNote ( ) ,
22+ this . createMediaDbNote ( this . openMediaDbSearchModal . bind ( this ) ) ,
2223 ) ;
2324 ribbonIconEl . addClass ( 'obsidian-media-db-plugin-ribbon-class' ) ;
2425
2526 // register command to open search modal
2627 this . addCommand ( {
2728 id : 'open-media-db-search-modal' ,
2829 name : 'Add new Media DB entry' ,
29- callback : ( ) => this . createMediaDbNote ( ) ,
30+ callback : ( ) => this . createMediaDbNote ( this . openMediaDbSearchModal . bind ( this ) ) ,
31+ } ) ;
32+ // register command to open id search modal
33+ this . addCommand ( {
34+ id : 'open-media-db-id-search-modal' ,
35+ name : 'Add new Media DB entry by id' ,
36+ callback : ( ) => this . createMediaDbNote ( this . openMediaDbIdSearchModal . bind ( this ) ) ,
3037 } ) ;
3138
3239 // register the settings tab
@@ -40,9 +47,9 @@ export default class MediaDbPlugin extends Plugin {
4047 this . apiManager . registerAPI ( new MALAPI ( this ) ) ;
4148 }
4249
43- async createMediaDbNote ( ) : Promise < void > {
50+ async createMediaDbNote ( modal : ( ) => Promise < MediaTypeModel > ) : Promise < void > {
4451 try {
45- let data : MediaTypeModel = await this . openMediaDbSearchModal ( ) ;
52+ let data : MediaTypeModel = await modal ( ) ;
4653 console . log ( 'MDB | Creating new note...' ) ;
4754
4855 data = await this . apiManager . queryDetailedInfo ( data ) ;
@@ -91,13 +98,22 @@ export default class MediaDbPlugin extends Plugin {
9198 new MediaDbAdvancedSearchModal ( this . app , this . apiManager , ( err , results ) => {
9299 if ( err ) return reject ( err ) ;
93100 new MediaDbSearchResultModal ( this . app , results , ( err2 , res ) => {
94- if ( err ) return reject ( err2 ) ;
101+ if ( err2 ) return reject ( err2 ) ;
95102 resolve ( res ) ;
96103 } ) . open ( ) ;
97104 } ) . open ( ) ;
98105 } ) ) ;
99106 }
100107
108+ async openMediaDbIdSearchModal ( ) : Promise < MediaTypeModel > {
109+ return new Promise ( ( ( resolve , reject ) => {
110+ new MediaDbIdSearchModal ( this . app , this . apiManager , ( err , res ) => {
111+ if ( err ) return reject ( err ) ;
112+ resolve ( res ) ;
113+ } ) . open ( ) ;
114+ } ) ) ;
115+ }
116+
101117 async loadSettings ( ) {
102118 this . settings = Object . assign ( { } , DEFAULT_SETTINGS , await this . loadData ( ) ) ;
103119 }
0 commit comments