Skip to content

Commit 7cadc7f

Browse files
committed
Merge branch 'master' into release
2 parents 94bcef0 + 752f13f commit 7cadc7f

16 files changed

+70
-44
lines changed

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"id": "obsidian-media-db-plugin",
33
"name": "Media DB Plugin",
4-
"version": "0.4.0",
4+
"version": "0.4.1",
55
"minAppVersion": "0.14.0",
66
"description": "A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your vault.",
77
"author": "Moritz Jung",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "obsidian-media-db-plugin",
3-
"version": "0.4.0",
3+
"version": "0.4.1",
44
"description": "A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your vault.",
55
"main": "main.js",
66
"scripts": {

src/main.ts

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ export default class MediaDbPlugin extends Plugin {
232232

233233
let fileContent = await this.generateMediaDbNoteContents(mediaTypeModel, options);
234234

235-
await this.createNote(this.mediaTypeManager.getFileName(mediaTypeModel), fileContent, options.openNote);
235+
await this.createNote(this.mediaTypeManager.getFileName(mediaTypeModel), fileContent, options);
236236
} catch (e) {
237237
console.warn(e);
238238
new Notice(e.toString());
@@ -325,18 +325,18 @@ export default class MediaDbPlugin extends Plugin {
325325
*
326326
* @param fileName
327327
* @param fileContent
328-
* @param openFile
328+
* @param options
329329
*/
330-
async createNote(fileName: string, fileContent: string, openFile: boolean = false) {
331-
fileName = replaceIllegalFileNameCharactersInString(fileName);
332-
const filePath = `${this.settings.folder.replace(/\/$/, '')}/${fileName}.md`;
333-
334-
// find and possibly create the folder set in settings
335-
const folder = this.app.vault.getAbstractFileByPath(this.settings.folder);
330+
async createNote(fileName: string, fileContent: string, options: CreateNoteOptions) {
331+
// find and possibly create the folder set in settings or passed in folder
332+
const folder = options.folder ?? this.app.vault.getAbstractFileByPath(this.settings.folder);
336333
if (!folder) {
337-
await this.app.vault.createFolder(this.settings.folder.replace(/\/$/, ''));
334+
await this.app.vault.createFolder(folder.path);
338335
}
339336

337+
fileName = replaceIllegalFileNameCharactersInString(fileName);
338+
const filePath = `${folder.path}/${fileName}.md`;
339+
340340
// find and delete file with the same name
341341
const file = this.app.vault.getAbstractFileByPath(filePath);
342342
if (file) {
@@ -348,7 +348,7 @@ export default class MediaDbPlugin extends Plugin {
348348
console.debug(`MDB | created new file at ${filePath}`);
349349

350350
// open newly crated file
351-
if (openFile) {
351+
if (options.openNote) {
352352
const activeLeaf = this.app.workspace.getUnpinnedLeaf();
353353
if (!activeLeaf) {
354354
console.warn('MDB | no active leaf, not opening newly created note');
@@ -378,20 +378,22 @@ export default class MediaDbPlugin extends Plugin {
378378
}
379379

380380
let oldMediaTypeModel = this.mediaTypeManager.createMediaTypeModelFromMediaType(metadata, metadata.type);
381+
// console.debug(oldMediaTypeModel);
381382

382383
let newMediaTypeModel = await this.apiManager.queryDetailedInfoById(metadata.id, metadata.dataSource);
383384
if (!newMediaTypeModel) {
384385
return;
385386
}
386387

387388
newMediaTypeModel = Object.assign(oldMediaTypeModel, newMediaTypeModel.getWithOutUserData());
389+
// console.debug(newMediaTypeModel);
388390

389391
// deletion not happening anymore why is this log statement still here
390392
console.debug('MDB | deleting old entry');
391393
if (onlyMetadata) {
392-
await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachFile: activeFile, openNote: true});
394+
await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachFile: activeFile, folder: activeFile.parent, openNote: true});
393395
} else {
394-
await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachTemplate: true, openNote: true});
396+
await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachTemplate: true, folder: activeFile.parent, openNote: true});
395397
}
396398

397399
}

src/modals/MediaDbPreviewModal.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export class MediaDbPreviewModal extends Modal {
7575
onOpen(): void {
7676
this.preview();
7777
}
78-
78+
7979
onClose(): void {
8080
this.closeCallback();
8181
}

src/modals/MediaDbSearchResultModal.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ export class MediaDbSearchResultModal extends SelectModal<MediaTypeModel> {
6262
}
6363

6464
onClose() {
65-
console.log('close');
6665
this.closeCallback();
6766
}
6867
}

src/models/BoardGameModel.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {MediaTypeModel} from './MediaTypeModel';
2-
import {mediaDbTag} from '../utils/Utils';
2+
import {mediaDbTag, migrateObject} from '../utils/Utils';
33
import {MediaType} from '../utils/MediaType';
44

55

@@ -28,7 +28,11 @@ export class BoardGameModel extends MediaTypeModel {
2828
personalRating: undefined,
2929
};
3030

31-
Object.assign(this, obj);
31+
migrateObject(this, obj, this);
32+
33+
if (!obj.hasOwnProperty('userData')) {
34+
migrateObject(this.userData, obj, this.userData);
35+
}
3236

3337
this.type = this.getMediaType();
3438
}

src/models/GameModel.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {MediaTypeModel} from './MediaTypeModel';
2-
import {mediaDbTag} from '../utils/Utils';
2+
import {mediaDbTag, migrateObject} from '../utils/Utils';
33
import {MediaType} from '../utils/MediaType';
44

55

@@ -30,7 +30,11 @@ export class GameModel extends MediaTypeModel {
3030
personalRating: undefined,
3131
};
3232

33-
Object.assign(this, obj);
33+
migrateObject(this, obj, this);
34+
35+
if (!obj.hasOwnProperty('userData')) {
36+
migrateObject(this.userData, obj, this.userData);
37+
}
3438

3539
this.type = this.getMediaType();
3640
}

src/models/MediaTypeModel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export abstract class MediaTypeModel {
3333
abstract getTags(): string[];
3434

3535
toMetaDataObject(): object {
36-
return {...this.getWithOutUserData(), ...this.userData, tags: '#' + this.getTags().join('/')};
36+
return {...this.getWithOutUserData(), ...this.userData, tags: this.getTags().join('/')};
3737
}
3838

3939
getWithOutUserData(): object {

src/models/MovieModel.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {MediaTypeModel} from './MediaTypeModel';
2-
import {mediaDbTag} from '../utils/Utils';
2+
import {mediaDbTag, migrateObject} from '../utils/Utils';
33
import {MediaType} from '../utils/MediaType';
44

55

@@ -35,7 +35,11 @@ export class MovieModel extends MediaTypeModel {
3535
personalRating: undefined,
3636
};
3737

38-
Object.assign(this, obj);
38+
migrateObject(this, obj, this);
39+
40+
if (!obj.hasOwnProperty('userData')) {
41+
migrateObject(this.userData, obj, this.userData);
42+
}
3943

4044
this.type = this.getMediaType();
4145
}

src/models/MusicReleaseModel.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {MediaTypeModel} from './MediaTypeModel';
2-
import {mediaDbTag} from '../utils/Utils';
2+
import {mediaDbTag, migrateObject} from '../utils/Utils';
33
import {MediaType} from '../utils/MediaType';
44

55

@@ -31,7 +31,11 @@ export class MusicReleaseModel extends MediaTypeModel {
3131
personalRating: undefined,
3232
};
3333

34-
Object.assign(this, obj);
34+
migrateObject(this, obj, this);
35+
36+
if (!obj.hasOwnProperty('userData')) {
37+
migrateObject(this.userData, obj, this.userData);
38+
}
3539

3640
this.type = this.getMediaType();
3741
}

src/models/SeriesModel.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {MediaTypeModel} from './MediaTypeModel';
2-
import {mediaDbTag} from '../utils/Utils';
2+
import {mediaDbTag, migrateObject} from '../utils/Utils';
33
import {MediaType} from '../utils/MediaType';
44

55

@@ -50,7 +50,11 @@ export class SeriesModel extends MediaTypeModel {
5050
personalRating: undefined,
5151
};
5252

53-
Object.assign(this, obj);
53+
migrateObject(this, obj, this);
54+
55+
if (!obj.hasOwnProperty('userData')) {
56+
migrateObject(this.userData, obj, this.userData);
57+
}
5458

5559
this.type = this.getMediaType();
5660
}

src/models/WikiModel.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {MediaTypeModel} from './MediaTypeModel';
2-
import {mediaDbTag} from '../utils/Utils';
2+
import {mediaDbTag, migrateObject} from '../utils/Utils';
33
import {MediaType} from '../utils/MediaType';
44

55

@@ -29,7 +29,11 @@ export class WikiModel extends MediaTypeModel {
2929
this.article = undefined;
3030
this.userData = {};
3131

32-
Object.assign(this, obj);
32+
migrateObject(this, obj, this);
33+
34+
if (!obj.hasOwnProperty('userData')) {
35+
migrateObject(this.userData, obj, this.userData);
36+
}
3337

3438
this.type = this.getMediaType();
3539
}

src/settings/PropertyMapper.ts

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,18 @@ export class PropertyMapper {
1616
* @param obj
1717
*/
1818
convertObject(obj: object): object {
19-
console.log('test1');
20-
2119
if (!obj.hasOwnProperty('type')) {
2220
return obj;
2321
}
2422

25-
console.log('test2');
2623
// @ts-ignore
27-
console.log(obj.type);
24+
// console.log(obj.type);
2825

2926
// @ts-ignore
3027
if (MEDIA_TYPES.filter(x => x.toString() == obj.type).length < 1) {
3128
return obj;
3229
}
3330

34-
console.log('test3');
35-
3631
// @ts-ignore
3732
const propertyMappings = this.plugin.settings.propertyMappingModels.find(x => x.type === obj.type).properties;
3833

src/settings/PropertyMappingModelComponent.svelte

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@
2525
{ #each model.properties as property }
2626
<div class="media-db-plugin-property-mapping-element">
2727
<div class="media-db-plugin-property-mapping-element-property-name-wrapper">
28-
<pre
29-
class="media-db-plugin-property-mapping-element-property-name"><code>{property.property}</code></pre>
28+
<pre class="media-db-plugin-property-mapping-element-property-name"><code>{property.property}</code></pre>
3029
</div>
3130
{ #if property.locked }
3231
<div class="media-db-plugin-property-binding-text">
@@ -46,16 +45,16 @@
4645
<div class="media-db-plugin-property-mapping-to">
4746
<input type="text" spellcheck="false" bind:value="{property.newProperty}">
4847
</div>
49-
{ /if }
50-
{ /if }
48+
{ /if }
49+
{ /if }
5150
</div>
52-
{ /each }
51+
{ /each }
5352
</div>
5453
{ #if !validationResult?.res }
5554
<div class="media-db-plugin-property-mapping-validation">
5655
{validationResult?.err?.message}
5756
</div>
58-
{ /if }
57+
{ /if }
5958
<button
6059
class="media-db-plugin-property-mappings-save-button {validationResult?.res ? 'mod-cta' : 'mod-muted'}"
6160
on:click={() => { if(model.validate().res) save(model) }}>Save

src/settings/PropertyMappingModelsComponent.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<div class="setting-item" style="display: flex; gap: 10px; flex-direction: column; align-items: stretch;">
1414
{ #each models as model }
1515
<PropertyMappingModelComponent model={model} save={save}></PropertyMappingModelComponent>
16-
{ /each }
16+
{ /each }
1717

1818
<!--
1919
<pre>{JSON.stringify(models, null, 4)}</pre>

src/utils/Utils.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import {MediaTypeModel} from '../models/MediaTypeModel';
2-
import {TFile} from 'obsidian';
2+
import {TFile, TFolder} from 'obsidian';
33

44

55
export const pluginName: string = 'obsidian-media-db-plugin';
66
export const contactEmail: string = '[email protected]';
77
export const mediaDbTag: string = 'mediaDB';
8-
export const mediaDbVersion: string = '0.4.0';
8+
export const mediaDbVersion: string = '0.4.1';
99
export const debug: boolean = true;
1010

1111
export function wrapAround(value: number, size: number): number {
@@ -211,4 +211,11 @@ export interface CreateNoteOptions {
211211
attachTemplate?: boolean,
212212
attachFile?: TFile,
213213
openNote?: boolean,
214+
folder?: TFolder,
215+
}
216+
217+
export function migrateObject<T extends object>(object: T, oldData: any, defaultData: T): void {
218+
for (const key in object) {
219+
object[key] = oldData.hasOwnProperty(key) ? oldData[key] : defaultData[key];
220+
}
214221
}

0 commit comments

Comments
 (0)