@page "/settings"
@attribute [Authorize]
@inject IUserSessionService Session
@inject IJSRuntime JS
@rendermode InteractiveServer
@using Microsoft.JSInterop
Settings
Display
@if (_saved) { Settings saved.
}
@code {
private string _lang = "en", _theme = "System";
private bool _autoTakeOwnership, _saved;
protected override void OnInitialized()
{
var s = Session.Settings;
_lang = s.Lang;
_theme = s.Theme is "System" or "Light" ? s.Theme : "System";
_autoTakeOwnership = s.AutoTakeOwnership;
}
private async Task Save()
{
Session.UpdateSettings(new AppSettings { Lang = _lang, Theme = _theme, AutoTakeOwnership = _autoTakeOwnership });
SharepointToolbox.Web.Localization.TranslationSource.Instance.SetCulture(_lang);
await JS.InvokeVoidAsync("sptb.setTheme", _theme);
_saved = true;
StateHasChanged();
_ = Task.Delay(2000).ContinueWith(_ => { _saved = false; InvokeAsync(StateHasChanged); });
}
}