From 6c710e444f616ffc5cf129758f338d8360b2fa1f Mon Sep 17 00:00:00 2001 From: tidusjar Date: Thu, 10 Feb 2022 19:29:38 +0000 Subject: [PATCH] feat: refactored the radarr setting page to support the new model --- src/Ombi.sln | 9 + .../ClientApp/src/app/interfaces/ISettings.ts | 5 + .../src/app/services/settings.service.ts | 7 +- .../components/radarr-form.component.html | 101 +++++++++++ .../components/radarr-form.component.scss | 17 ++ .../components/radarr-form.component.ts | 94 ++++++++++ .../app/settings/radarr/radarr.component.html | 113 ++----------- .../app/settings/radarr/radarr.component.ts | 107 ++++-------- .../src/app/settings/settings.module.ts | 160 +++++++++++++----- src/Ombi/Ombi.Api.MediaServer.csproj | 18 ++ 10 files changed, 415 insertions(+), 216 deletions(-) create mode 100644 src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.html create mode 100644 src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.scss create mode 100644 src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.ts create mode 100644 src/Ombi/Ombi.Api.MediaServer.csproj diff --git a/src/Ombi.sln b/src/Ombi.sln index 841f84dbd..a92df055e 100644 --- a/src/Ombi.sln +++ b/src/Ombi.sln @@ -126,6 +126,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.Api.RottenTomatoes", " EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.I18n", "Ombi.I18n\Ombi.I18n.csproj", "{6A922D57-8622-4C36-8E6E-D5BA9E8DA6C0}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.Api.MediaServer", "Ombi.Api.MediaServer\Ombi.Api.MediaServer.csproj", "{AFC0BA9B-E38D-479F-825A-2F94EE4D6120}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -439,6 +441,12 @@ Global {6A922D57-8622-4C36-8E6E-D5BA9E8DA6C0}.NonUiBuild|Any CPU.Build.0 = NonUiBuild|Any CPU {6A922D57-8622-4C36-8E6E-D5BA9E8DA6C0}.Release|Any CPU.ActiveCfg = Release|Any CPU {6A922D57-8622-4C36-8E6E-D5BA9E8DA6C0}.Release|Any CPU.Build.0 = Release|Any CPU + {AFC0BA9B-E38D-479F-825A-2F94EE4D6120}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AFC0BA9B-E38D-479F-825A-2F94EE4D6120}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AFC0BA9B-E38D-479F-825A-2F94EE4D6120}.NonUiBuild|Any CPU.ActiveCfg = NonUiBuild|Any CPU + {AFC0BA9B-E38D-479F-825A-2F94EE4D6120}.NonUiBuild|Any CPU.Build.0 = NonUiBuild|Any CPU + {AFC0BA9B-E38D-479F-825A-2F94EE4D6120}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AFC0BA9B-E38D-479F-825A-2F94EE4D6120}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -487,6 +495,7 @@ Global {E2186FDA-D827-4781-8663-130AC382F12C} = {9293CA11-360A-4C20-A674-B9E794431BF5} {5DE40A66-B369-469E-8626-ECE23D9D8034} = {9293CA11-360A-4C20-A674-B9E794431BF5} {8F19C701-7881-4BC7-8BBA-B068A6B954AD} = {9293CA11-360A-4C20-A674-B9E794431BF5} + {AFC0BA9B-E38D-479F-825A-2F94EE4D6120} = {9293CA11-360A-4C20-A674-B9E794431BF5} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {192E9BF8-00B4-45E4-BCCC-4C215725C869} diff --git a/src/Ombi/ClientApp/src/app/interfaces/ISettings.ts b/src/Ombi/ClientApp/src/app/interfaces/ISettings.ts index c7990215f..8bf2755ec 100644 --- a/src/Ombi/ClientApp/src/app/interfaces/ISettings.ts +++ b/src/Ombi/ClientApp/src/app/interfaces/ISettings.ts @@ -158,6 +158,11 @@ export interface IRadarrSettings extends IExternalSettings { scanForAvailability: boolean; } +export interface IRadarrCombined { + radarr: IRadarrSettings; + radarr4K: IRadarrSettings; +} + export interface ILidarrSettings extends IExternalSettings { enabled: boolean; apiKey: string; diff --git a/src/Ombi/ClientApp/src/app/services/settings.service.ts b/src/Ombi/ClientApp/src/app/services/settings.service.ts index 3f4409d0c..4758c8382 100644 --- a/src/Ombi/ClientApp/src/app/services/settings.service.ts +++ b/src/Ombi/ClientApp/src/app/services/settings.service.ts @@ -39,6 +39,7 @@ import { IVoteSettings, ITwilioSettings, IWebhookNotificationSettings, + IRadarrCombined, } from "../interfaces"; import { ServiceHelpers } from "./service.helpers"; @@ -101,11 +102,11 @@ export class SettingsService extends ServiceHelpers { return this.http.post(`${this.url}/Sonarr`, JSON.stringify(settings), {headers: this.headers}); } - public getRadarr(): Observable { - return this.http.get(`${this.url}/Radarr`, {headers: this.headers}); + public getRadarr(): Observable { + return this.http.get(`${this.url}/Radarr`, {headers: this.headers}); } - public saveRadarr(settings: IRadarrSettings): Observable { + public saveRadarr(settings: IRadarrCombined): Observable { return this.http.post(`${this.url}/Radarr`, JSON.stringify(settings), {headers: this.headers}); } diff --git a/src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.html b/src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.html new file mode 100644 index 000000000..c1d4c087d --- /dev/null +++ b/src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.html @@ -0,0 +1,101 @@ +
+
+
+
+
+ Enable +
+
+ Scan for Availability +
+
+ + Do not search for Movies + +
+
+
+
+
+
+
+ +
+ + Hostname or IP + + + + Port + + + + SSL + +
+
+
+ + API key + + +
+
+ + Base URL + + +
+
+
+ +
+
+ +
+
+ + Quality Profiles + + + {{quality.name}} + + + + +
+
+
+ +
+
+ + Default Root Folder + + + {{folder.path}} + + + + +
+
+ + Default Minimum Availability + + + {{min.name}} + + + +
+
+
+
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.scss b/src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.scss new file mode 100644 index 000000000..2898f062e --- /dev/null +++ b/src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.scss @@ -0,0 +1,17 @@ +@import "~styles/shared.scss"; +.small-middle-container { + margin: auto; + width: 95%; + margin-top: 10px; +} + +.col-8 { + display: inline-table; +} +.col-md-5 { + display: inline-table; +} + +.row { + display: block; +} \ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.ts b/src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.ts new file mode 100644 index 000000000..1da94d0f2 --- /dev/null +++ b/src/Ombi/ClientApp/src/app/settings/radarr/components/radarr-form.component.ts @@ -0,0 +1,94 @@ +import { ChangeDetectionStrategy, Component, OnInit } from "@angular/core"; +import { ControlContainer, FormGroup, Validators } from "@angular/forms"; + +import { IMinimumAvailability, IRadarrProfile, IRadarrRootFolder } from "../../../interfaces"; +import { IRadarrSettings } from "../../../interfaces"; +import { RadarrService } from "../../../services"; +import { TesterService } from "../../../services"; +import { NotificationService } from "../../../services"; +import { SettingsService } from "../../../services"; + +@Component({ + selector: "ombi-settings-radarr-form", + templateUrl: "./radarr-form.component.html", + styleUrls: ["./radarr-form.component.scss"], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class RadarrFormComponent implements OnInit { + + public qualities: IRadarrProfile[]; + public rootFolders: IRadarrRootFolder[]; + public minimumAvailabilityOptions: IMinimumAvailability[]; + public profilesRunning: boolean; + public rootFoldersRunning: boolean; + public form: FormGroup; + + constructor(private radarrService: RadarrService, + private notificationService: NotificationService, + private testerService: TesterService, + private controlContainer: ControlContainer) { } + + public ngOnInit() { + this.form = this.controlContainer.control; + + this.qualities = []; + this.qualities.push({ name: "Please Select", id: -1 }); + + this.rootFolders = []; + this.rootFolders.push({ path: "Please Select", id: -1 }); + this.minimumAvailabilityOptions = [ + { name: "Announced", value: "Announced" }, + { name: "In Cinemas", value: "InCinemas" }, + { name: "Physical / Web", value: "Released" }, + ]; + } + + public toggleValidators() { + const enabled = this.form.controls.enabled.value as boolean; + this.form.controls.apiKey.setValidators(enabled ? [Validators.required] : null); + this.form.controls.defaultQualityProfile.setValidators(enabled ? [Validators.required] : null); + this.form.controls.defaultRootPath.setValidators(enabled ? [Validators.required] : null); + this.form.controls.ip.setValidators(enabled ? [Validators.required] : null); + this.form.controls.port.setValidators(enabled ? [Validators.required] : null); + this.form.controls.minimumAvailability.setValidators(enabled ? [Validators.required] : null); + } + + public getProfiles(form: FormGroup) { + this.profilesRunning = true; + this.radarrService.getQualityProfiles(form.value).subscribe(x => { + this.qualities = x; + this.qualities.unshift({ name: "Please Select", id: -1 }); + + this.profilesRunning = false; + this.notificationService.success("Successfully retrieved the Quality Profiles"); + }); + } + + public getRootFolders(form: FormGroup) { + this.rootFoldersRunning = true; + this.radarrService.getRootFolders(form.value).subscribe(x => { + this.rootFolders = x; + this.rootFolders.unshift({ path: "Please Select", id: -1 }); + + this.rootFoldersRunning = false; + this.notificationService.success("Successfully retrieved the Root Folders"); + }); + } + + public test(form: FormGroup) { + if (form.invalid) { + this.notificationService.error("Please check your entered values"); + return; + } + const settings = form.value; + this.testerService.radarrTest(settings).subscribe(result => { + if (result.isValid) { + this.notificationService.success("Successfully connected to Radarr!"); + } else if (result.expectedSubDir) { + this.notificationService.error("Your Radarr Base URL must be set to " + result.expectedSubDir); + } else { + this.notificationService.error("We could not connect to Radarr!"); + } + }); + } +} diff --git a/src/Ombi/ClientApp/src/app/settings/radarr/radarr.component.html b/src/Ombi/ClientApp/src/app/settings/radarr/radarr.component.html index b6d30998a..dd16f0159 100644 --- a/src/Ombi/ClientApp/src/app/settings/radarr/radarr.component.html +++ b/src/Ombi/ClientApp/src/app/settings/radarr/radarr.component.html @@ -4,108 +4,19 @@ Radarr Settings
-
-
-
-
- Enable -
-
- Scan for Availability -
-
- - Do not search for Movies - -
-
-
-
-
-
-
- -
- - Hostname or IP - - - - Port - - - - SSL - -
-
-
- - API key - - -
-
- - Base URL - - -
-
-
- -
-
- -
-
- - Quality Profiles - - - {{quality.name}} - - - -
-
-
- -
-
- - Default Root Folder - - - {{folder.path}} - - - + -
-
- - Default Minimum Availability - - - {{min.name}} - - - -
-
-
-
-
-
- -
-
- -
-
-
+ + + +
+ +
- \ No newline at end of file + + +
+    {{ form.value | json }}
+
\ No newline at end of file diff --git a/src/Ombi/ClientApp/src/app/settings/radarr/radarr.component.ts b/src/Ombi/ClientApp/src/app/settings/radarr/radarr.component.ts index 9e787b406..aab67cf8c 100644 --- a/src/Ombi/ClientApp/src/app/settings/radarr/radarr.component.ts +++ b/src/Ombi/ClientApp/src/app/settings/radarr/radarr.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from "@angular/core"; import { FormBuilder, FormGroup, Validators } from "@angular/forms"; -import { IMinimumAvailability, IRadarrProfile, IRadarrRootFolder } from "../../interfaces"; +import { IMinimumAvailability, IRadarrCombined, IRadarrProfile, IRadarrRootFolder } from "../../interfaces"; import { IRadarrSettings } from "../../interfaces"; import { RadarrService } from "../../services"; import { TesterService } from "../../services"; @@ -30,92 +30,55 @@ export class RadarrComponent implements OnInit { public ngOnInit() { this.settingsService.getRadarr() .subscribe(x => { - this.form = this.fb.group({ - enabled: [x.enabled], - apiKey: [x.apiKey, [Validators.required]], - defaultQualityProfile: [+x.defaultQualityProfile, [Validators.required]], - defaultRootPath: [x.defaultRootPath, [Validators.required]], - ssl: [x.ssl], - subDir: [x.subDir], - ip: [x.ip, [Validators.required]], - port: [x.port, [Validators.required]], - addOnly: [x.addOnly], - minimumAvailability: [x.minimumAvailability, [Validators.required]], - scanForAvailability: [x.scanForAvailability] + radarr: this.fb.group({ + enabled: [x.radarr.enabled], + apiKey: [x.radarr.apiKey], + defaultQualityProfile: [+x.radarr.defaultQualityProfile], + defaultRootPath: [x.radarr.defaultRootPath], + ssl: [x.radarr.ssl], + subDir: [x.radarr.subDir], + ip: [x.radarr.ip], + port: [x.radarr.port], + addOnly: [x.radarr.addOnly], + minimumAvailability: [x.radarr.minimumAvailability], + scanForAvailability: [x.radarr.scanForAvailability] + }), + radarr4K: this.fb.group({ + enabled: [x.radarr.enabled], + apiKey: [x.radarr.apiKey], + defaultQualityProfile: [+x.radarr.defaultQualityProfile], + defaultRootPath: [x.radarr.defaultRootPath], + ssl: [x.radarr.ssl], + subDir: [x.radarr.subDir], + ip: [x.radarr.ip], + port: [x.radarr.port], + addOnly: [x.radarr.addOnly], + minimumAvailability: [x.radarr.minimumAvailability], + scanForAvailability: [x.radarr.scanForAvailability] + }), }); - - if (x.defaultQualityProfile) { - this.getProfiles(this.form); - } - if (x.defaultRootPath) { - this.getRootFolders(this.form); - } }); - - this.qualities = []; - this.qualities.push({ name: "Please Select", id: -1 }); - - this.rootFolders = []; - this.rootFolders.push({ path: "Please Select", id: -1 }); - this.minimumAvailabilityOptions = [ - { name: "Announced", value: "Announced" }, - { name: "In Cinemas", value: "InCinemas" }, - { name: "Physical / Web", value: "Released" }, - ]; - } - public getProfiles(form: FormGroup) { - this.profilesRunning = true; - this.radarrService.getQualityProfiles(form.value).subscribe(x => { - this.qualities = x; - this.qualities.unshift({ name: "Please Select", id: -1 }); - - this.profilesRunning = false; - this.notificationService.success("Successfully retrieved the Quality Profiles"); - }); - } - - public getRootFolders(form: FormGroup) { - this.rootFoldersRunning = true; - this.radarrService.getRootFolders(form.value).subscribe(x => { - this.rootFolders = x; - this.rootFolders.unshift({ path: "Please Select", id: -1 }); - - this.rootFoldersRunning = false; - this.notificationService.success("Successfully retrieved the Root Folders"); - }); - } - public test(form: FormGroup) { + public onSubmit(form: FormGroup) { if (form.invalid) { this.notificationService.error("Please check your entered values"); return; } - const settings = form.value; - this.testerService.radarrTest(settings).subscribe(result => { - if (result.isValid) { - this.notificationService.success("Successfully connected to Radarr!"); - } else if (result.expectedSubDir) { - this.notificationService.error("Your Radarr Base URL must be set to " + result.expectedSubDir); - } else { - this.notificationService.error("We could not connect to Radarr!"); - } - }); - } - -public onSubmit(form: FormGroup) { - if (form.invalid) { - this.notificationService.error("Please check your entered values"); + const radarrForm = form.controls.radarr as FormGroup; + const radarr4KForm = form.controls.radarr4K as FormGroup; + if (radarrForm.controls.enabled && (radarrForm.controls.defaultQualityProfile.value === "-1" || radarrForm.controls.defaultRootPath.value === "Please Select")) { + this.notificationService.error("Please check your entered values for Radarr"); return; } - if (form.controls.defaultQualityProfile.value === "-1" || form.controls.defaultRootPath.value === "Please Select") { - this.notificationService.error("Please check your entered values"); + if (radarr4KForm.controls.enabled && (radarr4KForm.controls.defaultQualityProfile.value === "-1" || radarr4KForm.controls.defaultRootPath.value === "Please Select")) { + this.notificationService.error("Please check your entered values for Radarr 4K"); return; } - const settings = form.value; + const settings = form.value; this.settingsService.saveRadarr(settings).subscribe(x => { if (x) { this.notificationService.success("Successfully saved Radarr settings"); diff --git a/src/Ombi/ClientApp/src/app/settings/settings.module.ts b/src/Ombi/ClientApp/src/app/settings/settings.module.ts index b486e5b26..c5a696604 100644 --- a/src/Ombi/ClientApp/src/app/settings/settings.module.ts +++ b/src/Ombi/ClientApp/src/app/settings/settings.module.ts @@ -1,76 +1,155 @@ -import { CommonModule } from "@angular/common"; -import { NgModule } from "@angular/core"; +import { + CouchPotatoService, + EmbyService, + FileDownloadService, + IssuesService, + JellyfinService, + JobService, + LidarrService, + MobileService, + NotificationMessageService, + PlexService, + RadarrService, + RequestRetryService, + SonarrService, + SystemService, + TesterService, + TheMovieDbService, + ValidationService +} from "../services"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { RouterModule, Routes } from "@angular/router"; -// import { TagInputModule } from "ngx-chips"; -import { ClipboardModule } from "ngx-clipboard"; +import { AboutComponent } from "./about/about.component"; import { AuthGuard } from "../auth/auth.guard"; import { AuthService } from "../auth/auth.service"; -import { - CouchPotatoService, EmbyService, JellyfinService, IssuesService, JobService, LidarrService, MobileService, NotificationMessageService, PlexService, RadarrService, - RequestRetryService, SonarrService, TesterService, ValidationService, SystemService, FileDownloadService, TheMovieDbService -} from "../services"; - -import { PipeModule } from "../pipes/pipe.module"; -import { AboutComponent } from "./about/about.component"; import { AuthenticationComponent } from "./authentication/authentication.component"; +import {AutoCompleteModule} from "primeng/autocomplete"; +import {CalendarModule} from "primeng/calendar"; +import { ClipboardModule } from "ngx-clipboard"; +import { CloudMobileComponent } from "./notifications/cloudmobile.coponent"; +import { CloudMobileService } from "../services/cloudmobile.service"; +import { CommonModule } from "@angular/common"; import { CouchPotatoComponent } from "./couchpotato/couchpotato.component"; import { CustomizationComponent } from "./customization/customization.component"; +import {DialogModule} from "primeng/dialog"; +import { DiscordComponent } from "./notifications/discord.component"; import { DogNzbComponent } from "./dognzb/dognzb.component"; +import { EmailNotificationComponent } from "./notifications/emailnotification.component"; import { EmbyComponent } from "./emby/emby.component"; -import { JellyfinComponent } from "./jellyfin/jellyfin.component"; import { FailedRequestsComponent } from "./failedrequests/failedrequests.component"; +import { GotifyComponent } from "./notifications/gotify.component"; +import { HubService } from "../services/hub.service"; +import {InputSwitchModule} from "primeng/inputswitch"; +import {InputTextModule} from "primeng/inputtext"; import { IssuesComponent } from "./issues/issues.component"; +import { JellyfinComponent } from "./jellyfin/jellyfin.component"; import { JobsComponent } from "./jobs/jobs.component"; import { LandingPageComponent } from "./landingpage/landingpage.component"; import { LidarrComponent } from "./lidarr/lidarr.component"; +import { LogsComponent } from "./logs/logs.component"; import { MassEmailComponent } from "./massemail/massemail.component"; -import { DiscordComponent } from "./notifications/discord.component"; -import { EmailNotificationComponent } from "./notifications/emailnotification.component"; -import { GotifyComponent } from "./notifications/gotify.component"; +import { MatDialogModule } from "@angular/material/dialog"; +import { MatMenuModule } from "@angular/material/menu"; import { MattermostComponent } from "./notifications/mattermost.component"; +import {MenuModule} from "primeng/menu"; import { MobileComponent } from "./notifications/mobile.component"; import { NewsletterComponent } from "./notifications/newsletter.component"; +import { NgModule } from "@angular/core"; import { NotificationTemplate } from "./notifications/notificationtemplate.component"; -import { PushbulletComponent } from "./notifications/pushbullet.component"; -import { PushoverComponent } from "./notifications/pushover.component"; -import { SlackComponent } from "./notifications/slack.component"; -import { TelegramComponent } from "./notifications/telegram.component"; -import { WebhookComponent } from "./notifications/webhook.component"; import { OmbiComponent } from "./ombi/ombi.component"; +import { PipeModule } from "../pipes/pipe.module"; import { PlexComponent } from "./plex/plex.component"; +import { PushbulletComponent } from "./notifications/pushbullet.component"; +import { PushoverComponent } from "./notifications/pushover.component"; import { RadarrComponent } from "./radarr/radarr.component"; +import { RadarrFormComponent } from "./radarr/components/radarr-form.component"; +import {RadioButtonModule} from "primeng/radiobutton"; +import { SettingsMenuComponent } from "./settingsmenu.component"; +import { SharedModule } from "../shared/shared.module"; import { SickRageComponent } from "./sickrage/sickrage.component"; +import { SlackComponent } from "./notifications/slack.component"; import { SonarrComponent } from "./sonarr/sonarr.component"; +import { TelegramComponent } from "./notifications/telegram.component"; import { TheMovieDbComponent } from "./themoviedb/themoviedb.component"; +import {TooltipModule} from "primeng/tooltip"; +import { TwilioComponent } from "./notifications/twilio/twilio.component"; import { UpdateComponent } from "./update/update.component"; +import { UpdateDialogComponent } from "./about/update-dialog.component"; +import { UpdateService } from "../services/update.service"; import { UserManagementComponent } from "./usermanagement/usermanagement.component"; import { VoteComponent } from "./vote/vote.component"; +import { WebhookComponent } from "./notifications/webhook.component"; +import { WhatsAppComponent } from "./notifications/twilio/whatsapp.component"; import { WikiComponent } from "./wiki.component"; -import { SettingsMenuComponent } from "./settingsmenu.component"; +// import { TagInputModule } from "ngx-chips"; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -import {AutoCompleteModule } from "primeng/autocomplete"; -import {CalendarModule } from "primeng/calendar"; -import {InputSwitchModule } from "primeng/inputswitch"; -import {InputTextModule } from "primeng/inputtext"; -import {DialogModule } from "primeng/dialog"; -import {MenuModule } from "primeng/menu"; -import {RadioButtonModule } from "primeng/radiobutton"; -import {TooltipModule } from "primeng/tooltip"; -import { MatMenuModule } from "@angular/material/menu"; -import { SharedModule } from "../shared/shared.module"; -import { HubService } from "../services/hub.service"; -import { LogsComponent } from "./logs/logs.component"; -import { TwilioComponent } from "./notifications/twilio/twilio.component"; -import { WhatsAppComponent } from "./notifications/twilio/whatsapp.component"; -import { CloudMobileComponent } from "./notifications/cloudmobile.coponent"; -import { CloudMobileService } from "../services/cloudmobile.service"; -import { UpdateService } from "../services/update.service"; -import { MatDialogModule } from "@angular/material/dialog"; -import { UpdateDialogComponent } from "./about/update-dialog.component"; const routes: Routes = [ { path: "Ombi", component: OmbiComponent, canActivate: [AuthGuard] }, @@ -145,6 +224,7 @@ const routes: Routes = [ SonarrComponent, SlackComponent, RadarrComponent, + RadarrFormComponent, EmailNotificationComponent, NotificationTemplate, PushoverComponent, diff --git a/src/Ombi/Ombi.Api.MediaServer.csproj b/src/Ombi/Ombi.Api.MediaServer.csproj new file mode 100644 index 000000000..f167146af --- /dev/null +++ b/src/Ombi/Ombi.Api.MediaServer.csproj @@ -0,0 +1,18 @@ + + + + net6.0 + 3.0.0.0 + 3.0.0.0 + + + 8.0 + Debug;Release;NonUiBuild + + + + + + + + \ No newline at end of file