@@ -126,7 +126,7 @@ public ProfilesViewModel(Func<EViewAction, object?, Task<bool>>? updateView)
126126 this . WhenAnyValue (
127127 x => x . ServerFilter ,
128128 y => y != null && _serverFilter != y )
129- . Subscribe ( c => ServerFilterChanged ( c ) ) ;
129+ . Subscribe ( async c => await ServerFilterChanged ( c ) ) ;
130130
131131 //servers delete
132132 EditServerCmd = ReactiveCommand . CreateFromTask ( async ( ) =>
@@ -249,7 +249,10 @@ public ProfilesViewModel(Func<EViewAction, object?, Task<bool>>? updateView)
249249
250250 if ( _updateView != null )
251251 {
252- MessageBus . Current . Listen < string > ( EMsgCommand . RefreshProfiles . ToString ( ) ) . Subscribe ( OnNext ) ;
252+ AppEvents . ProfilesRefreshRequested
253+ . AsObservable ( )
254+ . ObserveOn ( RxApp . MainThreadScheduler )
255+ . Subscribe ( async _ => await RefreshServersBiz ( ) ) ; //.DisposeWith(_disposables);
253256 }
254257
255258 _ = Init ( ) ;
@@ -263,18 +266,13 @@ private async Task Init()
263266 SelectedServer = new ( ) ;
264267
265268 await RefreshSubscriptions ( ) ;
266- RefreshServers ( ) ;
269+ await RefreshServers ( ) ;
267270 }
268271
269272 #endregion Init
270273
271274 #region Actions
272275
273- private async void OnNext ( string x )
274- {
275- await _updateView ? . Invoke ( EViewAction . DispatcherRefreshServersBiz , null ) ;
276- }
277-
278276 private void Reload ( )
279277 {
280278 Locator . Current . GetService < MainWindowViewModel > ( ) ? . Reload ( ) ;
@@ -353,12 +351,12 @@ private async Task SubSelectedChangedAsync(bool c)
353351 }
354352 _config . SubIndexId = SelectedSub ? . Id ;
355353
356- RefreshServers ( ) ;
354+ await RefreshServers ( ) ;
357355
358356 await _updateView ? . Invoke ( EViewAction . ProfilesFocus , null ) ;
359357 }
360358
361- private void ServerFilterChanged ( bool c )
359+ private async Task ServerFilterChanged ( bool c )
362360 {
363361 if ( ! c )
364362 {
@@ -367,16 +365,18 @@ private void ServerFilterChanged(bool c)
367365 _serverFilter = ServerFilter ;
368366 if ( _serverFilter . IsNullOrEmpty ( ) )
369367 {
370- RefreshServers ( ) ;
368+ await RefreshServers ( ) ;
371369 }
372370 }
373371
374- public void RefreshServers ( )
372+ public async Task RefreshServers ( )
375373 {
376- MessageBus . Current . SendMessage ( "" , EMsgCommand . RefreshProfiles . ToString ( ) ) ;
374+ AppEvents . ProfilesRefreshRequested . OnNext ( Unit . Default ) ;
375+
376+ await Task . Delay ( 200 ) ;
377377 }
378378
379- public async Task RefreshServersBiz ( )
379+ private async Task RefreshServersBiz ( )
380380 {
381381 var lstModel = await GetProfileItemsEx ( _config . SubIndexId , _serverFilter ) ;
382382 _lstProfile = JsonUtils . Deserialize < List < ProfileItem > > ( JsonUtils . Serialize ( lstModel ) ) ?? [ ] ;
@@ -395,6 +395,8 @@ public async Task RefreshServersBiz()
395395 SelectedProfile = lstModel . First ( ) ;
396396 }
397397 }
398+
399+ await _updateView ? . Invoke ( EViewAction . DispatcherRefreshServersBiz , null ) ;
398400 }
399401
400402 public async Task RefreshSubscriptions ( )
@@ -514,7 +516,7 @@ public async Task EditServerAsync(EConfigType eConfigType)
514516 }
515517 if ( ret == true )
516518 {
517- RefreshServers ( ) ;
519+ await RefreshServers ( ) ;
518520 if ( item . IndexId == _config . IndexId )
519521 {
520522 Reload ( ) ;
@@ -541,7 +543,7 @@ public async Task RemoveServerAsync()
541543 {
542544 _profileItems . Clear ( ) ;
543545 }
544- RefreshServers ( ) ;
546+ await RefreshServers ( ) ;
545547 if ( exists )
546548 {
547549 Reload ( ) ;
@@ -553,7 +555,7 @@ private async Task RemoveDuplicateServer()
553555 var tuple = await ConfigHandler . DedupServerList ( _config , _config . SubIndexId ) ;
554556 if ( tuple . Item1 > 0 || tuple . Item2 > 0 )
555557 {
556- RefreshServers ( ) ;
558+ await RefreshServers ( ) ;
557559 Reload ( ) ;
558560 }
559561 NoticeManager . Instance . Enqueue ( string . Format ( ResUI . RemoveDuplicateServerResult , tuple . Item1 , tuple . Item2 ) ) ;
@@ -568,7 +570,7 @@ private async Task CopyServer()
568570 }
569571 if ( await ConfigHandler . CopyServer ( _config , lstSelected ) == 0 )
570572 {
571- RefreshServers ( ) ;
573+ await RefreshServers ( ) ;
572574 NoticeManager . Instance . Enqueue ( ResUI . OperationSuccess ) ;
573575 }
574576 }
@@ -601,7 +603,7 @@ public async Task SetDefaultServer(string? indexId)
601603
602604 if ( await ConfigHandler . SetDefaultServerIndex ( _config , indexId ) == 0 )
603605 {
604- RefreshServers ( ) ;
606+ await RefreshServers ( ) ;
605607 Reload ( ) ;
606608 }
607609 }
@@ -652,7 +654,7 @@ private async Task SetDefaultMultipleServer(ECoreType coreType, EMultipleLoad mu
652654 }
653655 if ( ret ? . Data ? . ToString ( ) == _config . IndexId )
654656 {
655- RefreshServers ( ) ;
657+ await RefreshServers ( ) ;
656658 Reload ( ) ;
657659 }
658660 else
@@ -675,13 +677,13 @@ public async Task SortServer(string colName)
675677 return ;
676678 }
677679 _dicHeaderSort [ colName ] = ! asc ;
678- RefreshServers ( ) ;
680+ await RefreshServers ( ) ;
679681 }
680682
681683 public async Task RemoveInvalidServerResult ( )
682684 {
683685 var count = await ConfigHandler . RemoveInvalidServerResult ( _config , _config . SubIndexId ) ;
684- RefreshServers ( ) ;
686+ await RefreshServers ( ) ;
685687 NoticeManager . Instance . Enqueue ( string . Format ( ResUI . RemoveInvalidServerResultTip , count ) ) ;
686688 }
687689
@@ -702,7 +704,7 @@ private async Task MoveToGroup(bool c)
702704 await ConfigHandler . MoveToGroup ( _config , lstSelected , SelectedMoveToGroup . Id ) ;
703705 NoticeManager . Instance . Enqueue ( ResUI . OperationSuccess ) ;
704706
705- RefreshServers ( ) ;
707+ await RefreshServers ( ) ;
706708 SelectedMoveToGroup = null ;
707709 SelectedMoveToGroup = new ( ) ;
708710 }
@@ -723,7 +725,7 @@ public async Task MoveServer(EMove eMove)
723725 }
724726 if ( await ConfigHandler . MoveServer ( _config , _lstProfile , index , eMove ) == 0 )
725727 {
726- RefreshServers ( ) ;
728+ await RefreshServers ( ) ;
727729 }
728730 }
729731
@@ -734,7 +736,7 @@ public async Task MoveServerTo(int startIndex, ProfileItemModel targetItem)
734736 {
735737 if ( await ConfigHandler . MoveServer ( _config , _lstProfile , startIndex , EMove . Position , targetIndex ) == 0 )
736738 {
737- RefreshServers ( ) ;
739+ await RefreshServers ( ) ;
738740 }
739741 }
740742 }
0 commit comments