Merge branch 'master' into release
This commit is contained in:
commit
7cadc7f1eb
16 changed files with 70 additions and 44 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "obsidian-media-db-plugin",
|
"id": "obsidian-media-db-plugin",
|
||||||
"name": "Media DB Plugin",
|
"name": "Media DB Plugin",
|
||||||
"version": "0.4.0",
|
"version": "0.4.1",
|
||||||
"minAppVersion": "0.14.0",
|
"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.",
|
"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",
|
"author": "Moritz Jung",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "obsidian-media-db-plugin",
|
"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.",
|
"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",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
||||||
26
src/main.ts
26
src/main.ts
|
|
@ -232,7 +232,7 @@ export default class MediaDbPlugin extends Plugin {
|
||||||
|
|
||||||
let fileContent = await this.generateMediaDbNoteContents(mediaTypeModel, options);
|
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) {
|
} catch (e) {
|
||||||
console.warn(e);
|
console.warn(e);
|
||||||
new Notice(e.toString());
|
new Notice(e.toString());
|
||||||
|
|
@ -325,18 +325,18 @@ export default class MediaDbPlugin extends Plugin {
|
||||||
*
|
*
|
||||||
* @param fileName
|
* @param fileName
|
||||||
* @param fileContent
|
* @param fileContent
|
||||||
* @param openFile
|
* @param options
|
||||||
*/
|
*/
|
||||||
async createNote(fileName: string, fileContent: string, openFile: boolean = false) {
|
async createNote(fileName: string, fileContent: string, options: CreateNoteOptions) {
|
||||||
fileName = replaceIllegalFileNameCharactersInString(fileName);
|
// find and possibly create the folder set in settings or passed in folder
|
||||||
const filePath = `${this.settings.folder.replace(/\/$/, '')}/${fileName}.md`;
|
const folder = options.folder ?? this.app.vault.getAbstractFileByPath(this.settings.folder);
|
||||||
|
|
||||||
// find and possibly create the folder set in settings
|
|
||||||
const folder = this.app.vault.getAbstractFileByPath(this.settings.folder);
|
|
||||||
if (!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
|
// find and delete file with the same name
|
||||||
const file = this.app.vault.getAbstractFileByPath(filePath);
|
const file = this.app.vault.getAbstractFileByPath(filePath);
|
||||||
if (file) {
|
if (file) {
|
||||||
|
|
@ -348,7 +348,7 @@ export default class MediaDbPlugin extends Plugin {
|
||||||
console.debug(`MDB | created new file at ${filePath}`);
|
console.debug(`MDB | created new file at ${filePath}`);
|
||||||
|
|
||||||
// open newly crated file
|
// open newly crated file
|
||||||
if (openFile) {
|
if (options.openNote) {
|
||||||
const activeLeaf = this.app.workspace.getUnpinnedLeaf();
|
const activeLeaf = this.app.workspace.getUnpinnedLeaf();
|
||||||
if (!activeLeaf) {
|
if (!activeLeaf) {
|
||||||
console.warn('MDB | no active leaf, not opening newly created note');
|
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);
|
let oldMediaTypeModel = this.mediaTypeManager.createMediaTypeModelFromMediaType(metadata, metadata.type);
|
||||||
|
// console.debug(oldMediaTypeModel);
|
||||||
|
|
||||||
let newMediaTypeModel = await this.apiManager.queryDetailedInfoById(metadata.id, metadata.dataSource);
|
let newMediaTypeModel = await this.apiManager.queryDetailedInfoById(metadata.id, metadata.dataSource);
|
||||||
if (!newMediaTypeModel) {
|
if (!newMediaTypeModel) {
|
||||||
|
|
@ -385,13 +386,14 @@ export default class MediaDbPlugin extends Plugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
newMediaTypeModel = Object.assign(oldMediaTypeModel, newMediaTypeModel.getWithOutUserData());
|
newMediaTypeModel = Object.assign(oldMediaTypeModel, newMediaTypeModel.getWithOutUserData());
|
||||||
|
// console.debug(newMediaTypeModel);
|
||||||
|
|
||||||
// deletion not happening anymore why is this log statement still here
|
// deletion not happening anymore why is this log statement still here
|
||||||
console.debug('MDB | deleting old entry');
|
console.debug('MDB | deleting old entry');
|
||||||
if (onlyMetadata) {
|
if (onlyMetadata) {
|
||||||
await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachFile: activeFile, openNote: true});
|
await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachFile: activeFile, folder: activeFile.parent, openNote: true});
|
||||||
} else {
|
} else {
|
||||||
await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachTemplate: true, openNote: true});
|
await this.createMediaDbNoteFromModel(newMediaTypeModel, {attachTemplate: true, folder: activeFile.parent, openNote: true});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,6 @@ export class MediaDbSearchResultModal extends SelectModal<MediaTypeModel> {
|
||||||
}
|
}
|
||||||
|
|
||||||
onClose() {
|
onClose() {
|
||||||
console.log('close');
|
|
||||||
this.closeCallback();
|
this.closeCallback();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import {MediaTypeModel} from './MediaTypeModel';
|
import {MediaTypeModel} from './MediaTypeModel';
|
||||||
import {mediaDbTag} from '../utils/Utils';
|
import {mediaDbTag, migrateObject} from '../utils/Utils';
|
||||||
import {MediaType} from '../utils/MediaType';
|
import {MediaType} from '../utils/MediaType';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -28,7 +28,11 @@ export class BoardGameModel extends MediaTypeModel {
|
||||||
personalRating: undefined,
|
personalRating: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.assign(this, obj);
|
migrateObject(this, obj, this);
|
||||||
|
|
||||||
|
if (!obj.hasOwnProperty('userData')) {
|
||||||
|
migrateObject(this.userData, obj, this.userData);
|
||||||
|
}
|
||||||
|
|
||||||
this.type = this.getMediaType();
|
this.type = this.getMediaType();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import {MediaTypeModel} from './MediaTypeModel';
|
import {MediaTypeModel} from './MediaTypeModel';
|
||||||
import {mediaDbTag} from '../utils/Utils';
|
import {mediaDbTag, migrateObject} from '../utils/Utils';
|
||||||
import {MediaType} from '../utils/MediaType';
|
import {MediaType} from '../utils/MediaType';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -30,7 +30,11 @@ export class GameModel extends MediaTypeModel {
|
||||||
personalRating: undefined,
|
personalRating: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.assign(this, obj);
|
migrateObject(this, obj, this);
|
||||||
|
|
||||||
|
if (!obj.hasOwnProperty('userData')) {
|
||||||
|
migrateObject(this.userData, obj, this.userData);
|
||||||
|
}
|
||||||
|
|
||||||
this.type = this.getMediaType();
|
this.type = this.getMediaType();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ export abstract class MediaTypeModel {
|
||||||
abstract getTags(): string[];
|
abstract getTags(): string[];
|
||||||
|
|
||||||
toMetaDataObject(): object {
|
toMetaDataObject(): object {
|
||||||
return {...this.getWithOutUserData(), ...this.userData, tags: '#' + this.getTags().join('/')};
|
return {...this.getWithOutUserData(), ...this.userData, tags: this.getTags().join('/')};
|
||||||
}
|
}
|
||||||
|
|
||||||
getWithOutUserData(): object {
|
getWithOutUserData(): object {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import {MediaTypeModel} from './MediaTypeModel';
|
import {MediaTypeModel} from './MediaTypeModel';
|
||||||
import {mediaDbTag} from '../utils/Utils';
|
import {mediaDbTag, migrateObject} from '../utils/Utils';
|
||||||
import {MediaType} from '../utils/MediaType';
|
import {MediaType} from '../utils/MediaType';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -35,7 +35,11 @@ export class MovieModel extends MediaTypeModel {
|
||||||
personalRating: undefined,
|
personalRating: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.assign(this, obj);
|
migrateObject(this, obj, this);
|
||||||
|
|
||||||
|
if (!obj.hasOwnProperty('userData')) {
|
||||||
|
migrateObject(this.userData, obj, this.userData);
|
||||||
|
}
|
||||||
|
|
||||||
this.type = this.getMediaType();
|
this.type = this.getMediaType();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import {MediaTypeModel} from './MediaTypeModel';
|
import {MediaTypeModel} from './MediaTypeModel';
|
||||||
import {mediaDbTag} from '../utils/Utils';
|
import {mediaDbTag, migrateObject} from '../utils/Utils';
|
||||||
import {MediaType} from '../utils/MediaType';
|
import {MediaType} from '../utils/MediaType';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -31,7 +31,11 @@ export class MusicReleaseModel extends MediaTypeModel {
|
||||||
personalRating: undefined,
|
personalRating: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.assign(this, obj);
|
migrateObject(this, obj, this);
|
||||||
|
|
||||||
|
if (!obj.hasOwnProperty('userData')) {
|
||||||
|
migrateObject(this.userData, obj, this.userData);
|
||||||
|
}
|
||||||
|
|
||||||
this.type = this.getMediaType();
|
this.type = this.getMediaType();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import {MediaTypeModel} from './MediaTypeModel';
|
import {MediaTypeModel} from './MediaTypeModel';
|
||||||
import {mediaDbTag} from '../utils/Utils';
|
import {mediaDbTag, migrateObject} from '../utils/Utils';
|
||||||
import {MediaType} from '../utils/MediaType';
|
import {MediaType} from '../utils/MediaType';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -50,7 +50,11 @@ export class SeriesModel extends MediaTypeModel {
|
||||||
personalRating: undefined,
|
personalRating: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.assign(this, obj);
|
migrateObject(this, obj, this);
|
||||||
|
|
||||||
|
if (!obj.hasOwnProperty('userData')) {
|
||||||
|
migrateObject(this.userData, obj, this.userData);
|
||||||
|
}
|
||||||
|
|
||||||
this.type = this.getMediaType();
|
this.type = this.getMediaType();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import {MediaTypeModel} from './MediaTypeModel';
|
import {MediaTypeModel} from './MediaTypeModel';
|
||||||
import {mediaDbTag} from '../utils/Utils';
|
import {mediaDbTag, migrateObject} from '../utils/Utils';
|
||||||
import {MediaType} from '../utils/MediaType';
|
import {MediaType} from '../utils/MediaType';
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -29,7 +29,11 @@ export class WikiModel extends MediaTypeModel {
|
||||||
this.article = undefined;
|
this.article = undefined;
|
||||||
this.userData = {};
|
this.userData = {};
|
||||||
|
|
||||||
Object.assign(this, obj);
|
migrateObject(this, obj, this);
|
||||||
|
|
||||||
|
if (!obj.hasOwnProperty('userData')) {
|
||||||
|
migrateObject(this.userData, obj, this.userData);
|
||||||
|
}
|
||||||
|
|
||||||
this.type = this.getMediaType();
|
this.type = this.getMediaType();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,23 +16,18 @@ export class PropertyMapper {
|
||||||
* @param obj
|
* @param obj
|
||||||
*/
|
*/
|
||||||
convertObject(obj: object): object {
|
convertObject(obj: object): object {
|
||||||
console.log('test1');
|
|
||||||
|
|
||||||
if (!obj.hasOwnProperty('type')) {
|
if (!obj.hasOwnProperty('type')) {
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('test2');
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
console.log(obj.type);
|
// console.log(obj.type);
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
if (MEDIA_TYPES.filter(x => x.toString() == obj.type).length < 1) {
|
if (MEDIA_TYPES.filter(x => x.toString() == obj.type).length < 1) {
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('test3');
|
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const propertyMappings = this.plugin.settings.propertyMappingModels.find(x => x.type === obj.type).properties;
|
const propertyMappings = this.plugin.settings.propertyMappingModels.find(x => x.type === obj.type).properties;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,8 +25,7 @@
|
||||||
{ #each model.properties as property }
|
{ #each model.properties as property }
|
||||||
<div class="media-db-plugin-property-mapping-element">
|
<div class="media-db-plugin-property-mapping-element">
|
||||||
<div class="media-db-plugin-property-mapping-element-property-name-wrapper">
|
<div class="media-db-plugin-property-mapping-element-property-name-wrapper">
|
||||||
<pre
|
<pre class="media-db-plugin-property-mapping-element-property-name"><code>{property.property}</code></pre>
|
||||||
class="media-db-plugin-property-mapping-element-property-name"><code>{property.property}</code></pre>
|
|
||||||
</div>
|
</div>
|
||||||
{ #if property.locked }
|
{ #if property.locked }
|
||||||
<div class="media-db-plugin-property-binding-text">
|
<div class="media-db-plugin-property-binding-text">
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import {MediaTypeModel} from '../models/MediaTypeModel';
|
import {MediaTypeModel} from '../models/MediaTypeModel';
|
||||||
import {TFile} from 'obsidian';
|
import {TFile, TFolder} from 'obsidian';
|
||||||
|
|
||||||
|
|
||||||
export const pluginName: string = 'obsidian-media-db-plugin';
|
export const pluginName: string = 'obsidian-media-db-plugin';
|
||||||
export const contactEmail: string = 'm.projects.code@gmail.com';
|
export const contactEmail: string = 'm.projects.code@gmail.com';
|
||||||
export const mediaDbTag: string = 'mediaDB';
|
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 const debug: boolean = true;
|
||||||
|
|
||||||
export function wrapAround(value: number, size: number): number {
|
export function wrapAround(value: number, size: number): number {
|
||||||
|
|
@ -211,4 +211,11 @@ export interface CreateNoteOptions {
|
||||||
attachTemplate?: boolean,
|
attachTemplate?: boolean,
|
||||||
attachFile?: TFile,
|
attachFile?: TFile,
|
||||||
openNote?: boolean,
|
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];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue