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/main.ts b/src/main.ts index 5f87f9f..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'); @@ -378,6 +378,7 @@ export default class MediaDbPlugin extends Plugin { } let oldMediaTypeModel = this.mediaTypeManager.createMediaTypeModelFromMediaType(metadata, metadata.type); + // console.debug(oldMediaTypeModel); let newMediaTypeModel = await this.apiManager.queryDetailedInfoById(metadata.id, metadata.dataSource); if (!newMediaTypeModel) { @@ -385,13 +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/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/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/models/BoardGameModel.ts b/src/models/BoardGameModel.ts index bba4f17..9d878a7 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..d85e410 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/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 { diff --git a/src/models/MovieModel.ts b/src/models/MovieModel.ts index 242a0c4..dbfbedb 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..329a9f6 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..8058d55 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..c83b8c2 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..24f0419 100644 --- a/src/settings/PropertyMapper.ts +++ b/src/settings/PropertyMapper.ts @@ -16,23 +16,18 @@ export class PropertyMapper { * @param obj */ convertObject(obj: object): object { - console.log('test1'); - if (!obj.hasOwnProperty('type')) { 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/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 }