Moved version settings to version.json #294

This commit is contained in:
2023-08-14 19:01:10 +02:00
parent 22bdf13835
commit a482c72a56
6 changed files with 75 additions and 47 deletions

View File

@@ -0,0 +1,21 @@
import { SoftwareVersion } from "./software-version";
import { Theme } from '../view/theme';
export interface AppAndVersionSettings {
ApiURL: string;
PrivacyURL: string;
ImprintURL: string;
Themes: Theme[];
WebVersion: SoftwareVersion;
}
export interface AppSettings {
ApiURL: string;
PrivacyURL: string;
ImprintURL: string;
Themes: Theme[];
}
export interface VersionSettings {
WebVersion: SoftwareVersion;
}

View File

@@ -1,10 +0,0 @@
import { SoftwareVersion } from "./software-version";
import { Theme } from '../view/theme';
export interface Appsettings {
ApiURL: string;
PrivacyURL: string;
ImprintURL: string;
WebVersion: SoftwareVersion;
Themes: Theme[];
}

View File

@@ -1,76 +1,86 @@
import { HttpClient } from "@angular/common/http";
import { Injectable } from "@angular/core";
import { throwError } from "rxjs";
import { forkJoin, throwError } from "rxjs";
import { catchError } from "rxjs/operators";
import { Appsettings } from "src/app/models/config/appsettings";
import { AppAndVersionSettings, AppSettings, VersionSettings } from "src/app/models/config/app-settings";
import { SoftwareVersion } from "src/app/models/config/software-version";
import { Theme } from "src/app/models/view/theme";
@Injectable({
providedIn: 'root'
providedIn: "root"
})
export class SettingsService {
appsettings!: Appsettings;
appSettings!: AppSettings;
versionSettings!: VersionSettings;
constructor(
private http: HttpClient
) { }
) {
}
loadSettings(): Promise<Appsettings> {
loadSettings(version: boolean = false): Promise<AppAndVersionSettings> {
return new Promise((resolve, reject) => {
this.http.get<Appsettings>('../../assets/config.json')
.pipe(catchError(error => {
reject(error);
return throwError(() => error);
})).subscribe(settings => {
this.appsettings = settings;
resolve(settings);
});
forkJoin([
this.http.get<AppSettings>("../../assets/config.json")
.pipe(catchError(error => {
reject(error);
return throwError(() => error);
})),
this.http.get<VersionSettings>("../../assets/version.json")
.pipe(catchError(error => {
reject(error);
return throwError(() => error);
}))
]).subscribe(settings => {
this.appSettings = settings[0];
this.versionSettings = settings[1];
resolve({...settings[0], ...settings[1]});
});
});
}
public getApiURL(): string {
if (!this.appsettings || !this.appsettings.ApiURL) {
console.error('ApiUrl is not set!');
if (!this.appSettings || !this.appSettings.ApiURL) {
console.error("ApiUrl is not set!");
return "";
}
return this.appsettings.ApiURL;
return this.appSettings.ApiURL;
}
public getPrivacyURL(): string {
if (!this.appsettings || !this.appsettings.PrivacyURL) {
console.error('PrivacyURL is not set!');
if (!this.appSettings || !this.appSettings.PrivacyURL) {
console.error("PrivacyURL is not set!");
return "";
}
return this.appsettings.PrivacyURL;
return this.appSettings.PrivacyURL;
}
public getImprintURL(): string {
if (!this.appsettings || !this.appsettings.ImprintURL) {
console.error('ImprintURL is not set!');
if (!this.appSettings || !this.appSettings.ImprintURL) {
console.error("ImprintURL is not set!");
return "";
}
return this.appsettings.ImprintURL;
return this.appSettings.ImprintURL;
}
public getWebVersion(): SoftwareVersion | null {
if (!this.appsettings || !this.appsettings.WebVersion) {
console.error('WebVersion is not set!');
if (!this.versionSettings || !this.versionSettings.WebVersion) {
console.error("WebVersion is not set!");
return null;
}
return new SoftwareVersion(
this.appsettings.WebVersion.Major,
this.appsettings.WebVersion.Minor,
this.appsettings.WebVersion.Micro
this.versionSettings.WebVersion.Major,
this.versionSettings.WebVersion.Minor,
this.versionSettings.WebVersion.Micro
);
}
public getThemes(): Theme[] | null {
if (!this.appsettings || !this.appsettings.Themes) {
console.error('Themes is not set!');
if (!this.appSettings || !this.appSettings.Themes) {
console.error("Themes is not set!");
return null;
}
return this.appsettings.Themes;
return this.appSettings.Themes;
}
}

View File

@@ -0,0 +1,7 @@
{
"WebVersion": {
"Major": "1",
"Minor": "0",
"Micro": "dev294_frontend_version"
}
}