Skip to content

Commit

Permalink
Merge branch 'master' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
mProjectsCode committed Oct 18, 2022
2 parents 94bcef0 + 752f13f commit 7cadc7f
Show file tree
Hide file tree
Showing 16 changed files with 70 additions and 44 deletions.
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
26 changes: 14 additions & 12 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down Expand Up @@ -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) {
Expand All @@ -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');
Expand Down Expand Up @@ -378,20 +378,22 @@ 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) {
return;
}

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});
}

}
Expand Down
2 changes: 1 addition & 1 deletion src/modals/MediaDbPreviewModal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ export class MediaDbPreviewModal extends Modal {
onOpen(): void {
this.preview();
}

onClose(): void {
this.closeCallback();
}
Expand Down
1 change: 0 additions & 1 deletion src/modals/MediaDbSearchResultModal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ export class MediaDbSearchResultModal extends SelectModal<MediaTypeModel> {
}

onClose() {
console.log('close');
this.closeCallback();
}
}
8 changes: 6 additions & 2 deletions src/models/BoardGameModel.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {MediaTypeModel} from './MediaTypeModel';
import {mediaDbTag} from '../utils/Utils';
import {mediaDbTag, migrateObject} from '../utils/Utils';
import {MediaType} from '../utils/MediaType';


Expand Down Expand Up @@ -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();
}
Expand Down
8 changes: 6 additions & 2 deletions src/models/GameModel.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {MediaTypeModel} from './MediaTypeModel';
import {mediaDbTag} from '../utils/Utils';
import {mediaDbTag, migrateObject} from '../utils/Utils';
import {MediaType} from '../utils/MediaType';


Expand Down Expand Up @@ -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();
}
Expand Down
2 changes: 1 addition & 1 deletion src/models/MediaTypeModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
8 changes: 6 additions & 2 deletions src/models/MovieModel.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {MediaTypeModel} from './MediaTypeModel';
import {mediaDbTag} from '../utils/Utils';
import {mediaDbTag, migrateObject} from '../utils/Utils';
import {MediaType} from '../utils/MediaType';


Expand Down Expand Up @@ -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();
}
Expand Down
8 changes: 6 additions & 2 deletions src/models/MusicReleaseModel.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {MediaTypeModel} from './MediaTypeModel';
import {mediaDbTag} from '../utils/Utils';
import {mediaDbTag, migrateObject} from '../utils/Utils';
import {MediaType} from '../utils/MediaType';


Expand Down Expand Up @@ -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();
}
Expand Down
8 changes: 6 additions & 2 deletions src/models/SeriesModel.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {MediaTypeModel} from './MediaTypeModel';
import {mediaDbTag} from '../utils/Utils';
import {mediaDbTag, migrateObject} from '../utils/Utils';
import {MediaType} from '../utils/MediaType';


Expand Down Expand Up @@ -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();
}
Expand Down
8 changes: 6 additions & 2 deletions src/models/WikiModel.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {MediaTypeModel} from './MediaTypeModel';
import {mediaDbTag} from '../utils/Utils';
import {mediaDbTag, migrateObject} from '../utils/Utils';
import {MediaType} from '../utils/MediaType';


Expand Down Expand Up @@ -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();
}
Expand Down
7 changes: 1 addition & 6 deletions src/settings/PropertyMapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
11 changes: 5 additions & 6 deletions src/settings/PropertyMappingModelComponent.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@
{ #each model.properties as property }
<div class="media-db-plugin-property-mapping-element">
<div class="media-db-plugin-property-mapping-element-property-name-wrapper">
<pre
class="media-db-plugin-property-mapping-element-property-name"><code>{property.property}</code></pre>
<pre class="media-db-plugin-property-mapping-element-property-name"><code>{property.property}</code></pre>
</div>
{ #if property.locked }
<div class="media-db-plugin-property-binding-text">
Expand All @@ -46,16 +45,16 @@
<div class="media-db-plugin-property-mapping-to">
<input type="text" spellcheck="false" bind:value="{property.newProperty}">
</div>
{ /if }
{ /if }
{ /if }
{ /if }
</div>
{ /each }
{ /each }
</div>
{ #if !validationResult?.res }
<div class="media-db-plugin-property-mapping-validation">
{validationResult?.err?.message}
</div>
{ /if }
{ /if }
<button
class="media-db-plugin-property-mappings-save-button {validationResult?.res ? 'mod-cta' : 'mod-muted'}"
on:click={() => { if(model.validate().res) save(model) }}>Save
Expand Down
2 changes: 1 addition & 1 deletion src/settings/PropertyMappingModelsComponent.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<div class="setting-item" style="display: flex; gap: 10px; flex-direction: column; align-items: stretch;">
{ #each models as model }
<PropertyMappingModelComponent model={model} save={save}></PropertyMappingModelComponent>
{ /each }
{ /each }

<!--
<pre>{JSON.stringify(models, null, 4)}</pre>
Expand Down
11 changes: 9 additions & 2 deletions src/utils/Utils.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import {MediaTypeModel} from '../models/MediaTypeModel';
import {TFile} from 'obsidian';
import {TFile, TFolder} from 'obsidian';


export const pluginName: string = 'obsidian-media-db-plugin';
export const contactEmail: string = '[email protected]';
export const mediaDbTag: string = 'mediaDB';
export const mediaDbVersion: string = '0.4.0';
export const mediaDbVersion: string = '0.4.1';
export const debug: boolean = true;

export function wrapAround(value: number, size: number): number {
Expand Down Expand Up @@ -211,4 +211,11 @@ export interface CreateNoteOptions {
attachTemplate?: boolean,
attachFile?: TFile,
openNote?: boolean,
folder?: TFolder,
}

export function migrateObject<T extends object>(object: T, oldData: any, defaultData: T): void {
for (const key in object) {
object[key] = oldData.hasOwnProperty(key) ? oldData[key] : defaultData[key];
}
}

0 comments on commit 7cadc7f

Please sign in to comment.