Meta data field customization #19

This commit is contained in:
mProjectsCode 2022-06-07 10:38:51 +02:00
parent b4e40d2daa
commit 78ee146b71
8 changed files with 247 additions and 11 deletions

View file

@ -12,11 +12,14 @@ import {WikipediaAPI} from './api/apis/WikipediaAPI';
import {MusicBrainzAPI} from './api/apis/MusicBrainzAPI';
import {MediaTypeManager} from './utils/MediaTypeManager';
import {SteamAPI} from './api/apis/SteamAPI';
import {ModelPropertyMapper} from './settings/ModelPropertyMapper';
import {YAMLConverter} from './utils/YAMLConverter';
export default class MediaDbPlugin extends Plugin {
settings: MediaDbPluginSettings;
apiManager: APIManager;
mediaTypeManager: MediaTypeManager;
modelPropertyMapper: ModelPropertyMapper;
async onload() {
await this.loadSettings();
@ -68,6 +71,7 @@ export default class MediaDbPlugin extends Plugin {
// this.apiManager.registerAPI(new LocGovAPI(this)); // TODO: parse data
this.mediaTypeManager = new MediaTypeManager(this.settings);
this.modelPropertyMapper = new ModelPropertyMapper(this.settings);
}
async createMediaDbNote(modal: () => Promise<MediaTypeModel>): Promise<void> {
@ -87,7 +91,7 @@ export default class MediaDbPlugin extends Plugin {
console.log('MDB | Creating new note...');
// console.log(mediaTypeModel);
let fileContent = `---\n${mediaTypeModel.toMetaData()}---\n`;
let fileContent = `---\n${YAMLConverter.toYaml(this.modelPropertyMapper.convertObject(mediaTypeModel.toMetaDataObject()))}---\n`;
if (this.settings.templates) {
fileContent += await this.mediaTypeManager.getContent(mediaTypeModel, this.app);
@ -144,13 +148,17 @@ export default class MediaDbPlugin extends Plugin {
throw new Error('MDB | there is no active note');
}
let metadata: FrontMatterCache = this.app.metadataCache.getFileCache(activeFile).frontmatter;
let metadata: any = this.app.metadataCache.getFileCache(activeFile).frontmatter;
delete metadata.position; // remove unnecessary data from the FrontMatterCache
metadata = this.modelPropertyMapper.convertObjectBack(metadata);
console.log(metadata)
if (!metadata?.type || !metadata?.dataSource || !metadata?.id) {
throw new Error('MDB | active note is not a Media DB entry or is missing metadata');
}
delete metadata.position; // remove unnecessary data from the FrontMatterCache
let oldMediaTypeModel = this.mediaTypeManager.createMediaTypeModelFromMediaType(metadata, metadata.type);
let newMediaTypeModel = await this.apiManager.queryDetailedInfoById(metadata.id, metadata.dataSource);
@ -171,6 +179,8 @@ export default class MediaDbPlugin extends Plugin {
async saveSettings() {
this.mediaTypeManager.updateTemplates(this.settings);
this.modelPropertyMapper.updateConversionRules(this.settings);
await this.saveData(this.settings);
}
}