WIP api selection

I'm close but I don't now how to get the MediaType that the plugin called
This commit is contained in:
ltctceplrm 2024-01-30 17:07:15 +01:00
parent ca7658b6d5
commit 436f98c5bc
3 changed files with 39 additions and 34 deletions

View file

@ -1,10 +1,14 @@
import { APIModel } from './APIModel'; import { APIModel } from './APIModel';
import { MediaTypeModel } from '../models/MediaTypeModel'; import { MediaTypeModel } from '../models/MediaTypeModel';
import MediaDbPlugin from '../main';
export class APIManager { export class APIManager {
plugin: MediaDbPlugin;
apis: APIModel[]; apis: APIModel[];
constructor() { constructor(plugin: MediaDbPlugin) {
this.plugin = plugin;
this.apis = []; this.apis = [];
} }
@ -18,9 +22,9 @@ export class APIManager {
console.debug(`MDB | api manager queried with "${query}"`); console.debug(`MDB | api manager queried with "${query}"`);
let res: MediaTypeModel[] = []; let res: MediaTypeModel[] = [];
for (const api of this.apis) { for (const api of this.apis) {
if (apisToQuery.contains(api.apiName)) { const apiSettings = [api.apiName, MediaTypeModel].filter(s => s).join('') as keyof typeof this.plugin.settings;
if (apisToQuery.contains(api.apiName) && this.plugin.settings[apiSettings]) {
const apiRes = await api.searchByTitle(query); const apiRes = await api.searchByTitle(query);
res = res.concat(apiRes); res = res.concat(apiRes);
} }

View file

@ -39,7 +39,7 @@ export default class MediaDbPlugin extends Plugin {
frontMatterRexExpPattern: string = '^(---)\\n[\\s\\S]*?\\n---'; frontMatterRexExpPattern: string = '^(---)\\n[\\s\\S]*?\\n---';
async onload(): Promise<void> { async onload(): Promise<void> {
this.apiManager = new APIManager(); this.apiManager = new APIManager(this);
// register APIs // register APIs
this.apiManager.registerAPI(new OMDbAPI(this)); this.apiManager.registerAPI(new OMDbAPI(this));
this.apiManager.registerAPI(new MALAPI(this)); this.apiManager.registerAPI(new MALAPI(this));
@ -73,7 +73,8 @@ export default class MediaDbPlugin extends Plugin {
this.app.workspace.on('file-menu', (menu, file) => { this.app.workspace.on('file-menu', (menu, file) => {
if (file instanceof TFolder) { if (file instanceof TFolder) {
menu.addItem(item => { menu.addItem(item => {
item.setTitle('Import folder as Media DB entries') item
.setTitle('Import folder as Media DB entries')
.setIcon('database') .setIcon('database')
.onClick(() => this.createEntriesFromFolder(file)); .onClick(() => this.createEntriesFromFolder(file));
}); });

View file

@ -19,13 +19,13 @@ export interface MediaDbPluginSettings {
openNoteInNewTab: boolean; openNoteInNewTab: boolean;
useDefaultFrontMatter: boolean; useDefaultFrontMatter: boolean;
enableTemplaterIntegration: boolean; enableTemplaterIntegration: boolean;
OMDbAPIMovies: boolean; OMDbAPImovie: boolean;
OMDbAPISeries: boolean; OMDbAPIseries: boolean;
OMDbAPIGames: boolean; OMDbAPIgame: boolean;
MALAPIMovies: boolean; MALAPImovie: boolean;
MALAPISeries: boolean; MALAPIseries: boolean;
SteamAPI: boolean; SteamAPIgame: boolean;
MobyGamesAPI: boolean; MobyGamesAPIgame: boolean;
movieTemplate: string; movieTemplate: string;
seriesTemplate: string; seriesTemplate: string;
@ -76,13 +76,13 @@ const DEFAULT_SETTINGS: MediaDbPluginSettings = {
openNoteInNewTab: true, openNoteInNewTab: true,
useDefaultFrontMatter: true, useDefaultFrontMatter: true,
enableTemplaterIntegration: false, enableTemplaterIntegration: false,
OMDbAPIMovies: true, OMDbAPImovie: true,
OMDbAPIGames: true, OMDbAPIgame: true,
OMDbAPISeries: true, OMDbAPIseries: true,
MALAPISeries: true, MALAPIseries: true,
MALAPIMovies: true, MALAPImovie: true,
SteamAPI: true, SteamAPIgame: true,
MobyGamesAPI: true, MobyGamesAPIgame: true,
movieTemplate: '', movieTemplate: '',
seriesTemplate: '', seriesTemplate: '',
@ -176,7 +176,7 @@ export class MediaDbSettingTab extends PluginSettingTab {
}); });
}); });
new Setting(containerEl) new Setting(containerEl)
.setName('Moby Games key') .setName('Moby Games key')
.setDesc('API key for "www.mobygames.com".') .setDesc('API key for "www.mobygames.com".')
.addText(cb => { .addText(cb => {
@ -281,8 +281,8 @@ export class MediaDbSettingTab extends PluginSettingTab {
.setName('OMDb API') .setName('OMDb API')
.setDesc('Use OMDb API for movies.') .setDesc('Use OMDb API for movies.')
.addToggle(cb => { .addToggle(cb => {
cb.setValue(this.plugin.settings.OMDbAPIMovies).onChange(data => { cb.setValue(this.plugin.settings.OMDbAPImovie).onChange(data => {
this.plugin.settings.OMDbAPIMovies = data; this.plugin.settings.OMDbAPImovie = data;
this.plugin.saveSettings(); this.plugin.saveSettings();
}); });
}); });
@ -290,8 +290,8 @@ export class MediaDbSettingTab extends PluginSettingTab {
.setName('MAL API') .setName('MAL API')
.setDesc('Use MAL API for movies.') .setDesc('Use MAL API for movies.')
.addToggle(cb => { .addToggle(cb => {
cb.setValue(this.plugin.settings.MALAPIMovies).onChange(data => { cb.setValue(this.plugin.settings.MALAPImovie).onChange(data => {
this.plugin.settings.MALAPIMovies = data; this.plugin.settings.MALAPImovie = data;
this.plugin.saveSettings(); this.plugin.saveSettings();
}); });
}); });
@ -300,8 +300,8 @@ export class MediaDbSettingTab extends PluginSettingTab {
.setName('OMDb API') .setName('OMDb API')
.setDesc('Use OMDb API for series.') .setDesc('Use OMDb API for series.')
.addToggle(cb => { .addToggle(cb => {
cb.setValue(this.plugin.settings.OMDbAPISeries).onChange(data => { cb.setValue(this.plugin.settings.OMDbAPIseries).onChange(data => {
this.plugin.settings.OMDbAPISeries = data; this.plugin.settings.OMDbAPIseries = data;
this.plugin.saveSettings(); this.plugin.saveSettings();
}); });
}); });
@ -309,8 +309,8 @@ export class MediaDbSettingTab extends PluginSettingTab {
.setName('MAL API') .setName('MAL API')
.setDesc('Use MAL API for series.') .setDesc('Use MAL API for series.')
.addToggle(cb => { .addToggle(cb => {
cb.setValue(this.plugin.settings.MALAPISeries).onChange(data => { cb.setValue(this.plugin.settings.MALAPIseries).onChange(data => {
this.plugin.settings.MALAPISeries = data; this.plugin.settings.MALAPIseries = data;
this.plugin.saveSettings(); this.plugin.saveSettings();
}); });
}); });
@ -319,8 +319,8 @@ export class MediaDbSettingTab extends PluginSettingTab {
.setName('OMDb API') .setName('OMDb API')
.setDesc('Use OMDb API for games.') .setDesc('Use OMDb API for games.')
.addToggle(cb => { .addToggle(cb => {
cb.setValue(this.plugin.settings.OMDbAPIGames).onChange(data => { cb.setValue(this.plugin.settings.OMDbAPIgame).onChange(data => {
this.plugin.settings.OMDbAPIGames = data; this.plugin.settings.OMDbAPIgame = data;
this.plugin.saveSettings(); this.plugin.saveSettings();
}); });
}); });
@ -328,8 +328,8 @@ export class MediaDbSettingTab extends PluginSettingTab {
.setName('Steam API') .setName('Steam API')
.setDesc('Use OMDb API for games.') .setDesc('Use OMDb API for games.')
.addToggle(cb => { .addToggle(cb => {
cb.setValue(this.plugin.settings.SteamAPI).onChange(data => { cb.setValue(this.plugin.settings.SteamAPIgame).onChange(data => {
this.plugin.settings.SteamAPI = data; this.plugin.settings.SteamAPIgame = data;
this.plugin.saveSettings(); this.plugin.saveSettings();
}); });
}); });
@ -337,8 +337,8 @@ export class MediaDbSettingTab extends PluginSettingTab {
.setName('MobyGames API') .setName('MobyGames API')
.setDesc('Use MobyGames API for games.') .setDesc('Use MobyGames API for games.')
.addToggle(cb => { .addToggle(cb => {
cb.setValue(this.plugin.settings.MobyGamesAPI).onChange(data => { cb.setValue(this.plugin.settings.MobyGamesAPIgame).onChange(data => {
this.plugin.settings.MobyGamesAPI = data; this.plugin.settings.MobyGamesAPIgame = data;
this.plugin.saveSettings(); this.plugin.saveSettings();
}); });
}); });