@@ -44,7 +44,6 @@ public partial class PDChat
4444 public bool IsClearPermitted { get ; set ; } = true ;
4545
4646 private IJSObjectReference ? _module ;
47- private bool _isOpen ;
4847 private bool _isMuted ;
4948 private bool _unreadMessages ;
5049 private string _currentInput = "" ;
@@ -54,14 +53,11 @@ public partial class PDChat
5453 private PDTabSet ? _tabSetRef ;
5554 private PDMessages ? _pdMessages ;
5655
57- // Helper property to check if in fullscreen mode
58- private bool IsFullScreen => DockMode == PDChatDockMode . FullScreen ;
59-
6056 protected override Task OnInitializedAsync ( )
6157 {
6258 // Initialize previous dock mode with current value
6359 _previousDockMode = DockMode ;
64-
60+
6561 ChatService . OnMessageReceived += OnMessageReceived ;
6662 ChatService . OnLiveStatusChanged += OnLiveStatusChanged ;
6763 ChatService . Initialize ( ) ;
@@ -73,7 +69,7 @@ private void OnLiveStatusChanged(bool obj)
7369 StateHasChanged ( ) ;
7470 }
7571
76- private void OnMessageReceived ( ChatMessage message )
72+ private async void OnMessageReceived ( ChatMessage message )
7773 {
7874 var existing = _messages . FirstOrDefault ( m => m . Id == message . Id ) ;
7975 if ( existing != null )
@@ -90,7 +86,7 @@ private void OnMessageReceived(ChatMessage message)
9086 _messages . Add ( message ) ;
9187 }
9288
93- if ( ! _isOpen )
89+ if ( DockMode == PDChatDockMode . Minimized )
9490 {
9591 _unreadMessages = true ;
9692 }
@@ -104,7 +100,7 @@ private void OnMessageReceived(ChatMessage message)
104100 _module ? . InvokeVoidAsync ( "playSound" , soundUrlString ) ;
105101 }
106102
107- InvokeAsync ( StateHasChanged ) ;
103+ await InvokeAsync ( StateHasChanged ) ;
108104 }
109105
110106 public void ShowToast ( ChatMessage message )
@@ -115,11 +111,15 @@ public void ShowToast(ChatMessage message)
115111
116112 private void ToggleChat ( )
117113 {
118- _isOpen = ! _isOpen ;
119-
120- if ( _isOpen )
114+ if ( DockMode == PDChatDockMode . Minimized )
121115 {
122- _unreadMessages = false ;
116+ DockMode = _previousDockMode ;
117+ _unreadMessages = false ; // Clear unread messages when chat is opened
118+ }
119+ else
120+ {
121+ _previousDockMode = DockMode ;
122+ DockMode = PDChatDockMode . Minimized ;
123123 }
124124 }
125125
@@ -137,7 +137,7 @@ private async Task ToggleFullScreenAsync()
137137 }
138138 else
139139 {
140- // Store current dock mode before going fullscreen
140+ // Store current dock mode before going full screen
141141 _previousDockMode = DockMode ;
142142 await SetDockModeAsync ( PDChatDockMode . FullScreen ) ;
143143 }
@@ -209,6 +209,11 @@ private string GetDockModeClasses()
209209 PDChatDockMode . BottomLeft => "dock-bottom-left" ,
210210 PDChatDockMode . TopLeft => "dock-top-left" ,
211211 PDChatDockMode . FullScreen => "dock-fullscreen" ,
212+ PDChatDockMode . Left => "dock-left" ,
213+ PDChatDockMode . Right => "dock-right" ,
214+ PDChatDockMode . Top => "dock-top" ,
215+ PDChatDockMode . Bottom => "dock-bottom" ,
216+ PDChatDockMode . Minimized => "dock-minimized" ,
212217 _ => "dock-bottom-right" // Default fallback
213218 } ;
214219 }
0 commit comments