From ccfb0fa9eecebc48b6ef4d538bb2b8519907f765 Mon Sep 17 00:00:00 2001 From: mProjectsCode Date: Sun, 16 Oct 2022 15:27:54 +0200 Subject: [PATCH] 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]; + } +}