diff --git a/src/Turnierplan.Adapter/TurnierplanClient.cs b/src/Turnierplan.Adapter/TurnierplanClient.cs index 9792b6fc..fa643fc9 100644 --- a/src/Turnierplan.Adapter/TurnierplanClient.cs +++ b/src/Turnierplan.Adapter/TurnierplanClient.cs @@ -16,19 +16,16 @@ public sealed partial class TurnierplanClient : IDisposable { private const string TurnierplanVersionHeaderName = "x-turnierplan-version"; - private static readonly string __turnierplanAdapterVersion; + private static readonly string __turnierplanAdapterVersion = + typeof(TurnierplanClient).Assembly.GetName().Version?.ToString() + ?? throw new InvalidOperationException("Could not determine Turnierplan.Adapter version from assembly name."); + private static readonly JsonSerializerOptions __serializerOptions = new() { PropertyNameCaseInsensitive = true, Converters = { new JsonStringEnumConverter() } }; - static TurnierplanClient() - { - __turnierplanAdapterVersion = typeof(TurnierplanClient).Assembly.GetName().Version?.ToString() - ?? throw new InvalidOperationException("Could not determine Turnierplan.Adapter version from assembly name."); - } - private readonly HttpClient _httpClient; private readonly bool _disposeHttpClient; private readonly bool _disableIdVerification; diff --git a/src/Turnierplan.App/Client/src/app/portal/components/document-config-match-plan/document-config-match-plan.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/document-config-match-plan/document-config-match-plan.component.ts index acc8f89c..a3157610 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/document-config-match-plan/document-config-match-plan.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/document-config-match-plan/document-config-match-plan.component.ts @@ -15,7 +15,7 @@ export class DocumentConfigMatchPlanComponent extends DocumentConfigComponent(); + private readonly destroyed$ = new Subject(); constructor(formBuilder: FormBuilder, @Inject(CURRENT_CONFIGURATION) config: MatchPlanDocumentConfiguration) { super(); diff --git a/src/Turnierplan.App/Client/src/app/portal/components/document-config-receipts/document-config-receipts.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/document-config-receipts/document-config-receipts.component.ts index 2c4f1155..4df6d873 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/document-config-receipts/document-config-receipts.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/document-config-receipts/document-config-receipts.component.ts @@ -111,7 +111,7 @@ export class DocumentConfigReceiptsComponent extends DocumentConfigComponent +a - +b); } protected removeReducedAmountEntry(amountKey: string): void { diff --git a/src/Turnierplan.App/Client/src/app/portal/components/document-manager/document-manager.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/document-manager/document-manager.component.ts index 2f4d512e..f5ea0d89 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/document-manager/document-manager.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/document-manager/document-manager.component.ts @@ -41,7 +41,7 @@ export class DocumentManagerComponent { protected currentlyLoadingPreview?: string; protected currentlyUpdatingName?: string; - private configComponents = new Map>>(); + private readonly configComponents = new Map>>(); constructor( private readonly injector: Injector, @@ -67,7 +67,7 @@ export class DocumentManagerComponent { return; } - const configComponent = this.configComponents.get(document.type as DocumentType); + const configComponent = this.configComponents.get(document.type); if (configComponent === undefined) { return; } @@ -204,7 +204,7 @@ export class DocumentManagerComponent { } private getDocumentConfig(document: DocumentDto): Observable { - switch (document.type as DocumentType) { + switch (document.type) { case DocumentType.MatchPlan: return this.documentService.getMatchPlanDocumentConfiguration({ id: document.id }); case DocumentType.Receipts: @@ -215,7 +215,7 @@ export class DocumentManagerComponent { } private getDocumentConfigSaveFunction(document: DocumentDto): (config: DocumentConfiguration) => Observable { - switch (document.type as DocumentType) { + switch (document.type) { case DocumentType.MatchPlan: return (config) => this.documentService.setMatchPlanDocumentConfiguration({ id: document.id, body: config as MatchPlanDocumentConfiguration }); diff --git a/src/Turnierplan.App/Client/src/app/portal/components/duration-picker/duration-picker.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/duration-picker/duration-picker.component.ts index 7901fb27..26507705 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/duration-picker/duration-picker.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/duration-picker/duration-picker.component.ts @@ -17,7 +17,7 @@ export class DurationPickerComponent { public set duration(value: string) { // The regex matches duration strings from the .NET TimeSpan class. This allows for the 'days' value // to be set, however the resulting minutes/seconds is clamped to be at most 23h:59m:59s - const match = value.match(/^(?:(?\d+)\.)?(?\d{2}):(?\d{2}):(?\d{2})(?:\.\d{7})?$/); + const match = /^(?:(?\d+)\.)?(?\d{2}):(?\d{2}):(?\d{2})(?:\.\d{7})?$/.exec(value); if (match?.groups) { let hours = +match.groups['h']; diff --git a/src/Turnierplan.App/Client/src/app/portal/components/image-chooser/image-chooser.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/image-chooser/image-chooser.component.ts index 7f865d7d..1b48bd17 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/image-chooser/image-chooser.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/image-chooser/image-chooser.component.ts @@ -111,7 +111,7 @@ export class ImageChooserComponent { next: () => { if (deleteImageId === this.currentImageId) { // Close modal with undefined to trigger re-load of tournament page - this.modal.close(undefined); + this.modal.close(); } else { this.loadImages(); } diff --git a/src/Turnierplan.App/Client/src/app/portal/components/match-tree/match-tree.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/match-tree/match-tree.component.ts index a8b59b5c..56628a65 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/match-tree/match-tree.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/match-tree/match-tree.component.ts @@ -97,7 +97,7 @@ export class MatchTreeComponent implements OnChanges, AfterViewInit { for (const match of currentColumnMatches) { for (const teamSelector of [match.teamSelectorKeyA, match.teamSelectorKeyB]) { - if (!(teamSelector.charAt(0) === 'W' || teamSelector.charAt(0) === 'L')) { + if (!(teamSelector.startsWith('W') || teamSelector.startsWith('L'))) { dependentMatchIds.push(undefined); continue; } diff --git a/src/Turnierplan.App/Client/src/app/portal/components/rename-dialog/rename-dialog.component.ts b/src/Turnierplan.App/Client/src/app/portal/components/rename-dialog/rename-dialog.component.ts index bc8686b8..33bd5c66 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/rename-dialog/rename-dialog.component.ts +++ b/src/Turnierplan.App/Client/src/app/portal/components/rename-dialog/rename-dialog.component.ts @@ -55,7 +55,7 @@ export class RenameDialogComponent { } } else if (sanitized.length === 0 && this.allowReset) { if (sanitizedInitial.length > 0) { - this.modal.close(undefined); + this.modal.close(); } else { this.modal.dismiss(); } diff --git a/src/Turnierplan.App/Client/src/app/portal/components/validation-error-dialog/validation-error-dialog.component.html b/src/Turnierplan.App/Client/src/app/portal/components/validation-error-dialog/validation-error-dialog.component.html index aa5b005a..1bc29fde 100644 --- a/src/Turnierplan.App/Client/src/app/portal/components/validation-error-dialog/validation-error-dialog.component.html +++ b/src/Turnierplan.App/Client/src/app/portal/components/validation-error-dialog/validation-error-dialog.component.html @@ -5,8 +5,15 @@