Skip to content

Commit aa9a9ff

Browse files
authored
Merge pull request #6 from JeanZQ/feature-flags
Primera Bandera
2 parents ad73e3a + 8647724 commit aa9a9ff

File tree

4 files changed

+40
-7
lines changed

4 files changed

+40
-7
lines changed

Directory.Packages.props

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<PackageVersion Include="Ardalis.Specification" Version="7.0.0" />
1616
<PackageVersion Include="Ardalis.ListStartupServices" Version="1.1.4" />
1717
<PackageVersion Include="Azure.Extensions.AspNetCore.Configuration.Secrets" Version="1.3.1" />
18-
<PackageVersion Include="Azure.Identity" Version="1.10.4" />
18+
<PackageVersion Include="Azure.Identity" Version="1.13.1" />
1919
<PackageVersion Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
2020
<PackageVersion Include="BlazorInputFile" Version="0.2.0" />
2121
<PackageVersion Include="Blazored.LocalStorage" Version="4.5.0" />
@@ -32,9 +32,11 @@
3232
<PackageVersion Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="$(AspNetVersion)" />
3333
<PackageVersion Include="Microsoft.AspNetCore.Identity.UI" Version="$(AspNetVersion)" />
3434
<PackageVersion Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
35+
<PackageVersion Include="Microsoft.Azure.AppConfiguration.AspNetCore" Version="8.4.0" />
3536
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.9" />
3637
<PackageVersion Include="Microsoft.Extensions.Identity.Core" Version="$(AspNetVersion)" />
3738
<PackageVersion Include="Microsoft.Extensions.Logging.Configuration" Version="$(SystemExtensionVersion)" />
39+
<PackageVersion Include="Microsoft.FeatureManagement.AspNetCore" Version="2.10.0" />
3840
<PackageVersion Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="$(VSCodeGeneratorVersion)" />
3941
<PackageVersion Include="Microsoft.Web.LibraryManager.Build" Version="2.1.175" />
4042
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="$(EntityFramworkCoreVersion)" />

src/Web/Program.cs

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
using System.Net.Mime;
1+
using System.Net.Mime;
22
using Ardalis.ListStartupServices;
3-
using Azure.Identity;
43
using BlazorAdmin;
54
using BlazorAdmin.Services;
65
using Blazored.LocalStorage;
@@ -18,19 +17,42 @@
1817
using Microsoft.eShopWeb.Web.Configuration;
1918
using Microsoft.eShopWeb.Web.HealthChecks;
2019
using Microsoft.Extensions.Diagnostics.HealthChecks;
20+
using Microsoft.FeatureManagement;
2121

2222
var builder = WebApplication.CreateBuilder(args);
23+
24+
builder.Configuration.AddAzureAppConfiguration(options =>
25+
{
26+
var connection = builder.Configuration.GetConnectionString("AppConfig");
27+
28+
options.Connect(connection)
29+
.UseFeatureFlags()
30+
.ConfigureRefresh(refresh =>
31+
{
32+
// Este registra la flag principal y habilita refrescar toda la configuración
33+
refresh.Register("EnableShoppingCart", refreshAll: true)
34+
.SetCacheExpiration(TimeSpan.FromSeconds(10)); // refresca cada 10 segundos
35+
});
36+
});
37+
38+
39+
builder.Services.AddAzureAppConfiguration();
40+
builder.Services.AddFeatureManagement();
41+
2342
builder.Logging.AddConsole();
2443

25-
if (builder.Environment.IsDevelopment() || builder.Environment.EnvironmentName == "Docker"){
44+
if (builder.Environment.IsDevelopment() || builder.Environment.EnvironmentName == "Docker")
45+
{
2646
// Configure SQL Server (local)
2747
Microsoft.eShopWeb.Infrastructure.Dependencies.ConfigureServices(builder.Configuration, builder.Services);
2848
}
29-
else{
49+
else
50+
{
3051
// Configure SQL Server (prod)
3152
Microsoft.eShopWeb.Infrastructure.Dependencies.ConfigureServices(builder.Configuration, builder.Services);
3253
}
3354

55+
3456
builder.Services.AddCookieSettings();
3557

3658
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
@@ -170,6 +192,8 @@
170192
app.UseHsts();
171193
}
172194

195+
app.UseAzureAppConfiguration(); // Nuevo
196+
173197
app.UseHttpsRedirection();
174198
app.UseBlazorFrameworkFiles();
175199
app.UseStaticFiles();
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
@model BasketComponentViewModel
2+
@using Microsoft.FeatureManagement
3+
@inject IFeatureManager FeatureManager
24

35
@{
46
ViewData["Title"] = "My Basket";
57
}
68

7-
<a class="esh-basketstatus" asp-page="/Basket/Index">
9+
@if (await FeatureManager.IsEnabledAsync("EnableShoppingCart"))
10+
{
11+
<a class="esh-basketstatus" asp-page="/Basket/Index">
812
<div class="esh-basketstatus-image">
913
<img src="~/images/cart.png" />
1014
</div>
1115
<div class="esh-basketstatus-badge">
1216
@Model.ItemsCount
1317
</div>
14-
</a>
18+
</a>
19+
}

src/Web/Web.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@
2121
<PackageReference Include="MediatR" />
2222
<PackageReference Include="BuildBundlerMinifier" Condition="'$(Configuration)'=='Release'" />
2323
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" />
24+
<PackageReference Include="Microsoft.Azure.AppConfiguration.AspNetCore" />
2425
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" />
2526
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" />
27+
<PackageReference Include="Microsoft.FeatureManagement.AspNetCore" />
2628
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" />
2729
<PackageReference Include="Microsoft.Web.LibraryManager.Build" />
2830
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" />

0 commit comments

Comments
 (0)