Skip to content

Commit 0bf4f92

Browse files
committed
fix: fetch AI models in background to avoid main window waiting to show (sourcegit-scm#2267)
Signed-off-by: leo <longshuang@msn.cn>
1 parent 5fd7551 commit 0bf4f92

File tree

5 files changed

+16
-17
lines changed

5 files changed

+16
-17
lines changed

src/AI/Service.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.ClientModel;
33
using System.Collections.Generic;
44
using System.Text.Json.Serialization;
5-
using System.Threading.Tasks;
65
using Azure.AI.OpenAI;
76
using CommunityToolkit.Mvvm.ComponentModel;
87
using OpenAI;
@@ -55,7 +54,7 @@ public string Model
5554
set;
5655
} = string.Empty;
5756

58-
public async Task<List<string>> FetchAvailableModelsAsync()
57+
public void FetchAvailableModels()
5958
{
6059
var allModels = GetOpenAIClient().GetOpenAIModelClient().GetModels();
6160
AvailableModels = new List<string>();
@@ -71,8 +70,6 @@ public async Task<List<string>> FetchAvailableModelsAsync()
7170
{
7271
Model = null;
7372
}
74-
75-
return AvailableModels;
7673
}
7774

7875
public ChatClient GetChatClient()

src/App.axaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,7 @@ private void TryLaunchAsNormal(IClassicDesktopStyleApplicationLifetime desktop)
547547

548548
var pref = ViewModels.Preferences.Instance;
549549
pref.SetCanModify();
550+
pref.UpdateAvailableAIModels();
550551

551552
_launcher = new ViewModels.Launcher(startupRepo);
552553
desktop.MainWindow = new Views.Launcher() { DataContext = _launcher };

src/ViewModels/Preferences.cs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -629,19 +629,22 @@ public void AutoRemoveInvalidNode()
629629
RemoveInvalidRepositoriesRecursive(RepositoryNodes);
630630
}
631631

632-
public async Task UpdateAvailableAIModelsAsync()
632+
public void UpdateAvailableAIModels()
633633
{
634-
foreach (var service in OpenAIServices)
634+
Task.Run(() =>
635635
{
636-
try
636+
foreach (var service in OpenAIServices)
637637
{
638-
await service.FetchAvailableModelsAsync();
639-
}
640-
catch
641-
{
642-
// Ignore errors.
638+
try
639+
{
640+
service.FetchAvailableModels();
641+
}
642+
catch
643+
{
644+
// Ignore errors.
645+
}
643646
}
644-
}
647+
});
645648
}
646649

647650
public void Save()

src/Views/Launcher.axaml.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,14 @@ public void BringToTop()
106106
Activate();
107107
}
108108

109-
protected override async void OnOpened(EventArgs e)
109+
protected override void OnOpened(EventArgs e)
110110
{
111111
base.OnOpened(e);
112112

113113
var preferences = ViewModels.Preferences.Instance;
114114
var state = preferences.Layout.LauncherWindowState;
115115
if (state == WindowState.Maximized || state == WindowState.FullScreen)
116116
WindowState = WindowState.Maximized;
117-
118-
await preferences.UpdateAvailableAIModelsAsync();
119117
}
120118

121119
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)

src/Views/Preferences.axaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ protected override async void OnClosing(WindowClosingEventArgs e)
206206
}
207207

208208
var preferences = ViewModels.Preferences.Instance;
209-
await preferences.UpdateAvailableAIModelsAsync();
209+
preferences.UpdateAvailableAIModels();
210210
preferences.Save();
211211
}
212212

0 commit comments

Comments
 (0)