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 { MediaTypeModel } from '../models/MediaTypeModel';
import MediaDbPlugin from '../main';
export class APIManager {
plugin: MediaDbPlugin;
apis: APIModel[];
constructor() {
constructor(plugin: MediaDbPlugin) {
this.plugin = plugin;
this.apis = [];
}
@ -18,9 +22,9 @@ export class APIManager {
console.debug(`MDB | api manager queried with "${query}"`);
let res: MediaTypeModel[] = [];
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);
res = res.concat(apiRes);
}

View file

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

View file

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