Much simpler

This commit is contained in:
shamoon
2026-09-25 11:59:57 -07:00
parent d57895ec11
commit cd12c34d8d
3 changed files with 15 additions and 20 deletions
@@ -73,11 +73,11 @@
<div ngbDropdownMenu class="shadow p-3">
<div class="small text-muted mb-2" i18n>Suggest using:</div>
<div class="form-check small">
<input class="form-check-input" type="checkbox" id="suggestionSourceML" [checked]="useML" [disabled]="useML && !useAI" (change)="toggleSource(SuggestionSource.ML)">
<input class="form-check-input" type="checkbox" id="suggestionSourceML" [checked]="useML" [disabled]="useML && !useAI" (change)="setSources($event.target.checked, useAI)">
<label class="form-check-label d-inline-flex align-items-center gap-1" for="suggestionSourceML"><i-bs name="cpu"></i-bs><ng-container i18n>ML</ng-container></label>
</div>
<div class="form-check small">
<input class="form-check-input" type="checkbox" id="suggestionSourceAI" [checked]="useAI" [disabled]="useAI && !useML" (change)="toggleSource(SuggestionSource.AI)">
<input class="form-check-input" type="checkbox" id="suggestionSourceAI" [checked]="useAI" [disabled]="useAI && !useML" (change)="setSources(useML, $event.target.checked)">
<label class="form-check-label d-inline-flex align-items-center gap-1" for="suggestionSourceAI"><i-bs name="stars"></i-bs><ng-container i18n>AI</ng-container></label>
</div>
</div>
@@ -224,17 +224,15 @@ describe('SuggestionsDropdownComponent', () => {
it('should emit source changes and never allow no source', () => {
const emitSpy = jest.spyOn(component.sourceChange, 'emit')
fixture.componentRef.setInput('source', SuggestionSource.AI)
component.toggleSource(SuggestionSource.ML)
component.setSources(true, true)
expect(emitSpy).toHaveBeenCalledWith(SuggestionSource.Both)
fixture.componentRef.setInput('source', SuggestionSource.Both)
component.toggleSource(SuggestionSource.AI)
component.setSources(true, false)
expect(emitSpy).toHaveBeenCalledWith(SuggestionSource.ML)
component.setSources(false, true)
expect(emitSpy).toHaveBeenCalledWith(SuggestionSource.AI)
emitSpy.mockClear()
fixture.componentRef.setInput('source', SuggestionSource.ML)
component.toggleSource(SuggestionSource.ML)
component.setSources(false, false)
expect(emitSpy).not.toHaveBeenCalled()
})
@@ -86,17 +86,14 @@ export class SuggestionsDropdownComponent {
)
}
public toggleSource(source: SuggestionSource.ML | SuggestionSource.AI) {
const ml = source === SuggestionSource.ML ? !this.useML : this.useML
const ai = source === SuggestionSource.AI ? !this.useAI : this.useAI
if (!ml && !ai) return
this.sourceChange.emit(
ml && ai
? SuggestionSource.Both
: ml
? SuggestionSource.ML
: SuggestionSource.AI
)
public setSources(ml: boolean, ai: boolean) {
if (ml && ai) {
this.sourceChange.emit(SuggestionSource.Both)
} else if (ml) {
this.sourceChange.emit(SuggestionSource.ML)
} else if (ai) {
this.sourceChange.emit(SuggestionSource.AI)
}
}
get novelSuggestions(): number {