From 276a33a52e0220d1ff02dc6115d258049497ddfb Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 19 May 2024 20:28:25 +0200 Subject: [PATCH] Fixed missed row numbers of providers --- app/MindWork AI Studio/Components/Pages/Settings.razor | 2 +- .../Components/Pages/Settings.razor.cs | 9 +++++++++ app/MindWork AI Studio/Settings/Data.cs | 7 ++++++- app/MindWork AI Studio/Settings/Provider.cs | 3 ++- app/MindWork AI Studio/Settings/ProviderDialog.razor.cs | 7 +++++++ 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor b/app/MindWork AI Studio/Components/Pages/Settings.razor index eeb6e3b..2820b10 100644 --- a/app/MindWork AI Studio/Components/Pages/Settings.razor +++ b/app/MindWork AI Studio/Components/Pages/Settings.razor @@ -20,7 +20,7 @@ Actions - + @context.Num @context.InstanceName @context.UsedProvider @context.Model diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs index ce824e3..b287877 100644 --- a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs +++ b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs @@ -52,6 +52,8 @@ public partial class Settings : ComponentBase return; var addedProvider = (AIStudio.Settings.Provider)dialogResult.Data; + addedProvider = addedProvider with { Num = this.SettingsManager.ConfigurationData.NextProviderNum++ }; + this.SettingsManager.ConfigurationData.Providers.Add(addedProvider); await this.SettingsManager.StoreSettings(); } @@ -60,6 +62,7 @@ public partial class Settings : ComponentBase { var dialogParameters = new DialogParameters { + { x => x.DataNum, provider.Num }, { x => x.DataId, provider.Id }, { x => x.DataInstanceName, provider.InstanceName }, { x => x.DataProvider, provider.UsedProvider }, @@ -73,6 +76,12 @@ public partial class Settings : ComponentBase return; var editedProvider = (AIStudio.Settings.Provider)dialogResult.Data; + + // Set the provider number if it's not set. This is important for providers + // added before we started saving the provider number. + if(editedProvider.Num == 0) + editedProvider = editedProvider with { Num = this.SettingsManager.ConfigurationData.NextProviderNum++ }; + this.SettingsManager.ConfigurationData.Providers[this.SettingsManager.ConfigurationData.Providers.IndexOf(provider)] = editedProvider; await this.SettingsManager.StoreSettings(); } diff --git a/app/MindWork AI Studio/Settings/Data.cs b/app/MindWork AI Studio/Settings/Data.cs index ff89a31..465ebe6 100644 --- a/app/MindWork AI Studio/Settings/Data.cs +++ b/app/MindWork AI Studio/Settings/Data.cs @@ -14,7 +14,12 @@ public sealed class Data /// /// List of configured providers. /// - public List Providers { get; init; } = new(); + public List Providers { get; init; } = []; + + /// + /// The next provider number to use. + /// + public uint NextProviderNum { get; set; } = 1; /// /// Should we save energy? When true, we will update content streamed diff --git a/app/MindWork AI Studio/Settings/Provider.cs b/app/MindWork AI Studio/Settings/Provider.cs index 1c94814..d1f6194 100644 --- a/app/MindWork AI Studio/Settings/Provider.cs +++ b/app/MindWork AI Studio/Settings/Provider.cs @@ -5,11 +5,12 @@ namespace AIStudio.Settings; /// /// Data model for configured providers. /// +/// The provider's number. /// The provider's ID. /// The provider's instance name. Useful for multiple instances of the same provider, e.g., to distinguish between different OpenAI API keys. /// The provider used. /// The LLM model to use for chat. -public readonly record struct Provider(string Id, string InstanceName, Providers UsedProvider, Model Model) +public readonly record struct Provider(uint Num, string Id, string InstanceName, Providers UsedProvider, Model Model) { #region Overrides of ValueType diff --git a/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs b/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs index 6a668ae..1a267ca 100644 --- a/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs +++ b/app/MindWork AI Studio/Settings/ProviderDialog.razor.cs @@ -16,6 +16,12 @@ public partial class ProviderDialog : ComponentBase { [CascadingParameter] private MudDialogInstance MudDialog { get; set; } = null!; + + /// + /// The provider's number in the list. + /// + [Parameter] + public uint DataNum { get; set; } /// /// The provider's ID. @@ -129,6 +135,7 @@ public partial class ProviderDialog : ComponentBase // We just return this data to the parent component: var addedProvider = new Provider { + Num = this.DataNum, Id = this.DataId, InstanceName = this.DataInstanceName, UsedProvider = this.DataProvider,