Добавьте файлы проекта.
This commit is contained in:
72
PlaylistShared.Pwa/Pages/Profile.razor
Normal file
72
PlaylistShared.Pwa/Pages/Profile.razor
Normal file
@@ -0,0 +1,72 @@
|
||||
@page "/profile"
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using PlaylistShared.Shared.DTO
|
||||
@attribute [Authorize]
|
||||
@inject HttpClient Http
|
||||
@inject ISnackbar Snackbar
|
||||
|
||||
<MudContainer MaxWidth="MaxWidth.Small" Class="mt-8">
|
||||
<MudCard>
|
||||
<MudCardHeader>
|
||||
<CardHeaderContent>
|
||||
<MudText Typo="Typo.h5">Личный кабинет</MudText>
|
||||
</CardHeaderContent>
|
||||
</MudCardHeader>
|
||||
<MudCardContent>
|
||||
<MudText Typo="Typo.body2" Class="mb-4">Здесь вы можете указать токен доступа к Яндекс.Музыке.</MudText>
|
||||
<MudTextField @bind-Value="_token" Label="Токен Яндекс.Музыки" Variant="Variant.Outlined" FullWidth="true" />
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="SaveToken" Class="mt-4" FullWidth="true">Сохранить токен</MudButton>
|
||||
<MudText Class="mt-4" Typo="Typo.body2">Статус: @_statusText</MudText>
|
||||
</MudCardContent>
|
||||
</MudCard>
|
||||
</MudContainer>
|
||||
|
||||
@code {
|
||||
private string _token = "";
|
||||
private string _statusText = "Загрузка...";
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await LoadStatus();
|
||||
}
|
||||
|
||||
private async Task LoadStatus()
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await Http.GetFromJsonAsync<ApiResponse<YandexTokenStatus>>("/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; } }
|
||||
}
|
||||
Reference in New Issue
Block a user