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/wizard/welcome/welcome.component.ts

84 lines
3.0 KiB

import { Component, OnInit, ViewChild } from "@angular/core";
import { IdentityService, NotificationService, SettingsService, StatusService } from "../../services";
import { CustomizationFacade } from "../../state/customization/customization.facade";
import { ICreateWizardUser } from "../../interfaces";
import { IOmbiConfigModel } from "../models/OmbiConfigModel";
import { MatStepper } from'@angular/material/stepper';
import { Router } from "@angular/router";
import { WizardService } from "../services/wizard.service";
import { Observable, take } from "rxjs";
@Component({
templateUrl: "./welcome.component.html",
styleUrls: ["./welcome.component.scss"],
})
export class WelcomeComponent implements OnInit {
@ViewChild('stepper', {static: false}) public stepper: MatStepper;
public localUser: ICreateWizardUser;
public config: IOmbiConfigModel;
constructor(private router: Router, private identityService: IdentityService,
private notificationService: NotificationService, private WizardService: WizardService,
private settingsService: SettingsService, private customizationFacade: CustomizationFacade,
private status: StatusService) { }
public ngOnInit(): void {
this.status.getWizardStatus().pipe(take(1))
.subscribe(x => {
if (x.result) {
this.router.navigate(["login"]);
}
});
this.localUser = {
password:"",
username:"",
usePlexAdminAccount:false
}
this.config = {
applicationName: null,
applicationUrl: null,
logo: null
};
}
public createUser() {
if (this.config.applicationUrl) {
this.settingsService.verifyUrl(this.config.applicationUrl).subscribe(x => {
if (!x) {
this.notificationService.error(`The URL "${this.config.applicationUrl}" is not valid. Please format it correctly e.g. http://www.google.com/`);
this.stepper.selectedIndex = 3;
return;
}
this.saveConfig();
});
} else {
this.saveConfig();
}
}
private saveConfig() {
this.WizardService.addOmbiConfig(this.config).subscribe({
next: (config) => {
if(config != null) {
this.identityService.createWizardUser(this.localUser).subscribe(x => {
if (x.result) {
this.customizationFacade.loadCustomziationSettings().subscribe();
// save the config
this.router.navigate(["login"]);
} else {
if (x.errors.length > 0) {
this.notificationService.error(x.errors[0]);
this.stepper.previous();
}
}
});
}
},
error: (configErr) => this.notificationService.error(configErr)
});
}
}