Second attempt to selectively turn off APIs

This commit is contained in:
ltctceplrm 2024-02-06 02:29:24 +01:00
parent 54766bb59e
commit 5b35e552c5
3 changed files with 16 additions and 15 deletions

View file

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

View file

@ -1,11 +1,13 @@
import { MediaTypeModel } from '../models/MediaTypeModel';
import { MediaType } from '../utils/MediaType';
import MediaDbPlugin from '../main';
export abstract class APIModel {
apiName: string;
apiUrl: string;
apiDescription: string;
types: MediaType[];
plugin: MediaDbPlugin;
/**
* This function should query the api and return a list of matches. The matches should be caped at 20.
@ -17,7 +19,9 @@ export abstract class APIModel {
abstract getById(id: string): Promise<MediaTypeModel>;
hasType(type: MediaType): boolean {
return this.types.contains(type);
if (this.types.contains(type) && !(this.plugin.settings[[this.apiName, type.toString()].filter(s => s).join('') as keyof typeof this.plugin.settings] === false)){
return true;
}
}
hasTypeOverlap(types: MediaType[]): boolean {
@ -28,4 +32,4 @@ export abstract class APIModel {
}
return false;
}
}
}