| 11-html-export-branding |
04 |
ui |
| wpf |
| mvvm |
| graph-api |
| entra |
| branding |
| logo |
|
| phase |
provides |
| 10-branding-data-foundation |
IBrandingService, BrandingService, ProfileService, LogoData, GraphClientFactory |
|
|
| UpdateProfileAsync on ProfileService for persisting profile changes |
| ImportLogoFromBytesAsync on IBrandingService for raw byte validation |
| BrowseMspLogoCommand and ClearMspLogoCommand on SettingsViewModel |
| BrowseClientLogoCommand, ClearClientLogoCommand, AutoPullClientLogoCommand on ProfileManagementViewModel |
|
|
| added |
patterns |
|
|
| auto-pull-entra-branding |
| logo-command-pattern |
|
|
| created |
modified |
| SharepointToolbox.Tests/ViewModels/SettingsViewModelLogoTests.cs |
| SharepointToolbox.Tests/ViewModels/ProfileManagementViewModelLogoTests.cs |
|
| SharepointToolbox/Services/ProfileService.cs |
| SharepointToolbox/Services/IBrandingService.cs |
| SharepointToolbox/Services/BrandingService.cs |
| SharepointToolbox/ViewModels/Tabs/SettingsViewModel.cs |
| SharepointToolbox/ViewModels/ProfileManagementViewModel.cs |
|
|
| GraphClientFactory is not mockable (non-virtual) — tests use real instance without calling CreateClientAsync |
| ImportLogoAsync refactored to delegate to ImportLogoFromBytesAsync — eliminates code duplication |
| Type alias AppGraphClientFactory used to disambiguate from Microsoft.Graph.GraphClientFactory |
|
| Logo command pattern: browse → ImportLogoAsync → persist; clear → null + persist |
| Auto-pull pattern: Graph API org branding → ImportLogoFromBytesAsync → persist to profile |
|
|
12min |
2026-04-08 |