feat(02-07): create PermissionsView XAML + code-behind and register DI
- Created PermissionsView.xaml with left scan-config panel and right results DataGrid - Created PermissionsView.xaml.cs wiring ViewModel via IServiceProvider, factory for SitePickerDialog - Updated App.xaml.cs: registered IPermissionsService, ISiteListService, CsvExportService, HtmlExportService, PermissionsViewModel, PermissionsView, SitePickerDialog, and Func<TenantProfile, SitePickerDialog> factory; also registered ISessionManager -> SessionManager - Updated MainWindow.xaml: replaced FeatureTabBase stub with named PermissionsTabItem - Updated MainWindow.xaml.cs: wires PermissionsTabItem.Content from DI-resolved PermissionsView - Added CurrentProfile public accessor, SitesSelectedLabel computed property, and IsMaxDepth toggle property to PermissionsViewModel - Build: 0 errors, 0 warnings. Tests: 60 passed, 3 skipped (live/interactive)
This commit is contained in:
@@ -3,10 +3,12 @@ using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Serilog;
|
||||
using SharepointToolbox.Core.Models;
|
||||
using SharepointToolbox.Infrastructure.Auth;
|
||||
using SharepointToolbox.Infrastructure.Logging;
|
||||
using SharepointToolbox.Infrastructure.Persistence;
|
||||
using SharepointToolbox.Services;
|
||||
using SharepointToolbox.Services.Export;
|
||||
using SharepointToolbox.ViewModels;
|
||||
using SharepointToolbox.ViewModels.Tabs;
|
||||
using SharepointToolbox.Views.Dialogs;
|
||||
@@ -77,6 +79,7 @@ public partial class App : Application
|
||||
services.AddSingleton(_ => new SettingsRepository(Path.Combine(appData, "settings.json")));
|
||||
services.AddSingleton<MsalClientFactory>();
|
||||
services.AddSingleton<SessionManager>();
|
||||
services.AddSingleton<ISessionManager>(sp => sp.GetRequiredService<SessionManager>());
|
||||
services.AddSingleton<ProfileService>();
|
||||
services.AddSingleton<SettingsService>();
|
||||
services.AddSingleton<MainWindowViewModel>();
|
||||
@@ -84,6 +87,18 @@ public partial class App : Application
|
||||
services.AddTransient<SettingsViewModel>();
|
||||
services.AddTransient<ProfileManagementDialog>();
|
||||
services.AddTransient<SettingsView>();
|
||||
|
||||
// Phase 2: Permissions
|
||||
services.AddTransient<IPermissionsService, PermissionsService>();
|
||||
services.AddTransient<ISiteListService, SiteListService>();
|
||||
services.AddTransient<CsvExportService>();
|
||||
services.AddTransient<HtmlExportService>();
|
||||
services.AddTransient<PermissionsViewModel>();
|
||||
services.AddTransient<PermissionsView>();
|
||||
services.AddTransient<SitePickerDialog>();
|
||||
services.AddTransient<Func<TenantProfile, SitePickerDialog>>(sp =>
|
||||
profile => new SitePickerDialog(sp.GetRequiredService<ISiteListService>(), profile));
|
||||
|
||||
services.AddSingleton<MainWindow>();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user