@@ -12,11 +12,14 @@ import {WikipediaAPI} from './api/apis/WikipediaAPI';
1212import { MusicBrainzAPI } from './api/apis/MusicBrainzAPI' ;
1313import { MediaTypeManager } from './utils/MediaTypeManager' ;
1414import { SteamAPI } from './api/apis/SteamAPI' ;
15+ import { ModelPropertyMapper } from './settings/ModelPropertyMapper' ;
16+ import { YAMLConverter } from './utils/YAMLConverter' ;
1517
1618export default class MediaDbPlugin extends Plugin {
1719 settings : MediaDbPluginSettings ;
1820 apiManager : APIManager ;
1921 mediaTypeManager : MediaTypeManager ;
22+ modelPropertyMapper : ModelPropertyMapper ;
2023
2124 async onload ( ) {
2225 await this . loadSettings ( ) ;
@@ -68,6 +71,7 @@ export default class MediaDbPlugin extends Plugin {
6871 // this.apiManager.registerAPI(new LocGovAPI(this)); // TODO: parse data
6972
7073 this . mediaTypeManager = new MediaTypeManager ( this . settings ) ;
74+ this . modelPropertyMapper = new ModelPropertyMapper ( this . settings ) ;
7175 }
7276
7377 async createMediaDbNote ( modal : ( ) => Promise < MediaTypeModel > ) : Promise < void > {
@@ -87,7 +91,7 @@ export default class MediaDbPlugin extends Plugin {
8791 console . log ( 'MDB | Creating new note...' ) ;
8892 // console.log(mediaTypeModel);
8993
90- let fileContent = `---\n${ mediaTypeModel . toMetaData ( ) } ---\n` ;
94+ let fileContent = `---\n${ YAMLConverter . toYaml ( this . modelPropertyMapper . convertObject ( mediaTypeModel . toMetaDataObject ( ) ) ) } ---\n` ;
9195
9296 if ( this . settings . templates ) {
9397 fileContent += await this . mediaTypeManager . getContent ( mediaTypeModel , this . app ) ;
@@ -96,6 +100,11 @@ export default class MediaDbPlugin extends Plugin {
96100 const fileName = replaceIllegalFileNameCharactersInString ( this . mediaTypeManager . getFileName ( mediaTypeModel ) ) ;
97101 const filePath = `${ this . settings . folder . replace ( / \/ $ / , '' ) } /${ fileName } .md` ;
98102
103+ const folder = this . app . vault . getAbstractFileByPath ( this . settings . folder ) ;
104+ if ( ! folder ) {
105+ await this . app . vault . createFolder ( this . settings . folder . replace ( / \/ $ / , '' ) ) ;
106+ }
107+
99108 const file = this . app . vault . getAbstractFileByPath ( filePath ) ;
100109 if ( file ) {
101110 await this . app . vault . delete ( file ) ;
@@ -144,13 +153,17 @@ export default class MediaDbPlugin extends Plugin {
144153 throw new Error ( 'MDB | there is no active note' ) ;
145154 }
146155
147- let metadata : FrontMatterCache = this . app . metadataCache . getFileCache ( activeFile ) . frontmatter ;
156+ let metadata : any = this . app . metadataCache . getFileCache ( activeFile ) . frontmatter ;
157+ delete metadata . position ; // remove unnecessary data from the FrontMatterCache
158+ metadata = this . modelPropertyMapper . convertObjectBack ( metadata ) ;
159+
160+ console . log ( metadata )
148161
149162 if ( ! metadata ?. type || ! metadata ?. dataSource || ! metadata ?. id ) {
150163 throw new Error ( 'MDB | active note is not a Media DB entry or is missing metadata' ) ;
151164 }
152165
153- delete metadata . position ; // remove unnecessary data from the FrontMatterCache
166+
154167 let oldMediaTypeModel = this . mediaTypeManager . createMediaTypeModelFromMediaType ( metadata , metadata . type ) ;
155168
156169 let newMediaTypeModel = await this . apiManager . queryDetailedInfoById ( metadata . id , metadata . dataSource ) ;
@@ -171,6 +184,8 @@ export default class MediaDbPlugin extends Plugin {
171184
172185 async saveSettings ( ) {
173186 this . mediaTypeManager . updateTemplates ( this . settings ) ;
187+ this . modelPropertyMapper . updateConversionRules ( this . settings ) ;
188+
174189 await this . saveData ( this . settings ) ;
175190 }
176191}
0 commit comments