another cleanup pass

This commit is contained in:
Moritz Jung 2026-05-21 20:14:11 +02:00
parent 898b495f52
commit ad568b5c9f
8 changed files with 125 additions and 124 deletions

View file

@ -22,7 +22,7 @@ export class MediaDbAdvancedSearchModal extends Modal {
super(plugin.app);
this.plugin = plugin;
this.selectedApis = [];
this.selectedApis = [...(advancedSearchModalOptions.preselectedAPIs ?? [])];
this.title = advancedSearchModalOptions.modalTitle ?? '';
this.query = advancedSearchModalOptions.prefilledSearchString ?? '';
this.isBusy = false;
@ -101,7 +101,9 @@ export class MediaDbAdvancedSearchModal extends Modal {
apiToggleComponent.setValue(this.selectedApis.some(x => x === api.apiName));
apiToggleComponent.onChange(value => {
if (value) {
this.selectedApis.push(api.apiName);
if (!this.selectedApis.includes(api.apiName)) {
this.selectedApis.push(api.apiName);
}
} else {
this.selectedApis = this.selectedApis.filter(x => x !== api.apiName);
}

View file

@ -23,8 +23,8 @@ export class MediaDbIdSearchModal extends Modal {
this.plugin = plugin;
this.title = idSearchModalOptions.modalTitle ?? '';
this.selectedApi = idSearchModalOptions.preselectedAPI ?? plugin.apiManager.apis[0].apiName;
this.query = '';
this.selectedApi = idSearchModalOptions.preselectedAPI ?? plugin.apiManager.apis[0]?.apiName ?? '';
this.query = idSearchModalOptions.prefilledSearchString ?? '';
this.isBusy = false;
}
@ -74,6 +74,7 @@ export class MediaDbIdSearchModal extends Modal {
const searchComponent = new TextComponent(contentEl);
searchComponent.inputEl.addClass('media-db-plugin-search-input');
searchComponent.setPlaceholder(placeholder);
searchComponent.setValue(this.query);
searchComponent.onChange(value => (this.query = value));
searchComponent.inputEl.addEventListener('keydown', this.keyPressCallback.bind(this));
@ -93,6 +94,7 @@ export class MediaDbIdSearchModal extends Modal {
for (const api of this.plugin.apiManager.apis) {
apiSelectorComponent.addOption(api.apiName, api.apiName);
}
apiSelectorComponent.setValue(this.selectedApi);
apiSelectorWrapper.appendChild(apiSelectorComponent.selectEl);
contentEl.createDiv({ cls: 'media-db-plugin-spacer' });

View file

@ -109,12 +109,13 @@ export class MediaDbSearchModal extends Modal {
if (value) {
if (currentToggle && currentToggle !== apiToggleComponent) {
currentToggle.setValue(false);
this.selectedTypes = this.selectedTypes.filter(x => x !== mediaType);
}
currentToggle = apiToggleComponent;
this.selectedTypes.push(mediaType);
this.selectedTypes = [mediaType];
} else {
currentToggle = undefined;
if (currentToggle === apiToggleComponent) {
currentToggle = undefined;
}
this.selectedTypes = this.selectedTypes.filter(x => x !== mediaType);
}
});

View file

@ -62,5 +62,6 @@ export class MediaDbSearchResultModal extends SelectModal<MediaTypeModel> {
onClose(): void {
this.closeCallback?.();
super.onClose();
}
}

View file

@ -4,6 +4,7 @@ import { SelectModal } from 'packages/obsidian/src/modals/SelectModal';
export interface SeasonSelectModalElement {
season_number: number;
name: string;
episode_count?: number;
air_date?: string;
poster_path?: string;
}
@ -33,7 +34,6 @@ export class MediaDbSeasonSelectModal extends SelectModal<SeasonSelectModalEleme
submit(): void {
const selected = this.selectModalElements.filter(x => x.isActive()).map(x => x.value);
this.submitCallback?.(selected);
this.close();
}
skip(): void {
@ -47,4 +47,9 @@ export class MediaDbSeasonSelectModal extends SelectModal<SeasonSelectModalEleme
setCloseCb(cb: (err?: Error) => void): void {
this.closeCallback = cb;
}
onClose(): void {
this.closeCallback?.();
super.onClose();
}
}

View file

@ -81,6 +81,7 @@ export abstract class SelectModal<T> extends Modal {
onOpen(): void {
const { contentEl, titleEl } = this;
this.selectModalElements = [];
titleEl.createEl('h2', { text: this.title });
contentEl.addClass('media-db-plugin-select-modal');
contentEl.createEl('p', { text: this.description });
@ -125,6 +126,11 @@ export abstract class SelectModal<T> extends Modal {
});
}
onClose(): void {
this.selectModalElements = [];
this.contentEl.empty();
}
activateHighlighted(): void {
for (const selectModalElement of this.selectModalElements) {
if (selectModalElement.isHighlighted()) {