@page "/home"
@using Grpc.Core
@using GrpcShared.DTO
@using GrpcShared.DTO.Db
@using GrpcShared.DTO.Track
@using NemAnBlazor.Services.Interfaces
@using System.Net
@inject Blazored.LocalStorage.ILocalStorageService localStorage
@inject IStatsClientService spotifyService
@inject ITrackClientService trackService
@inject IAuthClientService AuthService
@inject NavigationManager NavigationMgr
@inject IIdentityClientService identityService
Home
login radi
@code {
protected override async Task OnInitializedAsync()
{
CurrentTrackResponse track;
string tokenS = "", refreshT = "";
string userId = await localStorage.GetItemAsync("user_info");
if (userId != null)
{
//get token from identity
var userResponse = await identityService.GetTokenByIdAsync(new GrpcShared.DTO.Db.DbRequestMessage { Id = userId });
if (userResponse != null)
{
tokenS = userResponse.Token;
refreshT = userResponse.RefreshToken;
}
else {
await localStorage.RemoveItemAsync("user_info");
NavigationMgr.NavigateTo("/");
}
}
//tokenS = "BQBMgFm6jnFNWWeZEMGIRP_f-ENPid7Kw8JubAyuWAe4JK0S1DPFGlaAdZ_Fey6ePkCnz8-cqC0oyRmrciWUy5ISUTQKDe8PTQn4iBRMYCgM0n4GnS1xAErHJcm4Vpu2TAngk-4vQUOfTQRcedNTfCaHKP4uFJgTlTI7JHGrtB-_EZLnFcZ2OQe31oFQIJ1wM3ZtvwnN";
TokenMessage token = new() { Token = tokenS, RefreshToken = refreshT };
UserResponse user = new() { Id = userId, RefreshToken = refreshT };
try
{
track = await spotifyService.GetCurrentlyPlayingTrack(token);
//if token expired, refresh it
if (track.ResponseMsg == System.Net.HttpStatusCode.Unauthorized)
{
string? tempToken = await SpotifyHelper.TryRefreshToken(AuthService, token, user, localStorage, identityService);
tokenS = tempToken == null ? tokenS : tempToken;
//if refreshed token is null, that means that refresh token was invalid, so you should redirect to login
}
}
catch (RpcException e)
{
if (e.StatusCode == StatusCode.Cancelled)
{
return;
}
throw;
}
//napravi komponentu koja ce da prikazuje sta trenutno slusas i passuj joj parametre
//var trackById = await trackService.GetById(new GrpcShared.DTO.TrackByID.TrackRequest { TrackID = "4fy1A2WBTPX55mUI16TQXa", Token = tokenS });
try
{
var items = await spotifyService.GetTopItems(new GrpcShared.DTO.TopItem.TopItemRequest { Token = tokenS, IsTracks = false, Offset = 5 });
if (items.ResponseMsg == System.Net.HttpStatusCode.Unauthorized)
{
string? tempToken = await SpotifyHelper.TryRefreshToken(AuthService, token, user, localStorage, identityService);
tokenS = tempToken == null ? tokenS : tempToken;
}
}
catch (RpcException e)
{
if (e.StatusCode == StatusCode.Cancelled)
{
return;
}
throw;
}
await identityService.SaveTrackAsync(new GrpcShared.DTO.Db.SaveTrackRequest
{
TrackId = track.Item.Id,
Title = track.Item.Name,
Album = track.Item.Album.Name,
Artist = track.Item.Artists[0].Name,
UserId = userId
});
//var resp = await identityService.ListUsersAsync(new VoidMessage());
var tokenFromDb = await identityService.GetTokenByIdAsync(new GrpcShared.DTO.Db.DbRequestMessage
{
Id = userId
});
var trackByUser = await identityService.GetTrackByUserAsync(new GrpcShared.DTO.Db.DbRequestMessage
{
Id = userId
});
//await identityService.DeleteTrackAsync(new GrpcShared.DTO.Db.DbRequestMessage
// {
// Id =
// });
await identityService.SaveTrackAsync(new GrpcShared.DTO.Db.SaveTrackRequest
{
TrackId = track.Item.Id,
Title = track.Item.Name,
Album = track.Item.Album.Name,
Artist = track.Item.Artists[0].Name,
UserId = userId
});
//find id from local storage
//await identityService.DeleteUserAsync(new GrpcShared.DTO.Db.DbRequestMessage
// {
// Id = userId
// });
}
}