You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ombi/src/Ombi/ClientApp/src/app/settings/plex/components/plex-server-dialog/plex-server-dialog.componen...

79 lines
2.3 KiB

import { Component, Inject } from "@angular/core";
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog";
import {
PlexService,
NotificationService,
TesterService,
} from "../../../../services";
import { take } from "rxjs";
import { IPlexLibrariesSettings } from "../../../../interfaces";
import { PlexServerDialogData } from "../models";
@Component({
selector: "plex-server-dialog-component",
templateUrl: "plex-server-dialog.component.html",
styleUrls: ["plex-server-dialog.component.scss"],
})
export class PlexServerDialogComponent {
public password: string;
public username: string;
constructor(
private dialogRef: MatDialogRef<PlexServerDialogData>,
@Inject(MAT_DIALOG_DATA) public data: PlexServerDialogData,
private notificationService: NotificationService,
private testerService: TesterService,
private plexService: PlexService
) {
}
public cancel() {
this.dialogRef.close({closed: true});
}
public testPlex() {
this.testerService.plexTest(this.data.server).pipe(take(1))
.subscribe(x => {
if (x === true) {
this.notificationService.success(`Successfully connected to the Plex server ${this.data.server.name}!`);
} else {
this.notificationService.error(`We could not connect to the Plex server ${this.data.server.name}!`);
}
});
}
public delete() {
this.dialogRef.close({deleted: true});
}
public save() {
this.dialogRef.close({server: this.data.server});
}
public loadLibraries() {
if (this.data.server.ip == null) {
this.notificationService.error("Plex is not yet configured correctly");
return;
}
this.plexService.getLibraries(this.data.server).subscribe(x => {
this.data.server.plexSelectedLibraries = [];
if (x.successful) {
x.data.mediaContainer.directory.forEach((item) => {
const lib: IPlexLibrariesSettings = {
key: item.key,
title: item.title,
enabled: false,
};
this.data.server.plexSelectedLibraries.push(lib);
});
} else {
this.notificationService.error(x.message);
}
});
}
}