| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- @using Grpc.Core
- @using GrpcShared.DTO
- @using GrpcShared.DTO.Auth
- @using GrpcShared.DTO.Search
- @using NemAnBlazor.Services.Interfaces
- @using System.Net
- @inject NavigationManager NavigationManager
- @inject Blazored.LocalStorage.ILocalStorageService localStorage
- @inject ITrackClientService SearchService
- @inject IAuthClientService AuthService
- @inject IIdentityClientService identityService
-
- <Bar Breakpoint="Breakpoint.Desktop"
- Background="Background.Body"
- ThemeContrast="ThemeContrast.Light">
- <BarToggler />
- <BarMenu>
- <BarStart>
- <Autocomplete TItem="SearchResponse"
- TValue="string"
- Data="@Searches"
- TextField="@(( item ) => item!.Tracks!.Items!.FirstOrDefault()!.Name)"
- ValueField="@(( item ) => item!.Tracks!.Items!.FirstOrDefault()!.Name)"
- Filter="AutocompleteFilter.StartsWith"
- Placeholder="Search..."
- FreeTyping>
-
- </Autocomplete>
- </BarStart>
- <BarEnd>
- <BarItem>
- <Button class="btn btn-success" @onclick="LoginUser">Log in</Button>
- </BarItem>
- </BarEnd>
- </BarMenu>
- </Bar>
-
- @code {
- public IEnumerable<SearchResponse>? Searches;
- private string? search;
-
-
- private async Task LoginUser()
- {
- CodeRequest authParams = await AuthService.GetAuthParams();
- string url = $"https://accounts.spotify.com/en/authorize?client_id={authParams.ClientId}&redirect_uri={authParams.RedirectURI}&response_type={authParams.ResponseType}&scope={authParams.Scope}&show_dialog={authParams.ShowDialog}";
- NavigationManager.NavigateTo(url);
-
- }
-
- protected override async Task OnInitializedAsync(){
-
- var userInfo = await localStorage.GetItemAsync<string>("user_info");
- if (userInfo != null) NavigationManager.NavigateTo("/home");
-
-
- var user = await identityService.GetTokenByIdAsync(new GrpcShared.DTO.Db.DbRequestMessage
- {
- Id = userInfo!
- });
-
- TokenMessage tokenM = new TokenMessage { Token = user.Token, RefreshToken = user.RefreshToken };
-
- SearchRequest request = new() { Query = search, Type = "track", Token = user.Token };
-
- try
- {
- Searches = await SearchService.GetListSearchAsync(request);
-
- if (Searches == null)
- {
- string? tempToken = await SpotifyHelper.TryRefreshToken(AuthService, tokenM, user, localStorage, identityService);
- }
-
- await base.OnInitializedAsync();
- }
- catch (RpcException e)
- {
- if (e.StatusCode == StatusCode.Cancelled)
- {
- return;
- }
- throw;
- }
-
- }
- }
|