@inject IUserSessionService Session @inject SharepointToolbox.Web.Infrastructure.Persistence.ProfileRepository ProfileRepo @inject TranslationSource T @implements IDisposable @using SharepointToolbox.Web.Core.Models @using SharepointToolbox.Web.Services.Session
@if (_open) {
@if (_profiles.Count == 0) {
@T["profile.selector.empty"]
} else { @foreach (var p in _profiles) { var active = Session.CurrentProfile?.Id == p.Id; } } ⚙️ @T["profile.selector.manage"]
}
@code { private bool _open; private List _profiles = new(); protected override async Task OnInitializedAsync() { Session.ProfileChanged += OnProfileChanged; await LoadProfilesAsync(); } private void OnProfileChanged() => InvokeAsync(StateHasChanged); private async Task LoadProfilesAsync() => _profiles = (await ProfileRepo.LoadAsync()).ToList(); private async Task ToggleAsync() { _open = !_open; // Refresh the list when opening so newly created/edited profiles show up without a reload. if (_open) await LoadProfilesAsync(); } private void Close() => _open = false; private void Select(TenantProfile p) { _open = false; Session.SetProfile(p); } public void Dispose() => Session.ProfileChanged -= OnProfileChanged; }