Изменение инструкции получения токена яндекса
This commit is contained in:
@@ -1,65 +1,52 @@
|
||||
@page "/profile"
|
||||
<PageTitle>Профиль - Playlist Share</PageTitle>
|
||||
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using PlaylistShared.Pwa.Components.Profile
|
||||
@using PlaylistShared.Shared.DTO
|
||||
@attribute [Authorize]
|
||||
@inject HttpClient Http
|
||||
@inject ISnackbar Snackbar
|
||||
@inject IDialogService DialogService
|
||||
@using PlaylistShared.Pwa.Components.Profile
|
||||
@using PlaylistShared.Shared.Profile
|
||||
|
||||
<MudContainer MaxWidth="MaxWidth.Small" Class="mt-8">
|
||||
<MudCard>
|
||||
<MudCardHeader>
|
||||
<CardHeaderContent>
|
||||
<MudText Typo="Typo.h5">Личный кабинет</MudText>
|
||||
</CardHeaderContent>
|
||||
</MudCardHeader>
|
||||
<MudCardContent>
|
||||
<MudStack Row Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center" Class="mb-4">
|
||||
<MudText Typo="Typo.body2">
|
||||
Здесь вы можете указать токен доступа к Яндекс.Музыке.
|
||||
</MudText>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.HelpOutline"
|
||||
Color="Color.Info"
|
||||
OnClick="() => _instructionDrawerOpen = true"
|
||||
Title="Как получить токен?" />
|
||||
</MudStack>
|
||||
<MudText Typo="Typo.h4" Class="mb-6">Профиль</MudText>
|
||||
|
||||
<MudTextField @bind-Value="_token" Label="Токен Яндекс.Музыки" Variant="Variant.Outlined" FullWidth="true" />
|
||||
<MudStack Spacing="4">
|
||||
@*
|
||||
<!-- Секция почты -->
|
||||
<MudCard>
|
||||
<MudCardContent>
|
||||
<MudText Typo="Typo.h6" GutterBottom="true">Данные аккаунта</MudText>
|
||||
<MudTextField @bind-Value="_email" Label="Электронная почта" ReadOnly="true" Variant="Variant.Outlined" Margin="Margin.Dense" />
|
||||
<MudButton Variant="Variant.Text" Color="Color.Primary" Class="mt-2" Disabled="true">Сменить почту</MudButton>
|
||||
</MudCardContent>
|
||||
</MudCard>
|
||||
*@
|
||||
|
||||
<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>
|
||||
<!-- Секция Яндекс.Музыки -->
|
||||
<MudCard>
|
||||
<MudCardContent>
|
||||
<MudStack Row Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center">
|
||||
<MudStack Spacing="0">
|
||||
<MudText Typo="Typo.h6">Яндекс.Музыка</MudText>
|
||||
<MudText Typo="Typo.body2" Color="@(_hasToken? Color.Success: Color.Error)">
|
||||
@_statusText
|
||||
</MudText>
|
||||
</MudStack>
|
||||
<MudButton Variant="Variant.Outlined"
|
||||
Color="Color.Primary"
|
||||
OnClick="OpenTokenDialog">
|
||||
@(_hasToken ? "Переподключить" : "Установить")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
</MudCardContent>
|
||||
</MudCard>
|
||||
</MudStack>
|
||||
</MudContainer>
|
||||
|
||||
<!-- Выдвижная панель с инструкцией -->
|
||||
<MudDrawer @bind-Open="_instructionDrawerOpen"
|
||||
Anchor="Anchor.Right"
|
||||
Variant="DrawerVariant.Temporary"
|
||||
Elevation="3"
|
||||
Width="500px"
|
||||
MiniWidth="0px">
|
||||
<MudDrawerHeader>
|
||||
<MudText Typo="Typo.h6">Как получить токен Яндекс.Музыки</MudText>
|
||||
</MudDrawerHeader>
|
||||
<MudDivider />
|
||||
<YandexTokenInstructions />
|
||||
</MudDrawer>
|
||||
|
||||
@code {
|
||||
private string _token = "";
|
||||
private string _email = "user@example.com"; // Загрузите из стейта или API
|
||||
private string _statusText = "Загрузка...";
|
||||
private bool _instructionDrawerOpen = false;
|
||||
private bool _hasToken;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
await LoadStatus();
|
||||
}
|
||||
protected override async Task OnInitializedAsync() => await LoadStatus();
|
||||
|
||||
private async Task LoadStatus()
|
||||
{
|
||||
@@ -68,36 +55,19 @@
|
||||
var response = await Http.GetFromJsonAsync<ApiResponse<YandexTokenStatus>>("/api/yandextoken/status");
|
||||
if (response?.Success == true)
|
||||
{
|
||||
_statusText = response.Data.HasToken
|
||||
? $"Токен установлен{(response.Data.IsValid ? "" : " (просрочен)")}"
|
||||
: "Токен не установлен";
|
||||
_hasToken = response.Data.HasToken;
|
||||
_statusText = _hasToken ? "Аккаунт подключен" : "Аккаунт не подключен";
|
||||
}
|
||||
}
|
||||
catch { _statusText = "Не удалось загрузить статус"; }
|
||||
catch { _statusText = "Ошибка загрузки статуса"; }
|
||||
}
|
||||
|
||||
private async Task SaveToken()
|
||||
private async Task OpenTokenDialog()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(_token))
|
||||
{
|
||||
Snackbar.Add("Введите токен", Severity.Warning);
|
||||
return;
|
||||
}
|
||||
var options = new DialogOptions { CloseOnEscapeKey = true, MaxWidth = MaxWidth.Small, FullWidth = true };
|
||||
var dialog = await DialogService.ShowAsync<YandexTokenDialog>("", options);
|
||||
var result = await dialog.Result;
|
||||
|
||||
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);
|
||||
}
|
||||
if (!result.Canceled) await LoadStatus();
|
||||
}
|
||||
|
||||
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