More Testing (#2683)

This commit is contained in:
Joe Milazzo 2024-02-02 17:12:37 -06:00 committed by GitHub
parent 4ce2b4343a
commit 685f7365e1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 168 additions and 36 deletions

View file

@ -1,10 +1,23 @@
import {ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, Input, OnInit} from '@angular/core';
import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
EventEmitter,
inject,
Input,
OnInit,
Output
} from '@angular/core';
import {CommonModule, NgOptimizedImage} from '@angular/common';
import {UserReview} from "./user-review";
import {NgbModal} from "@ng-bootstrap/ng-bootstrap";
import {ReviewCardModalComponent} from "../review-card-modal/review-card-modal.component";
import {AccountService} from "../../_services/account.service";
import {ReviewSeriesModalComponent} from "../review-series-modal/review-series-modal.component";
import {
ReviewSeriesModalCloseAction,
ReviewSeriesModalCloseEvent,
ReviewSeriesModalComponent
} from "../review-series-modal/review-series-modal.component";
import {ReadMoreComponent} from "../../shared/read-more/read-more.component";
import {DefaultValuePipe} from "../../_pipes/default-value.pipe";
import {ImageComponent} from "../../shared/image/image.component";
@ -25,6 +38,7 @@ export class ReviewCardComponent implements OnInit {
protected readonly ScrobbleProvider = ScrobbleProvider;
@Input({required: true}) review!: UserReview;
@Output() refresh = new EventEmitter<ReviewSeriesModalCloseEvent>();
isMyReview: boolean = false;
@ -48,5 +62,10 @@ export class ReviewCardComponent implements OnInit {
}
const ref = this.modalService.open(component, {size: 'lg', fullscreen: 'md'});
ref.componentInstance.review = this.review;
ref.closed.subscribe((res: ReviewSeriesModalCloseEvent | undefined) => {
if (res) {
this.refresh.emit(res);
}
})
}
}

View file

@ -26,6 +26,7 @@
</div>
<div class="modal-footer">
<button class="btn btn-danger" (click)="delete()">{{t('delete')}}</button>
<button class="btn btn-secondary" (click)="close()">{{t('close')}}</button>
<button type="submit" class="btn btn-primary" (click)="save()">{{t('save')}}</button>
</div>

View file

@ -12,7 +12,21 @@ import {NgbActiveModal, NgbRating} from '@ng-bootstrap/ng-bootstrap';
import { SeriesService } from 'src/app/_services/series.service';
import {UserReview} from "../review-card/user-review";
import {CommonModule} from "@angular/common";
import {TranslocoDirective} from "@ngneat/transloco";
import {translate, TranslocoDirective} from "@ngneat/transloco";
import {ConfirmService} from "../../shared/confirm.service";
import {ToastrService} from "ngx-toastr";
export enum ReviewSeriesModalCloseAction {
Create,
Edit,
Delete,
Close
}
export interface ReviewSeriesModalCloseEvent {
success: boolean,
review: UserReview;
action: ReviewSeriesModalCloseAction
}
@Component({
selector: 'app-review-series-modal',
@ -27,6 +41,8 @@ export class ReviewSeriesModalComponent implements OnInit {
protected readonly modal = inject(NgbActiveModal);
private readonly seriesService = inject(SeriesService);
private readonly cdRef = inject(ChangeDetectorRef);
private readonly confirmService = inject(ConfirmService);
private readonly toastr = inject(ToastrService);
protected readonly minLength = 5;
@Input({required: true}) review!: UserReview;
@ -40,16 +56,23 @@ export class ReviewSeriesModalComponent implements OnInit {
}
close() {
this.modal.close({success: false, review: null});
this.modal.close({success: false, review: this.review, action: ReviewSeriesModalCloseAction.Close});
}
async delete() {
if (!await this.confirmService.confirm(translate('toasts.delete-review'))) return;
this.seriesService.deleteReview(this.review.seriesId).subscribe(() => {
this.toastr.success(translate('toasts.review-deleted'));
this.modal.close({success: true, review: this.review, action: ReviewSeriesModalCloseAction.Delete});
});
}
save() {
const model = this.reviewGroup.value;
if (model.reviewBody.length < this.minLength) {
return;
}
this.seriesService.updateReview(this.review.seriesId, model.reviewBody).subscribe(review => {
this.modal.close({success: true, review: review});
this.modal.close({success: true, review: review, action: ReviewSeriesModalCloseAction.Edit});
});
}
}