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 ngbDropdownMenu class="shadow p-3">
<div class="small text-muted mb-2" i18n>Suggest using:</div> <div class="small text-muted mb-2" i18n>Suggest using:</div>
<div class="form-check small"> <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> <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>
<div class="form-check small"> <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> <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>
</div> </div>
@@ -224,17 +224,15 @@ describe('SuggestionsDropdownComponent', () => {
it('should emit source changes and never allow no source', () => { it('should emit source changes and never allow no source', () => {
const emitSpy = jest.spyOn(component.sourceChange, 'emit') const emitSpy = jest.spyOn(component.sourceChange, 'emit')
fixture.componentRef.setInput('source', SuggestionSource.AI) component.setSources(true, true)
component.toggleSource(SuggestionSource.ML)
expect(emitSpy).toHaveBeenCalledWith(SuggestionSource.Both) expect(emitSpy).toHaveBeenCalledWith(SuggestionSource.Both)
component.setSources(true, false)
fixture.componentRef.setInput('source', SuggestionSource.Both)
component.toggleSource(SuggestionSource.AI)
expect(emitSpy).toHaveBeenCalledWith(SuggestionSource.ML) expect(emitSpy).toHaveBeenCalledWith(SuggestionSource.ML)
component.setSources(false, true)
expect(emitSpy).toHaveBeenCalledWith(SuggestionSource.AI)
emitSpy.mockClear() emitSpy.mockClear()
fixture.componentRef.setInput('source', SuggestionSource.ML) component.setSources(false, false)
component.toggleSource(SuggestionSource.ML)
expect(emitSpy).not.toHaveBeenCalled() expect(emitSpy).not.toHaveBeenCalled()
}) })
@@ -86,17 +86,14 @@ export class SuggestionsDropdownComponent {
) )
} }
public toggleSource(source: SuggestionSource.ML | SuggestionSource.AI) { public setSources(ml: boolean, ai: boolean) {
const ml = source === SuggestionSource.ML ? !this.useML : this.useML if (ml && ai) {
const ai = source === SuggestionSource.AI ? !this.useAI : this.useAI this.sourceChange.emit(SuggestionSource.Both)
if (!ml && !ai) return } else if (ml) {
this.sourceChange.emit( this.sourceChange.emit(SuggestionSource.ML)
ml && ai } else if (ai) {
? SuggestionSource.Both this.sourceChange.emit(SuggestionSource.AI)
: ml }
? SuggestionSource.ML
: SuggestionSource.AI
)
} }
get novelSuggestions(): number { get novelSuggestions(): number {