From f7dd6b307473bd8850414df7fb570cad17624bf1 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Tue, 23 Jul 2024 19:53:02 +0200 Subject: [PATCH] General migration to MudBlazor v7.x.x --- .../Components/AssistantBase.razor | 2 +- .../Components/Blocks/MudTextList.razor | 4 +- .../Components/Blocks/TreeItemData.cs | 2 +- .../Components/Blocks/Workspaces.razor | 8 +- .../Components/Blocks/Workspaces.razor.cs | 144 +++++++++++------- .../Components/Layout/MainLayout.razor.cs | 4 +- .../Components/Pages/About.razor | 16 +- .../Components/Pages/Chat.razor.cs | 6 +- .../IconFinder/AssistantIconFinder.razor.cs | 2 - .../Components/Pages/Settings.razor.cs | 10 +- .../AssistantTextSummarizer.razor.cs | 1 - .../Translator/AssistantTranslator.razor.cs | 1 - .../Components/Routes.razor | 1 + .../Settings/ProviderDialog.razor | 4 +- 14 files changed, 118 insertions(+), 87 deletions(-) diff --git a/app/MindWork AI Studio/Components/AssistantBase.razor b/app/MindWork AI Studio/Components/AssistantBase.razor index e04bb340..175f7927 100644 --- a/app/MindWork AI Studio/Components/AssistantBase.razor +++ b/app/MindWork AI Studio/Components/AssistantBase.razor @@ -20,7 +20,7 @@ { Issues - + @foreach (var issue in this.inputIssues) { diff --git a/app/MindWork AI Studio/Components/Blocks/MudTextList.razor b/app/MindWork AI Studio/Components/Blocks/MudTextList.razor index 2c42cc25..bb702476 100644 --- a/app/MindWork AI Studio/Components/Blocks/MudTextList.razor +++ b/app/MindWork AI Studio/Components/Blocks/MudTextList.razor @@ -1,7 +1,7 @@ - + @foreach(var item in this.Items) { - + @item.Header: @item.Text } diff --git a/app/MindWork AI Studio/Components/Blocks/TreeItemData.cs b/app/MindWork AI Studio/Components/Blocks/TreeItemData.cs index aa96877a..2ddedaf2 100644 --- a/app/MindWork AI Studio/Components/Blocks/TreeItemData.cs +++ b/app/MindWork AI Studio/Components/Blocks/TreeItemData.cs @@ -18,5 +18,5 @@ public class TreeItemData : ITreeItem public bool Expandable { get; init; } = true; - public HashSet Children { get; init; } = []; + public IReadOnlyCollection> Children { get; init; } = []; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Blocks/Workspaces.razor b/app/MindWork AI Studio/Components/Blocks/Workspaces.razor index e45fea7a..92b0596a 100644 --- a/app/MindWork AI Studio/Components/Blocks/Workspaces.razor +++ b/app/MindWork AI Studio/Components/Blocks/Workspaces.razor @@ -1,6 +1,6 @@  - @switch (item) + @switch (item.Value) { case TreeDivider:
  • @@ -11,7 +11,7 @@ case TreeItemData treeItem: @if (treeItem.Type is TreeItemType.CHAT) { - +
    @@ -44,7 +44,7 @@ } else if (treeItem.Type is TreeItemType.WORKSPACE) { - +
    @treeItem.Text @@ -63,7 +63,7 @@ } else { - +
    @treeItem.Text diff --git a/app/MindWork AI Studio/Components/Blocks/Workspaces.razor.cs b/app/MindWork AI Studio/Components/Blocks/Workspaces.razor.cs index 6030470b..02ef0417 100644 --- a/app/MindWork AI Studio/Components/Blocks/Workspaces.razor.cs +++ b/app/MindWork AI Studio/Components/Blocks/Workspaces.razor.cs @@ -47,8 +47,8 @@ public partial class Workspaces : ComponentBase new JsonStringEnumConverter(JsonNamingPolicy.SnakeCaseUpper), } }; - - private readonly HashSet treeItems = new(); + + private readonly List> treeItems = new(); #region Overrides of ComponentBase @@ -70,33 +70,46 @@ public partial class Workspaces : ComponentBase private async Task LoadTreeItems() { this.treeItems.Clear(); - this.treeItems.Add(new TreeItemData + this.treeItems.Add(new TreeItemData { - Depth = 0, - Branch = WorkspaceBranch.WORKSPACES, - Text = "Workspaces", - Icon = Icons.Material.Filled.Folder, Expandable = true, - Path = "root", - Children = await this.LoadWorkspaces(), + Value = new TreeItemData + { + Depth = 0, + Branch = WorkspaceBranch.WORKSPACES, + Text = "Workspaces", + Icon = Icons.Material.Filled.Folder, + Expandable = true, + Path = "root", + Children = await this.LoadWorkspaces(), + }, }); - this.treeItems.Add(new TreeDivider()); - this.treeItems.Add(new TreeItemData + this.treeItems.Add(new TreeItemData + { + Expandable = false, + Value = new TreeDivider(), + }); + + this.treeItems.Add(new TreeItemData { - Depth = 0, - Branch = WorkspaceBranch.TEMPORARY_CHATS, - Text = "Temporary chats", - Icon = Icons.Material.Filled.Timer, Expandable = true, - Path = "temp", - Children = await this.LoadTemporaryChats(), + Value = new TreeItemData + { + Depth = 0, + Branch = WorkspaceBranch.TEMPORARY_CHATS, + Text = "Temporary chats", + Icon = Icons.Material.Filled.Timer, + Expandable = true, + Path = "temp", + Children = await this.LoadTemporaryChats(), + }, }); } - private async Task> LoadTemporaryChats() + private async Task>> LoadTemporaryChats() { - var tempChildren = new HashSet(); + var tempChildren = new List>(); // // Search for workspace folders in the data directory: @@ -115,15 +128,19 @@ public partial class Workspaces : ComponentBase var chatNamePath = Path.Join(tempChatDirPath, "name"); var chatName = await File.ReadAllTextAsync(chatNamePath, Encoding.UTF8); - tempChildren.Add(new TreeItemData + tempChildren.Add(new TreeItemData { - Type = TreeItemType.CHAT, - Depth = 1, - Branch = WorkspaceBranch.TEMPORARY_CHATS, - Text = chatName, - Icon = Icons.Material.Filled.Timer, Expandable = false, - Path = tempChatDirPath, + Value = new TreeItemData + { + Type = TreeItemType.CHAT, + Depth = 1, + Branch = WorkspaceBranch.TEMPORARY_CHATS, + Text = chatName, + Icon = Icons.Material.Filled.Timer, + Expandable = false, + Path = tempChatDirPath, + }, }); } @@ -140,9 +157,9 @@ public partial class Workspaces : ComponentBase return await File.ReadAllTextAsync(workspaceNamePath, Encoding.UTF8); } - private async Task> LoadWorkspaces() + private async Task>> LoadWorkspaces() { - var workspaces = new HashSet(); + var workspaces = new List>(); // // Search for workspace folders in the data directory: @@ -161,26 +178,34 @@ public partial class Workspaces : ComponentBase var workspaceNamePath = Path.Join(workspaceDirPath, "name"); var workspaceName = await File.ReadAllTextAsync(workspaceNamePath, Encoding.UTF8); - workspaces.Add(new TreeItemData + workspaces.Add(new TreeItemData { - Type = TreeItemType.WORKSPACE, - Depth = 1, - Branch = WorkspaceBranch.WORKSPACES, - Text = workspaceName, - Icon = Icons.Material.Filled.Description, Expandable = true, - Path = workspaceDirPath, - Children = await this.LoadWorkspaceChats(workspaceDirPath), + Value = new TreeItemData + { + Type = TreeItemType.WORKSPACE, + Depth = 1, + Branch = WorkspaceBranch.WORKSPACES, + Text = workspaceName, + Icon = Icons.Material.Filled.Description, + Expandable = true, + Path = workspaceDirPath, + Children = await this.LoadWorkspaceChats(workspaceDirPath), + }, }); } - workspaces.Add(new TreeButton(WorkspaceBranch.WORKSPACES, 1, "Add workspace",Icons.Material.Filled.LibraryAdd, this.AddWorkspace)); + workspaces.Add(new TreeItemData + { + Expandable = false, + Value = new TreeButton(WorkspaceBranch.WORKSPACES, 1, "Add workspace",Icons.Material.Filled.LibraryAdd, this.AddWorkspace), + }); return workspaces; } - private async Task> LoadWorkspaceChats(string workspacePath) + private async Task>> LoadWorkspaceChats(string workspacePath) { - var workspaceChats = new HashSet(); + var workspaceChats = new List>(); // Enumerate the workspace directory: foreach (var chatPath in Directory.EnumerateDirectories(workspacePath)) @@ -189,19 +214,28 @@ public partial class Workspaces : ComponentBase var chatNamePath = Path.Join(chatPath, "name"); var chatName = await File.ReadAllTextAsync(chatNamePath, Encoding.UTF8); - workspaceChats.Add(new TreeItemData + workspaceChats.Add(new TreeItemData { - Type = TreeItemType.CHAT, - Depth = 2, - Branch = WorkspaceBranch.WORKSPACES, - Text = chatName, - Icon = Icons.Material.Filled.Chat, Expandable = false, - Path = chatPath, + Value = new TreeItemData + { + Type = TreeItemType.CHAT, + Depth = 2, + Branch = WorkspaceBranch.WORKSPACES, + Text = chatName, + Icon = Icons.Material.Filled.Chat, + Expandable = false, + Path = chatPath, + }, }); } - workspaceChats.Add(new TreeButton(WorkspaceBranch.WORKSPACES, 2, "Add chat",Icons.Material.Filled.AddComment, () => this.AddChat(workspacePath))); + workspaceChats.Add(new TreeItemData + { + Expandable = false, + Value = new TreeButton(WorkspaceBranch.WORKSPACES, 2, "Add chat",Icons.Material.Filled.AddComment, () => this.AddChat(workspacePath)), + }); + return workspaceChats; } @@ -247,7 +281,7 @@ public partial class Workspaces : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Load Chat", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return null; } @@ -294,7 +328,7 @@ public partial class Workspaces : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Delete Chat", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; } @@ -331,7 +365,7 @@ public partial class Workspaces : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Rename Chat", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; chat.Name = (dialogResult.Data as string)!; @@ -356,7 +390,7 @@ public partial class Workspaces : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Rename Workspace", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; var alteredWorkspaceName = (dialogResult.Data as string)!; @@ -377,7 +411,7 @@ public partial class Workspaces : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Add Workspace", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; var workspaceId = Guid.NewGuid(); @@ -408,7 +442,7 @@ public partial class Workspaces : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Delete Workspace", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; Directory.Delete(workspacePath, true); @@ -430,7 +464,7 @@ public partial class Workspaces : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Move Chat to Workspace", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; var workspaceId = dialogResult.Data is Guid id ? id : default; @@ -475,7 +509,7 @@ public partial class Workspaces : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Create Chat", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; } diff --git a/app/MindWork AI Studio/Components/Layout/MainLayout.razor.cs b/app/MindWork AI Studio/Components/Layout/MainLayout.razor.cs index 7c7f09dd..040591a8 100644 --- a/app/MindWork AI Studio/Components/Layout/MainLayout.razor.cs +++ b/app/MindWork AI Studio/Components/Layout/MainLayout.razor.cs @@ -151,7 +151,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver var dialogReference = await this.DialogService.ShowAsync("Update", dialogParameters, DialogOptions.FULLSCREEN_NO_HEADER); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; this.performingUpdate = true; @@ -170,7 +170,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver var dialogReference = await this.DialogService.ShowAsync("Leave Chat Page", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) { context.PreventNavigation(); return; diff --git a/app/MindWork AI Studio/Components/Pages/About.razor b/app/MindWork AI Studio/Components/Pages/About.razor index a5cef1ae..b03602ab 100644 --- a/app/MindWork AI Studio/Components/Pages/About.razor +++ b/app/MindWork AI Studio/Components/Pages/About.razor @@ -9,14 +9,14 @@ The following list shows the versions of the MindWork AI Studio, the used compilers, build time, etc.: - - - - - - - - + + + + + + + + Check for updates diff --git a/app/MindWork AI Studio/Components/Pages/Chat.razor.cs b/app/MindWork AI Studio/Components/Pages/Chat.razor.cs index 09dd7083..491053df 100644 --- a/app/MindWork AI Studio/Components/Pages/Chat.razor.cs +++ b/app/MindWork AI Studio/Components/Pages/Chat.razor.cs @@ -235,7 +235,7 @@ public partial class Chat : MSGComponentBase, IAsyncDisposable var dialogReference = await this.DialogService.ShowAsync("Delete Chat", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; } @@ -297,7 +297,7 @@ public partial class Chat : MSGComponentBase, IAsyncDisposable var confirmationDialogReference = await this.DialogService.ShowAsync("Unsaved Changes", confirmationDialogParameters, DialogOptions.FULLSCREEN); var confirmationDialogResult = await confirmationDialogReference.Result; - if (confirmationDialogResult.Canceled) + if (confirmationDialogResult is null || confirmationDialogResult.Canceled) return; } @@ -310,7 +310,7 @@ public partial class Chat : MSGComponentBase, IAsyncDisposable var dialogReference = await this.DialogService.ShowAsync("Move Chat to Workspace", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; var workspaceId = dialogResult.Data is Guid id ? id : default; diff --git a/app/MindWork AI Studio/Components/Pages/IconFinder/AssistantIconFinder.razor.cs b/app/MindWork AI Studio/Components/Pages/IconFinder/AssistantIconFinder.razor.cs index 96d06e9f..a04398b7 100644 --- a/app/MindWork AI Studio/Components/Pages/IconFinder/AssistantIconFinder.razor.cs +++ b/app/MindWork AI Studio/Components/Pages/IconFinder/AssistantIconFinder.razor.cs @@ -1,5 +1,3 @@ -using AIStudio.Provider; - namespace AIStudio.Components.Pages.IconFinder; public partial class AssistantIconFinder : AssistantBaseCore diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs index 23c14d31..d2ce4b12 100644 --- a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs +++ b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs @@ -31,10 +31,10 @@ public partial class Settings : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Add Provider", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; - var addedProvider = (AIStudio.Settings.Provider)dialogResult.Data; + var addedProvider = (AIStudio.Settings.Provider)dialogResult.Data!; addedProvider = addedProvider with { Num = this.SettingsManager.ConfigurationData.NextProviderNum++ }; this.SettingsManager.ConfigurationData.Providers.Add(addedProvider); @@ -58,10 +58,10 @@ public partial class Settings : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Edit Provider", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; - var editedProvider = (AIStudio.Settings.Provider)dialogResult.Data; + 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. @@ -81,7 +81,7 @@ public partial class Settings : ComponentBase var dialogReference = await this.DialogService.ShowAsync("Delete Provider", dialogParameters, DialogOptions.FULLSCREEN); var dialogResult = await dialogReference.Result; - if (dialogResult.Canceled) + if (dialogResult is null || dialogResult.Canceled) return; var providerInstance = provider.CreateProvider(); diff --git a/app/MindWork AI Studio/Components/Pages/TextSummarizer/AssistantTextSummarizer.razor.cs b/app/MindWork AI Studio/Components/Pages/TextSummarizer/AssistantTextSummarizer.razor.cs index 00e0742a..1a15c90f 100644 --- a/app/MindWork AI Studio/Components/Pages/TextSummarizer/AssistantTextSummarizer.razor.cs +++ b/app/MindWork AI Studio/Components/Pages/TextSummarizer/AssistantTextSummarizer.razor.cs @@ -1,4 +1,3 @@ -using AIStudio.Provider; using AIStudio.Tools; namespace AIStudio.Components.Pages.TextSummarizer; diff --git a/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs index 87c93f40..fcfcef30 100644 --- a/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs +++ b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs @@ -1,4 +1,3 @@ -using AIStudio.Provider; using AIStudio.Tools; namespace AIStudio.Components.Pages.Translator; diff --git a/app/MindWork AI Studio/Components/Routes.razor b/app/MindWork AI Studio/Components/Routes.razor index 0d877c05..fca67351 100644 --- a/app/MindWork AI Studio/Components/Routes.razor +++ b/app/MindWork AI Studio/Components/Routes.razor @@ -7,4 +7,5 @@ + \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/ProviderDialog.razor b/app/MindWork AI Studio/Settings/ProviderDialog.razor index e83740e6..d90e4355 100644 --- a/app/MindWork AI Studio/Settings/ProviderDialog.razor +++ b/app/MindWork AI Studio/Settings/ProviderDialog.razor @@ -79,10 +79,10 @@ { Issues - + @foreach (var issue in this.dataIssues) { - + @issue }