Skip to content

Commit 298aecd

Browse files
committed
refactor: project menus from entry attributes
1 parent d7cef32 commit 298aecd

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

src/Modules/Home/Home.UI.Avalonia/HomeAvaloniaModule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Modulus.Modules.Home.UI.Avalonia;
1010
/// Home Module Avalonia UI - declares Avalonia-specific navigation.
1111
/// </summary>
1212
[DependsOn(typeof(HomeModule))]
13-
[AvaloniaMenu("Home", typeof(HomeViewModel), Icon = IconKind.Home, Order = 1)]
13+
[AvaloniaMenu("home", "Home", typeof(HomeViewModel), Icon = IconKind.Home, Order = 1)]
1414
public class HomeAvaloniaModule : AvaloniaModuleBase
1515
{
1616
public override async Task OnApplicationInitializationAsync(IModuleInitializationContext context, CancellationToken cancellationToken = default)

src/Modules/Home/Home.UI.Blazor/HomeBlazorModule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace Modulus.Modules.Home.UI.Blazor;
99
/// Home Module Blazor UI - declares Blazor-specific navigation.
1010
/// </summary>
1111
[DependsOn(typeof(HomeModule))]
12-
// Menu is declared in extension.vsixmanifest, no [BlazorMenu] needed here
12+
[BlazorMenu("home", "Home", "/home", Icon = IconKind.Home, Order = 1)]
1313
public class HomeBlazorModule : ModulusPackage
1414
{
1515
public override Task OnApplicationInitializationAsync(IModuleInitializationContext context, CancellationToken cancellationToken = default)

src/Modulus.Core/Installation/ModuleInstallerService.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ public async Task InstallFromPathAsync(string packagePath, bool isSystem = false
115115
}
116116
}
117117

118+
var moduleLocation = (isSystem && requestedBottom) ? MenuLocation.Bottom : MenuLocation.Main;
119+
118120
// Compute manifest hash for change detection
119121
var manifestHash = await VsixManifestReader.ComputeHashAsync(manifestPath, cancellationToken);
120122

@@ -132,6 +134,10 @@ public async Task InstallFromPathAsync(string packagePath, bool isSystem = false
132134
? null
133135
: JsonSerializer.Serialize(validationResult.Errors);
134136

137+
var existing = await _moduleRepository.GetAsync(identity.Id, cancellationToken);
138+
var isEnabled = existing?.IsEnabled ?? validationResult.IsValid;
139+
if (!validationResult.IsValid) isEnabled = false;
140+
135141
var moduleEntity = new ModuleEntity
136142
{
137143
Id = identity.Id,
@@ -146,7 +152,7 @@ public async Task InstallFromPathAsync(string packagePath, bool isSystem = false
146152
ManifestHash = manifestHash,
147153
ValidatedAt = DateTime.UtcNow,
148154
IsSystem = isSystem,
149-
IsEnabled = preserveIsEnabled,
155+
IsEnabled = isEnabled,
150156
MenuLocation = moduleLocation,
151157
State = moduleState,
152158
ValidationErrors = validationErrors

0 commit comments

Comments
 (0)