@page "/profile" @using Microsoft.AspNetCore.Authorization @using PlaylistShared.Shared.DTO @attribute [Authorize] @inject HttpClient Http @inject ISnackbar Snackbar Личный кабинет Здесь вы можете указать токен доступа к Яндекс.Музыке. Сохранить токен Статус: @_statusText @code { private string _token = ""; private string _statusText = "Загрузка..."; protected override async Task OnInitializedAsync() { await LoadStatus(); } private async Task LoadStatus() { try { var response = await Http.GetFromJsonAsync>("/api/yandextoken/status"); if (response?.Success == true) { _statusText = response.Data.HasToken ? $"Токен установлен{(response.Data.IsValid ? "" : " (просрочен)")}" : "Токен не установлен"; } } catch { _statusText = "Не удалось загрузить статус"; } } private async Task SaveToken() { if (string.IsNullOrWhiteSpace(_token)) { Snackbar.Add("Введите токен", Severity.Warning); return; } var request = new SetYandexTokenRequest { Token = _token }; var response = await Http.PostAsJsonAsync("/api/yandextoken/set", request); if (response.IsSuccessStatusCode) { Snackbar.Add("Токен сохранён", Severity.Success); await LoadStatus(); _token = ""; } else { Snackbar.Add("Ошибка сохранения токена", Severity.Error); } } public class YandexTokenStatus { public bool HasToken { get; set; } public bool IsValid { get; set; } } public class SetYandexTokenRequest { public string Token { get; set; } } }