@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; } }
}