fix: Consistently reset loading flag when requesting movies on discover page. (#4777)

[skip ci]
pull/4786/head
Victor Usoltsev 2 years ago committed by GitHub
parent b6e2a9c8a3
commit a40ab5cddf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,7 +8,7 @@ import { IDiscoverCardResult } from "../../interfaces";
import { ISearchMovieResultV2 } from "../../../interfaces/ISearchMovieResultV2";
import { ISearchTvResultV2 } from "../../../interfaces/ISearchTvResultV2";
import { MatDialog } from "@angular/material/dialog";
import { RequestType } from "../../../interfaces";
import { IMovieRequestModel, RequestType } from "../../../interfaces";
import { TranslateService } from "@ngx-translate/core";
@Component({
@ -130,45 +130,75 @@ export class DiscoverCardComponent implements OnInit {
event.preventDefault();
this.loading = true;
switch (this.result.type) {
case RequestType.tvShow:
const dia = this.dialog.open(EpisodeRequestComponent, { width: "700px", data: { series: this.tvSearchResult, isAdmin: this.isAdmin }, panelClass: 'modal-panel' });
dia.afterClosed().subscribe(x => this.loading = false);
return;
case RequestType.movie:
if (this.isAdmin) {
const dialog = this.dialog.open(AdminRequestDialogComponent, { width: "700px", data: { type: RequestType.movie, id: this.result.id, }, panelClass: 'modal-panel' });
dialog.afterClosed().subscribe((result) => {
if (result) {
this.requestService.requestMovie({ theMovieDbId: +this.result.id,
languageCode: this.translate.currentLang,
qualityPathOverride: result.radarrPathId,
requestOnBehalf: result.username?.id,
rootFolderOverride: result.radarrFolderId,
is4KRequest: is4k }).subscribe(x => {
if (x.result) {
this.result.requested = true;
this.messageService.send(this.translate.instant("Requests.RequestAddedSuccessfully", { title: this.result.title }), "Ok");
} else {
this.messageService.sendRequestEngineResultError(x);
}
});
}
});
} else {
this.requestService.requestMovie({ theMovieDbId: +this.result.id, languageCode: this.translate.currentLang, requestOnBehalf: null, qualityPathOverride: null, rootFolderOverride: null, is4KRequest: is4k }).subscribe(x => {
if (x.result) {
this.result.requested = true;
this.messageService.send(this.translate.instant("Requests.RequestAddedSuccessfully", { title: this.result.title }), "Ok");
} else {
this.messageService.sendRequestEngineResultError(x);
}
this.loading = false;
});
return;
case RequestType.tvShow:
const dialog = this.dialog.open(EpisodeRequestComponent, {
width: "700px",
data: { series: this.tvSearchResult, isAdmin: this.isAdmin },
panelClass: "modal-panel",
});
dialog.afterClosed().subscribe(() => (this.loading = false));
break;
case RequestType.movie:
const movieRequest: IMovieRequestModel = {
theMovieDbId: +this.result.id,
languageCode: this.translate.currentLang,
requestOnBehalf: null,
qualityPathOverride: null,
rootFolderOverride: null,
is4KRequest: is4k,
};
if (!this.isAdmin) {
this.requestMovie(movieRequest);
break;
}
const adminRequestDialog = this.dialog.open(
AdminRequestDialogComponent,
{
width: "700px",
data: { type: RequestType.movie, id: this.result.id },
panelClass: "modal-panel",
}
);
adminRequestDialog.afterClosed().subscribe((result) => {
if (!result) {
this.loading = false;
return;
}
movieRequest.requestOnBehalf = result.username?.id;
movieRequest.qualityPathOverride = result.radarrPathId;
movieRequest.rootFolderOverride = result.radarrFolderId;
this.requestMovie(movieRequest);
});
break;
}
}
private requestMovie(movieRequest: IMovieRequestModel) {
this.requestService.requestMovie(movieRequest).subscribe({
next: (response) => {
if (response.result) {
this.result.requested = true;
const message = this.translate.instant(
"Requests.RequestAddedSuccessfully",
{ title: this.result.title }
);
this.messageService.send(message, "Ok");
} else {
this.messageService.sendRequestEngineResultError(response);
}
this.loading = false;
},
error: (error) => {
this.messageService.sendRequestEngineResultError(error);
this.loading = false;
},
});
}
public onImageError(event: any) {
const originalSrc = event.target.src;

@ -16,7 +16,7 @@
</div>
<div *ngIf="discoverResults" class="row full-height">
<div class="col-xl-2 col-lg-3 col-md-3 col-6 col-sm-4 small-padding" *ngFor="let result of discoverResults">
<discover-card [isAdmin]="isAdmins" [result]="result" [is4kEnabled]="is4kEnabled"></discover-card>
<discover-card [isAdmin]="isAdmin" [result]="result" [is4kEnabled]="is4kEnabled"></discover-card>
</div>
</div>
</div>
Loading…
Cancel
Save