From 932ee5fe621380d11298a1cfcb6911fae284741f Mon Sep 17 00:00:00 2001 From: AlanMoonbase Date: Sat, 12 Jul 2025 11:14:22 -0700 Subject: [PATCH] Implement OnCurrentUserUpdate Event --- QtCNETAPI/Services/ApiService/ApiService.cs | 20 ++++++++++++--- QtCNETAPI/Services/ApiService/IApiService.cs | 2 ++ qtc-net-client-2/Forms/Main.cs | 15 ++++++----- qtc-net-client-2/Forms/ProfileEdit.cs | 7 ++++++ qtc-net-client-2/Forms/StockMarketGame.cs | 26 -------------------- qtc-net-client-2/Forms/StoreItemDisplay.cs | 6 +---- qtc-net-client-2/Forms/TicTacToeGame.cs | 5 ---- 7 files changed, 36 insertions(+), 45 deletions(-) diff --git a/QtCNETAPI/Services/ApiService/ApiService.cs b/QtCNETAPI/Services/ApiService/ApiService.cs index b2cca4d..f40ae8d 100644 --- a/QtCNETAPI/Services/ApiService/ApiService.cs +++ b/QtCNETAPI/Services/ApiService/ApiService.cs @@ -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; diff --git a/QtCNETAPI/Services/ApiService/IApiService.cs b/QtCNETAPI/Services/ApiService/IApiService.cs index c708eda..4014c50 100644 --- a/QtCNETAPI/Services/ApiService/IApiService.cs +++ b/QtCNETAPI/Services/ApiService/IApiService.cs @@ -17,6 +17,8 @@ namespace QtCNETAPI.Services.ApiService public string? SessionToken { get; set; } public User CurrentUser { get; } + public event EventHandler? OnCurrentUserUpdate; + public Task> PingServerAsync(); public Task>> GetOnlineUsersAsync(); public Task>> GetAllUsersAsync(); diff --git a/qtc-net-client-2/Forms/Main.cs b/qtc-net-client-2/Forms/Main.cs index 470ef09..f350f1a 100644 --- a/qtc-net-client-2/Forms/Main.cs +++ b/qtc-net-client-2/Forms/Main.cs @@ -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(); diff --git a/qtc-net-client-2/Forms/ProfileEdit.cs b/qtc-net-client-2/Forms/ProfileEdit.cs index e11f60e..bd0dd28 100644 --- a/qtc-net-client-2/Forms/ProfileEdit.cs +++ b/qtc-net-client-2/Forms/ProfileEdit.cs @@ -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; diff --git a/qtc-net-client-2/Forms/StockMarketGame.cs b/qtc-net-client-2/Forms/StockMarketGame.cs index 0f2cc1d..ff0fe31 100644 --- a/qtc-net-client-2/Forms/StockMarketGame.cs +++ b/qtc-net-client-2/Forms/StockMarketGame.cs @@ -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; diff --git a/qtc-net-client-2/Forms/StoreItemDisplay.cs b/qtc-net-client-2/Forms/StoreItemDisplay.cs index 64584a4..7409c14 100644 --- a/qtc-net-client-2/Forms/StoreItemDisplay.cs +++ b/qtc-net-client-2/Forms/StoreItemDisplay.cs @@ -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); diff --git a/qtc-net-client-2/Forms/TicTacToeGame.cs b/qtc-net-client-2/Forms/TicTacToeGame.cs index 9ca522c..99ba0c7 100644 --- a/qtc-net-client-2/Forms/TicTacToeGame.cs +++ b/qtc-net-client-2/Forms/TicTacToeGame.cs @@ -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(); } }