From 38031b2e817c35c1276b1d7574758bdc9e90ca5c Mon Sep 17 00:00:00 2001 From: mmrbnjd Date: Thu, 31 Jul 2025 02:35:14 +0330 Subject: [PATCH] ... --- Presentation/HushianWebApp/Pages/Chat.razor | 2 +- .../Pages/FromUserSide/UserCP.razor | 43 +++++++++++-------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/Presentation/HushianWebApp/Pages/Chat.razor b/Presentation/HushianWebApp/Pages/Chat.razor index 00e91f0..d49092a 100644 --- a/Presentation/HushianWebApp/Pages/Chat.razor +++ b/Presentation/HushianWebApp/Pages/Chat.razor @@ -332,7 +332,7 @@ msg.IsRead = true; await chatService.MarkAsReadChatItemAsync(id); } - StateHasChanged(); + // StateHasChanged(); await Task.CompletedTask; } } diff --git a/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor b/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor index dd8e1a8..a4bd37a 100644 --- a/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor +++ b/Presentation/HushianWebApp/Pages/FromUserSide/UserCP.razor @@ -236,27 +236,16 @@ LastOpenChat = await ChatService.GetLastOpenChatInCompany(CompanyID); if (LastOpenChat != null) { - // Check if there are unread messages - var hasUnreadMessages = LastOpenChat.Responses?.Any(m => !m.IsRead && m.Type != Common.Enums.ConversationType.UE) ?? false; - - if (hasUnreadMessages) - { - _shouldObserveVisibility = true; - StateHasChanged(); - // Scroll to target (new message separator) after render - await Task.Delay(100); - await JS.InvokeVoidAsync("scrollToTarget"); - } - else - { - // If no unread messages, scroll to bottom - await Task.Delay(100); - await JS.InvokeVoidAsync("scrollToBottom", "B1"); - } - + // 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"); } } } @@ -776,7 +765,10 @@ window.scrollToBottom = (elementId) => { const el = document.getElementById(elementId); if (el) { - el.scrollTop = el.scrollHeight; + el.scrollTo({ + top: el.scrollHeight, + behavior: 'smooth' + }); } }; @@ -798,6 +790,9 @@ behavior: 'smooth' }); } + } else { + // If no target element exists, scroll to bottom smoothly + window.scrollToBottom('B1'); } }; @@ -826,4 +821,14 @@ }, 100); // Small delay to ensure DOM is updated }; + // Check if target exists and scroll accordingly + window.scrollToTargetOrBottom = () => { + const targetElement = document.getElementById('target'); + if (targetElement && targetElement.style.display !== 'none') { + window.scrollToTarget(); + } else { + window.scrollToBottom('B1'); + } + }; + \ No newline at end of file