mirror of
https://fastgit.cc/github.com/sourcegit-scm/sourcegit
synced 2026-04-20 21:01:06 +08:00
fix: fetch AI models in background to avoid main window waiting to show (#2267)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
using System.ClientModel;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
using Azure.AI.OpenAI;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using OpenAI;
|
||||
@@ -55,7 +54,7 @@ namespace SourceGit.AI
|
||||
set;
|
||||
} = string.Empty;
|
||||
|
||||
public async Task<List<string>> FetchAvailableModelsAsync()
|
||||
public void FetchAvailableModels()
|
||||
{
|
||||
var allModels = GetOpenAIClient().GetOpenAIModelClient().GetModels();
|
||||
AvailableModels = new List<string>();
|
||||
@@ -71,8 +70,6 @@ namespace SourceGit.AI
|
||||
{
|
||||
Model = null;
|
||||
}
|
||||
|
||||
return AvailableModels;
|
||||
}
|
||||
|
||||
public ChatClient GetChatClient()
|
||||
|
||||
@@ -547,6 +547,7 @@ namespace SourceGit
|
||||
|
||||
var pref = ViewModels.Preferences.Instance;
|
||||
pref.SetCanModify();
|
||||
pref.UpdateAvailableAIModels();
|
||||
|
||||
_launcher = new ViewModels.Launcher(startupRepo);
|
||||
desktop.MainWindow = new Views.Launcher() { DataContext = _launcher };
|
||||
|
||||
@@ -629,19 +629,22 @@ namespace SourceGit.ViewModels
|
||||
RemoveInvalidRepositoriesRecursive(RepositoryNodes);
|
||||
}
|
||||
|
||||
public async Task UpdateAvailableAIModelsAsync()
|
||||
public void UpdateAvailableAIModels()
|
||||
{
|
||||
foreach (var service in OpenAIServices)
|
||||
Task.Run(() =>
|
||||
{
|
||||
try
|
||||
foreach (var service in OpenAIServices)
|
||||
{
|
||||
await service.FetchAvailableModelsAsync();
|
||||
try
|
||||
{
|
||||
service.FetchAvailableModels();
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Ignore errors.
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Ignore errors.
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void Save()
|
||||
|
||||
@@ -106,7 +106,7 @@ namespace SourceGit.Views
|
||||
Activate();
|
||||
}
|
||||
|
||||
protected override async void OnOpened(EventArgs e)
|
||||
protected override void OnOpened(EventArgs e)
|
||||
{
|
||||
base.OnOpened(e);
|
||||
|
||||
@@ -114,8 +114,6 @@ namespace SourceGit.Views
|
||||
var state = preferences.Layout.LauncherWindowState;
|
||||
if (state == WindowState.Maximized || state == WindowState.FullScreen)
|
||||
WindowState = WindowState.Maximized;
|
||||
|
||||
await preferences.UpdateAvailableAIModelsAsync();
|
||||
}
|
||||
|
||||
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
|
||||
|
||||
@@ -206,7 +206,7 @@ namespace SourceGit.Views
|
||||
}
|
||||
|
||||
var preferences = ViewModels.Preferences.Instance;
|
||||
await preferences.UpdateAvailableAIModelsAsync();
|
||||
preferences.UpdateAvailableAIModels();
|
||||
preferences.Save();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user