From 27c8f92a3b4e5cae33e346eca5910c36c5dbc17b Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 20 Apr 2026 11:32:45 +0200 Subject: [PATCH] Refactor API base URL config to use AppSettings class Replaced direct IConfiguration usage with a strongly-typed AppSettings class for accessing the API base URL. Registered AppSettings with DI and updated Dashboard.razor to use IOptions. Updated using statements and DI setup for improved type safety and centralized configuration management. --- DbFirst.BlazorWebApp/AppSettings.cs | 6 ++++++ DbFirst.BlazorWebApp/Components/Pages/Dashboard.razor | 6 +++--- DbFirst.BlazorWebApp/Components/_Imports.razor | 4 +++- DbFirst.BlazorWebApp/Program.cs | 2 ++ 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 DbFirst.BlazorWebApp/AppSettings.cs diff --git a/DbFirst.BlazorWebApp/AppSettings.cs b/DbFirst.BlazorWebApp/AppSettings.cs new file mode 100644 index 0000000..39ee9c9 --- /dev/null +++ b/DbFirst.BlazorWebApp/AppSettings.cs @@ -0,0 +1,6 @@ +namespace DbFirst.BlazorWebApp; + +public class AppSettings +{ + public string ApiBaseUrl { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/DbFirst.BlazorWebApp/Components/Pages/Dashboard.razor b/DbFirst.BlazorWebApp/Components/Pages/Dashboard.razor index 9a64dbd..727b154 100644 --- a/DbFirst.BlazorWebApp/Components/Pages/Dashboard.razor +++ b/DbFirst.BlazorWebApp/Components/Pages/Dashboard.razor @@ -1,7 +1,7 @@ @page "/dashboard" @page "/dashboards/{DashboardId?}" @implements IAsyncDisposable -@inject Microsoft.Extensions.Configuration.IConfiguration Configuration +@inject IOptions AppSettingsOptions @inject NavigationManager Navigation @inject DashboardApiClient DashboardApi @@ -45,8 +45,8 @@ private string SelectedDashboardId { get; set; } = string.Empty; private string DashboardKey => $"{SelectedDashboardId}-{(IsDesigner ? "designer" : "viewer")}"; - private string DashboardEndpoint => $"{Configuration["ApiBaseUrl"]?.TrimEnd('/')}/api/dashboard"; - private string HubEndpoint => $"{Configuration["ApiBaseUrl"]?.TrimEnd('/')}/hubs/dashboards"; + private string DashboardEndpoint => $"{AppSettingsOptions.Value.ApiBaseUrl.TrimEnd('/')}/api/dashboard"; + private string HubEndpoint => $"{AppSettingsOptions.Value.ApiBaseUrl.TrimEnd('/')}/hubs/dashboards"; protected override async Task OnInitializedAsync() { diff --git a/DbFirst.BlazorWebApp/Components/_Imports.razor b/DbFirst.BlazorWebApp/Components/_Imports.razor index 8c2fedc..c89e2e3 100644 --- a/DbFirst.BlazorWebApp/Components/_Imports.razor +++ b/DbFirst.BlazorWebApp/Components/_Imports.razor @@ -17,4 +17,6 @@ @using DevExpress.Blazor @using DevExpress.DashboardBlazor @using DevExpress.DashboardWeb -@using DevExpress.Data.Filtering \ No newline at end of file +@using DevExpress.Data.Filtering +@using Microsoft.Extensions.Options +@using DbFirst.BlazorWebApp \ No newline at end of file diff --git a/DbFirst.BlazorWebApp/Program.cs b/DbFirst.BlazorWebApp/Program.cs index 9955b35..255352c 100644 --- a/DbFirst.BlazorWebApp/Program.cs +++ b/DbFirst.BlazorWebApp/Program.cs @@ -1,3 +1,4 @@ +using DbFirst.BlazorWebApp; using DbFirst.BlazorWebApp.Components; using DbFirst.BlazorWebApp.Services; using DevExpress.Blazor; @@ -13,6 +14,7 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); var apiBaseUrl = builder.Configuration["ApiBaseUrl"]; +builder.Services.Configure(builder.Configuration); void ConfigureClient(HttpClient client) { if (!string.IsNullOrWhiteSpace(apiBaseUrl))