PDF Reader Settings, New Reading Modes, and lots of fixes (#2828)

Co-authored-by: Elry <144011449+ElryWeeb@users.noreply.github.com>
Co-authored-by: AlienHack <the4got10@windowslive.com>
Co-authored-by: William Brockhus <pickeringw@gmail.com>
Co-authored-by: Shivam Amin <xShivam.Amin@gmail.com>
This commit is contained in:
Joe Milazzo 2024-03-30 15:07:03 -05:00 committed by GitHub
parent f22f30b5a9
commit 2bde0ac82a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
55 changed files with 4410 additions and 439 deletions

View file

@ -2,18 +2,25 @@
<div>
<div class="modal-header">
<h4 class="modal-title" id="modal-basic-title">
{{t('user-review', {username: review.username})}} @if(review.isExternal) {<img class="me-1" [ngSrc]="review.provider | providerImage" width="20" height="20" alt="">}
{{t('user-review', {username: review.username})}}
@if(review.isExternal) {
<img class="me-1" [ngSrc]="review.provider | providerImage" width="20" height="20" alt="">
}
</h4>
<button type="button" class="btn-close" [attr.aria-label]="t('close')" (click)="close()"></button>
</div>
<div class="modal-body scrollable-modal">
<p *ngIf="review.tagline" [innerHTML]="review.tagline | safeHtml"></p>
@if (review.tagline) {
<p [innerHTML]="review.tagline | safeHtml"></p>
}
<p #container class="img-max-width" [innerHTML]="review.body | safeHtml"></p>
</div>
<div class="modal-footer">
<a *ngIf="review.externalUrl" class="btn btn-icon" [href]="review.externalUrl | safeHtml" target="_blank" rel="noopener noreferrer" [title]="review.externalUrl">
{{t('go-to-review')}}
</a>
@if (review.siteUrl) {
<a class="btn btn-icon" [href]="review.siteUrl | safeHtml" target="_blank" rel="noopener noreferrer" [title]="review.siteUrl">
{{t('go-to-review')}}
</a>
}
<button type="submit" class="btn btn-primary" (click)="close()">{{t('close')}}</button>
</div>
</div>

View file

@ -3,10 +3,12 @@
<div class="row g-0">
<div class="col-md-2 d-none d-md-block">
<i class="img-fluid rounded-start fa-solid fa-circle-user profile-image" aria-hidden="true"></i>
<div *ngIf="isMyReview" class="my-review">
<i class="fa-solid fa-star" aria-hidden="true" [title]="t('your-review')"></i>
<span class="visually-hidden">{{t('your-review')}}</span>
</div>
@if (isMyReview) {
<div class="my-review">
<i class="fa-solid fa-star" aria-hidden="true" [title]="t('your-review')"></i>
<span class="visually-hidden">{{t('your-review')}}</span>
</div>
}
</div>
<div class="col-md-10">
<div class="card-body">
@ -21,17 +23,19 @@
<div class="card-footer bg-transparent text-muted">
<div>
<ng-container *ngIf="isMyReview; else normalReview">
@if (isMyReview) {
<i class="d-md-none fa-solid fa-star me-1" aria-hidden="true" [title]="t('your-review')"></i>
<img class="me-1" [ngSrc]="ScrobbleProvider.Kavita | providerImage" width="20" height="20" alt="">
{{review.username}}
</ng-container>
<ng-template #normalReview>
} @else {
<img class="me-1" [ngSrc]="review.provider | providerImage" width="20" height="20" alt="">
</ng-template>
}
{{(isMyReview ? '' : review.username | defaultValue:'')}}
</div>
<span class="review-score" *ngIf="review.isExternal">{{t('rating-percentage', {r: review.score})}}</span>
@if (review.isExternal){
<span class="review-score">{{t('rating-percentage', {r: review.score})}}</span>
}
</div>
</div>
</div>

View file

@ -28,7 +28,7 @@ import {ScrobbleProvider} from "../../_services/scrobbling.service";
@Component({
selector: 'app-review-card',
standalone: true,
imports: [CommonModule, ReadMoreComponent, DefaultValuePipe, ImageComponent, NgOptimizedImage, ProviderImagePipe, TranslocoDirective],
imports: [ReadMoreComponent, DefaultValuePipe, ImageComponent, NgOptimizedImage, ProviderImagePipe, TranslocoDirective],
templateUrl: './review-card.component.html',
styleUrls: ['./review-card.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush

View file

@ -9,6 +9,6 @@ export interface UserReview {
tagline?: string;
isExternal: boolean;
bodyJustText?: string;
externalUrl?: string;
siteUrl?: string;
provider: ScrobbleProvider;
}