Filtering Bugs + OPDS Want To Read (#2210)

* Fixed Summary not allowing an empty field, as it should allow that.

* Cleaned up some localization wording and put a todo for a bug with library filtering not working.

* Added Want to Read to OPDS stream

* Implemented the ability to disable adding filter rows for bookmarks page which only supports one filter type.

* Fixed the library filtering code

* Fixed a bunch of titles across the app. Fixed about system page not showing data quick enough.

* Hide API key by default and show a button to unhide. Fixed a styling issue with input group buttons.

* Fixed a hack to support zh_Hans language code to work for things like pt-br as well.

* Fixed transloco not supporting same language scheme as Weblate, but somehow needs all languages.

* Fixed the rating on series detail not being inline with other sections
This commit is contained in:
Joe Milazzo 2023-08-13 12:39:28 -05:00 committed by GitHub
parent f472745ae4
commit 59c7ef5aa5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 217 additions and 111 deletions

View file

@ -42,7 +42,7 @@
<p>{{t('setup-user-description')}}
</p>
<a class="email-link" href="{{emailLink}}" target="_blank" rel="noopener noreferrer">{{t('setup-user-account')}}</a>
<app-api-key [title]="t('invite-url-label')" [tooltipText]="t('setup-user-account-tooltip')" [showRefresh]="false" [transform]="makeLink"></app-api-key>
<app-api-key [title]="t('invite-url-label')" [tooltipText]="t('setup-user-account-tooltip')" [hideData]="false" [showRefresh]="false" [transform]="makeLink"></app-api-key>
</ng-container>
</div>

View file

@ -1,67 +1,30 @@
import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { ToastrService } from 'ngx-toastr';
import { take } from 'rxjs/operators';
import { ServerService } from 'src/app/_services/server.service';
import { SettingsService } from '../settings.service';
import {ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit} from '@angular/core';
import {ServerService} from 'src/app/_services/server.service';
import {ServerInfoSlim} from '../_models/server-info';
import { ServerSettings } from '../_models/server-settings';
import { NgIf } from '@angular/common';
import {translate, TranslocoDirective} from "@ngneat/transloco";
import {NgIf} from '@angular/common';
import {TranslocoDirective} from "@ngneat/transloco";
@Component({
selector: 'app-manage-system',
templateUrl: './manage-system.component.html',
styleUrls: ['./manage-system.component.scss'],
standalone: true,
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [NgIf, TranslocoDirective]
})
export class ManageSystemComponent implements OnInit {
settingsForm: FormGroup = new FormGroup({});
serverSettings!: ServerSettings;
serverInfo!: ServerInfoSlim;
private readonly cdRef = inject(ChangeDetectorRef);
constructor(private settingsService: SettingsService, private toastr: ToastrService,
private serverService: ServerService) { }
constructor(public serverService: ServerService) { }
ngOnInit(): void {
this.serverService.getServerInfo().pipe(take(1)).subscribe(info => {
this.serverService.getServerInfo().subscribe(info => {
this.serverInfo = info;
});
this.settingsService.getServerSettings().pipe(take(1)).subscribe((settings: ServerSettings) => {
this.serverSettings = settings;
this.settingsForm.addControl('cacheDirectory', new FormControl(this.serverSettings.cacheDirectory, [Validators.required]));
this.settingsForm.addControl('taskScan', new FormControl(this.serverSettings.taskScan, [Validators.required]));
this.settingsForm.addControl('taskBackup', new FormControl(this.serverSettings.taskBackup, [Validators.required]));
this.settingsForm.addControl('port', new FormControl(this.serverSettings.port, [Validators.required]));
this.settingsForm.addControl('loggingLevel', new FormControl(this.serverSettings.loggingLevel, [Validators.required]));
this.settingsForm.addControl('allowStatCollection', new FormControl(this.serverSettings.allowStatCollection, [Validators.required]));
});
}
resetForm() {
this.settingsForm.get('cacheDirectory')?.setValue(this.serverSettings.cacheDirectory);
this.settingsForm.get('scanTask')?.setValue(this.serverSettings.taskScan);
this.settingsForm.get('taskBackup')?.setValue(this.serverSettings.taskBackup);
this.settingsForm.get('port')?.setValue(this.serverSettings.port);
this.settingsForm.get('loggingLevel')?.setValue(this.serverSettings.loggingLevel);
this.settingsForm.get('allowStatCollection')?.setValue(this.serverSettings.allowStatCollection);
this.settingsForm.markAsPristine();
}
saveSettings() {
const modelSettings = this.settingsForm.value;
this.settingsService.updateServerSettings(modelSettings).pipe(take(1)).subscribe((settings: ServerSettings) => {
this.serverSettings = settings;
this.resetForm();
this.toastr.success(translate('toasts.server-settings-updated'));
}, (err: any) => {
console.error('error: ', err);
this.cdRef.markForCheck();
});
}
}