From 8aa02020b9dc084bdcb3ef2f7706165e19abd185 Mon Sep 17 00:00:00 2001 From: mmrbnjd Date: Sat, 2 Aug 2025 13:35:49 +0330 Subject: [PATCH] ... --- .../Pages/FromUserSide/UserCP.razor | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor b/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor index 288eb20..8ef62d8 100644 --- a/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor +++ b/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor @@ -13,6 +13,7 @@ @inject GroupService groupService @inject ChatService chatService @inject IJSRuntime JS +@inject ToastService toastService @layout UserPanelLayout
@@ -138,7 +139,7 @@ @code { [Parameter] public int CompanyID { get; set; } private bool _shouldObserveVisibility = false; - + int? GroupID = null; ReadANDUpdate_CompanyDto? CompanyInfo = new(); Common.Dtos.CurrentUserInfo CurrentUser = new(); List CompanyGroups = new(); @@ -172,15 +173,26 @@ var model = await chatService.ADDChatResponse(LastOpenChat.ID, MsgInput, type); LastOpenChat?.Responses.Add(model); LastOpenChat.LastText = MsgInput; - await Task.Yield(); - // Scroll to bottom for user's own messages - await JS.InvokeVoidAsync("scrollToBottom", "B1"); - MsgInput = string.Empty; + } else { //TODO New Chat + var model = await chatService.NewChatFromCurrentUser(new ADD_ConversationDto() + { + CompanyID = CompanyID, + GroupID = GroupID, + Question = MsgInput, + UserID = 0 + }); + if (model != null) LastOpenChat = model; + else toastService.Notify(new ToastMessage(ToastType.Danger, "خطا در گفتگو جدید")); + } + await Task.Yield(); + // Scroll to bottom for user's own messages + await JS.InvokeVoidAsync("scrollToBottom", "B1"); + MsgInput = string.Empty; } } @@ -245,14 +257,14 @@ LastOpenChat = null; if (LastOpenChat != null) { - + // Always set up visibility observation for chat bubbles _shouldObserveVisibility = true; StateHasChanged(); - + // Wait for render to complete await Task.Delay(200); - + // Scroll to target if exists, otherwise scroll to bottom await JS.InvokeVoidAsync("scrollToTargetOrBottom"); } @@ -266,7 +278,7 @@ { msg.IsRead = true; await chatService.MarkAsReadChatItemAsync(id); - // StateHasChanged(); + // StateHasChanged(); } await Task.CompletedTask; } @@ -790,7 +802,7 @@ const targetRect = targetElement.getBoundingClientRect(); const containerRect = chatContainer.getBoundingClientRect(); const relativeTop = targetRect.top - containerRect.top; - + // Scroll to show the target element with some padding const scrollPosition = chatContainer.scrollTop + relativeTop - 100; // 100px padding chatContainer.scrollTo({