From ccfb0fa9eecebc48b6ef4d538bb2b8519907f765 Mon Sep 17 00:00:00 2001 From: mProjectsCode Date: Sun, 16 Oct 2022 15:27:54 +0200 Subject: [PATCH 1/4] fix for #65 --- src/main.ts | 6 ++++++ src/models/BoardGameModel.ts | 8 ++++++-- src/models/GameModel.ts | 8 ++++++-- src/models/MovieModel.ts | 8 ++++++-- src/models/MusicReleaseModel.ts | 8 ++++++-- src/models/SeriesModel.ts | 8 ++++++-- src/models/WikiModel.ts | 8 ++++++-- src/settings/PropertyMapper.ts | 5 +---- src/utils/Utils.ts | 6 ++++++ 9 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/main.ts b/src/main.ts index 5f87f9f..24df6f5 100644 --- a/src/main.ts +++ b/src/main.ts @@ -377,8 +377,12 @@ export default class MediaDbPlugin extends Plugin { throw new Error('MDB | active note is not a Media DB entry or is missing metadata'); } + + let oldMediaTypeModel = this.mediaTypeManager.createMediaTypeModelFromMediaType(metadata, metadata.type); + // console.debug(oldMediaTypeModel); + let newMediaTypeModel = await this.apiManager.queryDetailedInfoById(metadata.id, metadata.dataSource); if (!newMediaTypeModel) { return; @@ -386,6 +390,8 @@ export default class MediaDbPlugin extends Plugin { newMediaTypeModel = Object.assign(oldMediaTypeModel, newMediaTypeModel.getWithOutUserData()); + // console.debug(newMediaTypeModel); + // deletion not happening anymore why is this log statement still here console.debug('MDB | deleting old entry'); if (onlyMetadata) { diff --git a/src/models/BoardGameModel.ts b/src/models/BoardGameModel.ts index bba4f17..17b0581 100644 --- a/src/models/BoardGameModel.ts +++ b/src/models/BoardGameModel.ts @@ -1,5 +1,5 @@ import {MediaTypeModel} from './MediaTypeModel'; -import {mediaDbTag} from '../utils/Utils'; +import {mediaDbTag, migrateObject} from '../utils/Utils'; import {MediaType} from '../utils/MediaType'; @@ -28,7 +28,11 @@ export class BoardGameModel extends MediaTypeModel { personalRating: undefined, }; - Object.assign(this, obj); + migrateObject(this, obj, this); + + if(!obj.hasOwnProperty('userData')) { + migrateObject(this.userData, obj, this.userData); + } this.type = this.getMediaType(); } diff --git a/src/models/GameModel.ts b/src/models/GameModel.ts index 86332f6..9ce7920 100644 --- a/src/models/GameModel.ts +++ b/src/models/GameModel.ts @@ -1,5 +1,5 @@ import {MediaTypeModel} from './MediaTypeModel'; -import {mediaDbTag} from '../utils/Utils'; +import {mediaDbTag, migrateObject} from '../utils/Utils'; import {MediaType} from '../utils/MediaType'; @@ -30,7 +30,11 @@ export class GameModel extends MediaTypeModel { personalRating: undefined, }; - Object.assign(this, obj); + migrateObject(this, obj, this); + + if(!obj.hasOwnProperty('userData')) { + migrateObject(this.userData, obj, this.userData); + } this.type = this.getMediaType(); } diff --git a/src/models/MovieModel.ts b/src/models/MovieModel.ts index 242a0c4..93c895c 100644 --- a/src/models/MovieModel.ts +++ b/src/models/MovieModel.ts @@ -1,5 +1,5 @@ import {MediaTypeModel} from './MediaTypeModel'; -import {mediaDbTag} from '../utils/Utils'; +import {mediaDbTag, migrateObject} from '../utils/Utils'; import {MediaType} from '../utils/MediaType'; @@ -35,7 +35,11 @@ export class MovieModel extends MediaTypeModel { personalRating: undefined, }; - Object.assign(this, obj); + migrateObject(this, obj, this); + + if(!obj.hasOwnProperty('userData')) { + migrateObject(this.userData, obj, this.userData); + } this.type = this.getMediaType(); } diff --git a/src/models/MusicReleaseModel.ts b/src/models/MusicReleaseModel.ts index babb602..1c2f221 100644 --- a/src/models/MusicReleaseModel.ts +++ b/src/models/MusicReleaseModel.ts @@ -1,5 +1,5 @@ import {MediaTypeModel} from './MediaTypeModel'; -import {mediaDbTag} from '../utils/Utils'; +import {mediaDbTag, migrateObject} from '../utils/Utils'; import {MediaType} from '../utils/MediaType'; @@ -31,7 +31,11 @@ export class MusicReleaseModel extends MediaTypeModel { personalRating: undefined, }; - Object.assign(this, obj); + migrateObject(this, obj, this); + + if(!obj.hasOwnProperty('userData')) { + migrateObject(this.userData, obj, this.userData); + } this.type = this.getMediaType(); } diff --git a/src/models/SeriesModel.ts b/src/models/SeriesModel.ts index 4fbeaba..a928710 100644 --- a/src/models/SeriesModel.ts +++ b/src/models/SeriesModel.ts @@ -1,5 +1,5 @@ import {MediaTypeModel} from './MediaTypeModel'; -import {mediaDbTag} from '../utils/Utils'; +import {mediaDbTag, migrateObject} from '../utils/Utils'; import {MediaType} from '../utils/MediaType'; @@ -50,7 +50,11 @@ export class SeriesModel extends MediaTypeModel { personalRating: undefined, }; - Object.assign(this, obj); + migrateObject(this, obj, this); + + if(!obj.hasOwnProperty('userData')) { + migrateObject(this.userData, obj, this.userData); + } this.type = this.getMediaType(); } diff --git a/src/models/WikiModel.ts b/src/models/WikiModel.ts index 54d756d..8e5f868 100644 --- a/src/models/WikiModel.ts +++ b/src/models/WikiModel.ts @@ -1,5 +1,5 @@ import {MediaTypeModel} from './MediaTypeModel'; -import {mediaDbTag} from '../utils/Utils'; +import {mediaDbTag, migrateObject} from '../utils/Utils'; import {MediaType} from '../utils/MediaType'; @@ -29,7 +29,11 @@ export class WikiModel extends MediaTypeModel { this.article = undefined; this.userData = {}; - Object.assign(this, obj); + migrateObject(this, obj, this); + + if(!obj.hasOwnProperty('userData')) { + migrateObject(this.userData, obj, this.userData); + } this.type = this.getMediaType(); } diff --git a/src/settings/PropertyMapper.ts b/src/settings/PropertyMapper.ts index a1e41a6..34cec39 100644 --- a/src/settings/PropertyMapper.ts +++ b/src/settings/PropertyMapper.ts @@ -22,17 +22,14 @@ export class PropertyMapper { return obj; } - console.log('test2'); // @ts-ignore - console.log(obj.type); + // console.log(obj.type); // @ts-ignore if (MEDIA_TYPES.filter(x => x.toString() == obj.type).length < 1) { return obj; } - console.log('test3'); - // @ts-ignore const propertyMappings = this.plugin.settings.propertyMappingModels.find(x => x.type === obj.type).properties; diff --git a/src/utils/Utils.ts b/src/utils/Utils.ts index 6708078..133f6d7 100644 --- a/src/utils/Utils.ts +++ b/src/utils/Utils.ts @@ -212,3 +212,9 @@ export interface CreateNoteOptions { attachFile?: TFile, openNote?: boolean, } + +export function migrateObject(object: T, oldData: any, defaultData: T): void { + for (const key in object) { + object[key] = oldData.hasOwnProperty(key) ? oldData[key] : defaultData[key]; + } +} From fdbba31d8460cbf189c3f81083aa3e32ff89f5cf Mon Sep 17 00:00:00 2001 From: mProjectsCode Date: Tue, 18 Oct 2022 11:20:04 +0200 Subject: [PATCH 2/4] fix for #66 --- src/models/MediaTypeModel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/MediaTypeModel.ts b/src/models/MediaTypeModel.ts index 75a749d..4652ea9 100644 --- a/src/models/MediaTypeModel.ts +++ b/src/models/MediaTypeModel.ts @@ -33,7 +33,7 @@ export abstract class MediaTypeModel { abstract getTags(): string[]; toMetaDataObject(): object { - return {...this.getWithOutUserData(), ...this.userData, tags: '#' + this.getTags().join('/')}; + return {...this.getWithOutUserData(), ...this.userData, tags: this.getTags().join('/')}; } getWithOutUserData(): object { From bdda8146aa75ab9a91063afe4e19a36f94826f05 Mon Sep 17 00:00:00 2001 From: mProjectsCode Date: Tue, 18 Oct 2022 11:38:22 +0200 Subject: [PATCH 3/4] fix for #67 --- src/main.ts | 28 +++++++++++--------------- src/modals/MediaDbSearchResultModal.ts | 1 - src/settings/PropertyMapper.ts | 2 -- src/utils/Utils.ts | 3 ++- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/main.ts b/src/main.ts index 24df6f5..280d308 100644 --- a/src/main.ts +++ b/src/main.ts @@ -232,7 +232,7 @@ export default class MediaDbPlugin extends Plugin { let fileContent = await this.generateMediaDbNoteContents(mediaTypeModel, options); - await this.createNote(this.mediaTypeManager.getFileName(mediaTypeModel), fileContent, options.openNote); + await this.createNote(this.mediaTypeManager.getFileName(mediaTypeModel), fileContent, options); } catch (e) { console.warn(e); new Notice(e.toString()); @@ -325,18 +325,18 @@ export default class MediaDbPlugin extends Plugin { * * @param fileName * @param fileContent - * @param openFile + * @param options */ - async createNote(fileName: string, fileContent: string, openFile: boolean = false) { - fileName = replaceIllegalFileNameCharactersInString(fileName); - const filePath = `${this.settings.folder.replace(/\/$/, '')}/${fileName}.md`; - - // find and possibly create the folder set in settings - const folder = this.app.vault.getAbstractFileByPath(this.settings.folder); + async createNote(fileName: string, fileContent: string, options: CreateNoteOptions) { + // find and possibly create the folder set in settings or passed in folder + const folder = options.folder ?? this.app.vault.getAbstractFileByPath(this.settings.folder); if (!folder) { - await this.app.vault.createFolder(this.settings.folder.replace(/\/$/, '')); + await this.app.vault.createFolder(folder.path); } + fileName = replaceIllegalFileNameCharactersInString(fileName); + const filePath = `${folder.path}/${fileName}.md`; + // find and delete file with the same name const file = this.app.vault.getAbstractFileByPath(filePath); if (file) { @@ -348,7 +348,7 @@ export default class MediaDbPlugin extends Plugin { console.debug(`MDB | created new file at ${filePath}`); // open newly crated file - if (openFile) { + if (options.openNote) { const activeLeaf = this.app.workspace.getUnpinnedLeaf(); if (!activeLeaf) { console.warn('MDB | no active leaf, not opening newly created note'); @@ -377,10 +377,7 @@ export default class MediaDbPlugin extends Plugin { throw new Error('MDB | active note is not a Media DB entry or is missing metadata'); } - - let oldMediaTypeModel = this.mediaTypeManager.createMediaTypeModelFromMediaType(metadata, metadata.type); - // console.debug(oldMediaTypeModel); let newMediaTypeModel = await this.apiManager.queryDetailedInfoById(metadata.id, metadata.dataSource); @@ -389,15 +386,14 @@ export default class MediaDbPlugin extends Plugin { } newMediaTypeModel = Object.assign(oldMediaTypeModel, newMediaTypeModel.getWithOutUserData()); - // console.debug(newMediaTypeModel); // deletion not happening anymore why is this log statement still here console.debug('MDB | deleting old entry'); if (onlyMetadata) { - await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachFile: activeFile, openNote: true}); + await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachFile: activeFile, folder: activeFile.parent, openNote: true}); } else { - await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachTemplate: true, openNote: true}); + await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachTemplate: true, folder: activeFile.parent, openNote: true}); } } diff --git a/src/modals/MediaDbSearchResultModal.ts b/src/modals/MediaDbSearchResultModal.ts index c44a91f..bce91ee 100644 --- a/src/modals/MediaDbSearchResultModal.ts +++ b/src/modals/MediaDbSearchResultModal.ts @@ -62,7 +62,6 @@ export class MediaDbSearchResultModal extends SelectModal { } onClose() { - console.log('close'); this.closeCallback(); } } diff --git a/src/settings/PropertyMapper.ts b/src/settings/PropertyMapper.ts index 34cec39..24f0419 100644 --- a/src/settings/PropertyMapper.ts +++ b/src/settings/PropertyMapper.ts @@ -16,8 +16,6 @@ export class PropertyMapper { * @param obj */ convertObject(obj: object): object { - console.log('test1'); - if (!obj.hasOwnProperty('type')) { return obj; } diff --git a/src/utils/Utils.ts b/src/utils/Utils.ts index 133f6d7..c99ddb1 100644 --- a/src/utils/Utils.ts +++ b/src/utils/Utils.ts @@ -1,5 +1,5 @@ import {MediaTypeModel} from '../models/MediaTypeModel'; -import {TFile} from 'obsidian'; +import {TFile, TFolder} from 'obsidian'; export const pluginName: string = 'obsidian-media-db-plugin'; @@ -211,6 +211,7 @@ export interface CreateNoteOptions { attachTemplate?: boolean, attachFile?: TFile, openNote?: boolean, + folder?: TFolder, } export function migrateObject(object: T, oldData: any, defaultData: T): void { From 752f13f8bf032b092b7fe65a52574d5ade824bb1 Mon Sep 17 00:00:00 2001 From: mProjectsCode Date: Tue, 18 Oct 2022 21:01:42 +0200 Subject: [PATCH 4/4] bump version + fix formatting --- manifest.json | 2 +- package.json | 2 +- src/modals/MediaDbPreviewModal.ts | 2 +- src/models/BoardGameModel.ts | 2 +- src/models/GameModel.ts | 2 +- src/models/MovieModel.ts | 2 +- src/models/MusicReleaseModel.ts | 2 +- src/models/SeriesModel.ts | 2 +- src/models/WikiModel.ts | 2 +- src/settings/PropertyMappingModelComponent.svelte | 11 +++++------ src/settings/PropertyMappingModelsComponent.svelte | 2 +- src/utils/Utils.ts | 2 +- 12 files changed, 16 insertions(+), 17 deletions(-) diff --git a/manifest.json b/manifest.json index 2bfb06f..9e5e796 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-media-db-plugin", "name": "Media DB Plugin", - "version": "0.4.0", + "version": "0.4.1", "minAppVersion": "0.14.0", "description": "A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your vault.", "author": "Moritz Jung", diff --git a/package.json b/package.json index 25bb79d..649dfc2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-media-db-plugin", - "version": "0.4.0", + "version": "0.4.1", "description": "A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your vault.", "main": "main.js", "scripts": { diff --git a/src/modals/MediaDbPreviewModal.ts b/src/modals/MediaDbPreviewModal.ts index ec20a28..ef69a8c 100644 --- a/src/modals/MediaDbPreviewModal.ts +++ b/src/modals/MediaDbPreviewModal.ts @@ -75,7 +75,7 @@ export class MediaDbPreviewModal extends Modal { onOpen(): void { this.preview(); } - + onClose(): void { this.closeCallback(); } diff --git a/src/models/BoardGameModel.ts b/src/models/BoardGameModel.ts index 17b0581..9d878a7 100644 --- a/src/models/BoardGameModel.ts +++ b/src/models/BoardGameModel.ts @@ -30,7 +30,7 @@ export class BoardGameModel extends MediaTypeModel { migrateObject(this, obj, this); - if(!obj.hasOwnProperty('userData')) { + if (!obj.hasOwnProperty('userData')) { migrateObject(this.userData, obj, this.userData); } diff --git a/src/models/GameModel.ts b/src/models/GameModel.ts index 9ce7920..d85e410 100644 --- a/src/models/GameModel.ts +++ b/src/models/GameModel.ts @@ -32,7 +32,7 @@ export class GameModel extends MediaTypeModel { migrateObject(this, obj, this); - if(!obj.hasOwnProperty('userData')) { + if (!obj.hasOwnProperty('userData')) { migrateObject(this.userData, obj, this.userData); } diff --git a/src/models/MovieModel.ts b/src/models/MovieModel.ts index 93c895c..dbfbedb 100644 --- a/src/models/MovieModel.ts +++ b/src/models/MovieModel.ts @@ -37,7 +37,7 @@ export class MovieModel extends MediaTypeModel { migrateObject(this, obj, this); - if(!obj.hasOwnProperty('userData')) { + if (!obj.hasOwnProperty('userData')) { migrateObject(this.userData, obj, this.userData); } diff --git a/src/models/MusicReleaseModel.ts b/src/models/MusicReleaseModel.ts index 1c2f221..329a9f6 100644 --- a/src/models/MusicReleaseModel.ts +++ b/src/models/MusicReleaseModel.ts @@ -33,7 +33,7 @@ export class MusicReleaseModel extends MediaTypeModel { migrateObject(this, obj, this); - if(!obj.hasOwnProperty('userData')) { + if (!obj.hasOwnProperty('userData')) { migrateObject(this.userData, obj, this.userData); } diff --git a/src/models/SeriesModel.ts b/src/models/SeriesModel.ts index a928710..8058d55 100644 --- a/src/models/SeriesModel.ts +++ b/src/models/SeriesModel.ts @@ -52,7 +52,7 @@ export class SeriesModel extends MediaTypeModel { migrateObject(this, obj, this); - if(!obj.hasOwnProperty('userData')) { + if (!obj.hasOwnProperty('userData')) { migrateObject(this.userData, obj, this.userData); } diff --git a/src/models/WikiModel.ts b/src/models/WikiModel.ts index 8e5f868..c83b8c2 100644 --- a/src/models/WikiModel.ts +++ b/src/models/WikiModel.ts @@ -31,7 +31,7 @@ export class WikiModel extends MediaTypeModel { migrateObject(this, obj, this); - if(!obj.hasOwnProperty('userData')) { + if (!obj.hasOwnProperty('userData')) { migrateObject(this.userData, obj, this.userData); } diff --git a/src/settings/PropertyMappingModelComponent.svelte b/src/settings/PropertyMappingModelComponent.svelte index 6fe5227..7e13b20 100644 --- a/src/settings/PropertyMappingModelComponent.svelte +++ b/src/settings/PropertyMappingModelComponent.svelte @@ -25,8 +25,7 @@ { #each model.properties as property }
-
{property.property}
+
{property.property}
{ #if property.locked }
@@ -46,16 +45,16 @@
- { /if } - { /if } + { /if } + { /if }
- { /each } + { /each }
{ #if !validationResult?.res }
{validationResult?.err?.message}
- { /if } + { /if }