Implement OnCurrentUserUpdate Event

This commit is contained in:
Alan Moon 2025-07-12 11:14:22 -07:00
parent 34f478213e
commit 932ee5fe62
7 changed files with 36 additions and 45 deletions

View File

@ -17,6 +17,8 @@ namespace QtCNETAPI.Services.ApiService
internal string? sessionToken;
internal string apiUri;
public event EventHandler? OnCurrentUserUpdate;
public string? SessionToken
{
get { return sessionToken; }
@ -153,6 +155,7 @@ namespace QtCNETAPI.Services.ApiService
// anything that changes the user should tell the api service to set it again
await SetCurrentUser();
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
} else
{
serviceResponse.Success = false;
@ -181,6 +184,7 @@ namespace QtCNETAPI.Services.ApiService
// anything that changes the user should tell the api service to set it again
await SetCurrentUser();
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
}
else
{
@ -566,9 +570,6 @@ namespace QtCNETAPI.Services.ApiService
{
serviceResponse.Success = true;
serviceResponse.Data = response.Data;
// anything that changes the user should tell the api service to set it again
await SetCurrentUser();
}
return serviceResponse;
@ -597,6 +598,7 @@ namespace QtCNETAPI.Services.ApiService
// anything that changes the user should tell the api service to set it again
await SetCurrentUser();
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
}
return serviceResponse;
@ -644,6 +646,10 @@ namespace QtCNETAPI.Services.ApiService
{
serviceResponse.Success = true;
serviceResponse.Data = response.Data;
// anything that changes the user should tell the api service to set it again
await SetCurrentUser();
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
}
return serviceResponse;
@ -668,6 +674,10 @@ namespace QtCNETAPI.Services.ApiService
{
serviceResponse.Success = true;
serviceResponse.Data = response.Data;
// anything that changes the user should tell the api service to set it again
await SetCurrentUser();
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
}
return serviceResponse;
@ -787,6 +797,10 @@ namespace QtCNETAPI.Services.ApiService
{
serviceResponse.Success = true;
serviceResponse.Data = response.Data;
// anything that changes the user should tell the api service to set it again
await SetCurrentUser();
OnCurrentUserUpdate?.Invoke(this, EventArgs.Empty);
}
return serviceResponse;

View File

@ -17,6 +17,8 @@ namespace QtCNETAPI.Services.ApiService
public string? SessionToken { get; set; }
public User CurrentUser { get; }
public event EventHandler? OnCurrentUserUpdate;
public Task<ServiceResponse<string>> PingServerAsync();
public Task<ServiceResponse<List<UserInformationDto>>> GetOnlineUsersAsync();
public Task<ServiceResponse<List<UserInformationDto>>> GetAllUsersAsync();

View File

@ -150,11 +150,7 @@ namespace qtc_net_client_2
private void llblEditProfile_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
ProfileEdit frmProfileEdit = new ProfileEdit(_apiService);
var dialogResult = frmProfileEdit.ShowDialog();
if (dialogResult == DialogResult.OK)
{
MessageBox.Show("If you updated your username, hit the refresh button to see it update on your lists.\nThe top username will not update until you restart your client.");
}
frmProfileEdit.ShowDialog();
}
private async void lvContacts_DoubleClick(object sender, EventArgs e)
@ -405,6 +401,8 @@ namespace qtc_net_client_2
_gatewayService.OnRefreshContactsListReceived += _gatewayService_OnRefreshContactsListReceived;
_gatewayService.OnServerConfigReceived += _gatewayService_OnServerConfigReceived;
_apiService.OnCurrentUserUpdate += _apiService_OnCurrentUserUpdate;
if (_gatewayService.HubConnection != null && _gatewayService.HubConnection.State == Microsoft.AspNetCore.SignalR.Client.HubConnectionState.Connected)
{
LoggingService.LogString("Connected To SignalR Succesfully.");
@ -431,7 +429,6 @@ namespace qtc_net_client_2
await RefreshContactsList();
await RefreshRoomsList();
await RefreshUsers();
// TODO - figure out server side why online status is invisible on login
_apiService.CurrentUser.Status = 1;
@ -866,6 +863,12 @@ namespace qtc_net_client_2
}
}
private void _apiService_OnCurrentUserUpdate(object? sender, EventArgs e)
{
lblWelcome.Text = $"Welcome, {_apiService.CurrentUser.Username}";
RefreshCurrencyCounter();
}
private async void _gatewayService_OnRefreshContactsListReceived(object? sender, EventArgs e) => await RefreshContactsList();
private async void _gatewayService_OnRefreshRoomListReceived(object? sender, EventArgs e) => await RefreshRoomsList();
private async void _gatewayService_OnRefreshUserListReceived(object? sender, EventArgs e) => await RefreshUsers();

View File

@ -54,6 +54,13 @@ namespace qtc_net_client_2.Forms
items.Add(cbi);
}
}
} else
{
items.Add(new ComboBoxItem
{
Name = "(None)",
Value = 0
});
}
cbCosmetic.DataSource = items;

View File

@ -44,19 +44,6 @@ namespace qtc_net_client_2.Forms
_apiService.CurrentUser.StockAmount = result.Data.StockAmount;
_apiService.CurrentUser.CurrencyAmount = result.Data.CurrencyAmount;
Main? mainWindow = (Main?)Application.OpenForms[0];
if (mainWindow != null)
{
if (mainWindow.InvokeRequired)
{
mainWindow.Invoke(mainWindow.RefreshCurrencyCounter);
}
else
{
mainWindow.RefreshCurrencyCounter();
}
}
nudStockBuySellAmount.Enabled = true;
nudStockBuySellAmount.Value = 0;
btnBuy.Enabled = true;
@ -95,19 +82,6 @@ namespace qtc_net_client_2.Forms
_apiService.CurrentUser.StockAmount = result.Data.StockAmount;
_apiService.CurrentUser.CurrencyAmount = result.Data.CurrencyAmount;
Main? mainWindow = (Main?)Application.OpenForms[0];
if (mainWindow != null)
{
if (mainWindow.InvokeRequired)
{
mainWindow.Invoke(mainWindow.RefreshCurrencyCounter);
}
else
{
mainWindow.RefreshCurrencyCounter();
}
}
nudStockBuySellAmount.Enabled = true;
nudStockBuySellAmount.Value = 0;
btnBuy.Enabled = true;

View File

@ -69,12 +69,8 @@ namespace qtc_net_client_2.Forms
// attempt to buy item
var ownedStoreItem = await _apiService.BuyStoreItem(StoreItem.Id);
if (ownedStoreItem != null && ownedStoreItem.Success && ownedStoreItem.Data != null)
if (ownedStoreItem != null && ownedStoreItem.Success)
{
Main? mainForm = (Main?)Application.OpenForms[0];
if (mainForm != null)
mainForm.RefreshCurrencyCounter();
Enabled = true;
var result = MessageBox.Show($"Successfully Bought '{StoreItem.Name}'! Would You Like To Wear It Now?", "Success!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

View File

@ -261,11 +261,6 @@ namespace qtc_net_client_2
{
await _apiService.AddCurrencyToCurrentUser(currencyJackpotSpinner.TokensWon, false);
_apiService.CurrentUser.CurrencyAmount += currencyJackpotSpinner.TokensWon;
// find the main form to refresh currency count
Main? mainForm = (Main?)Application.OpenForms[0];
if (mainForm != null)
mainForm.RefreshCurrencyCounter();
}
}