diff --git a/I18N Commander/Processor/SectionProcessor.cs b/I18N Commander/Processor/SectionProcessor.cs
index 2242d94..a1a7844 100644
--- a/I18N Commander/Processor/SectionProcessor.cs
+++ b/I18N Commander/Processor/SectionProcessor.cs
@@ -30,7 +30,7 @@ public static class SectionProcessor
///
/// Compute the new sections key and its depth, then store the section in the database.
///
- public static async Task AddSection(DataContext db, string text, string? parentKey)
+ public static async Task> AddSection(DataContext db, string text, string? parentKey)
{
// Remove any whitespaces from the section name, regardless of how many e.g. spaces the user typed:
var key = string.Join('_', text.Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries)).ToUpperInvariant();
@@ -58,9 +58,16 @@ public static class SectionProcessor
TextElements = new(),
};
- db.Sections.Add(rootSection);
- await db.SaveChangesAsync();
- return rootSection;
+ try
+ {
+ db.Sections.Add(rootSection);
+ await db.SaveChangesAsync();
+ return new ProcessorResult(rootSection);
+ }
+ catch (Exception e)
+ {
+ e.ToProcessorResult();
+ }
}
// Read the parent from the database:
@@ -77,10 +84,17 @@ public static class SectionProcessor
TextElements = new(),
Depth = parent.Depth + 1,
};
-
- await db.Sections.AddAsync(section);
- await db.SaveChangesAsync();
- return section;
+
+ try
+ {
+ await db.Sections.AddAsync(section);
+ await db.SaveChangesAsync();
+ return new ProcessorResult(section);
+ }
+ catch (Exception e)
+ {
+ return e.ToProcessorResult();
+ }
}
public static async Task RemoveSection(DataContext db, string selectedKey)
@@ -109,7 +123,7 @@ public static class SectionProcessor
return await db.Sections.CountAsync(n => n.Parent == section);
}
- public static async Task RenameSection(DataContext db, string selectedNodeKey, string alteredName)
+ public static async Task> RenameSection(DataContext db, string selectedNodeKey, string alteredName)
{
// Read the section from the database:
var section = await db.Sections.FirstOrDefaultAsync(n => n.DataKey == selectedNodeKey);
@@ -132,8 +146,16 @@ public static class SectionProcessor
section.Name = alteredName;
section.DataKey = newKey;
- await db.SaveChangesAsync();
- return section;
+
+ try
+ {
+ await db.SaveChangesAsync();
+ return new ProcessorResult(section);
+ }
+ catch (Exception e)
+ {
+ return e.ToProcessorResult();
+ }
}
public static Section GetSection(DataContext db, string sectionKey) => db.Sections.First(n => n.DataKey == sectionKey);
diff --git a/I18N Commander/UI WinForms/Components/SectionTree.cs b/I18N Commander/UI WinForms/Components/SectionTree.cs
index 2ebbc55..41fc3c3 100644
--- a/I18N Commander/UI WinForms/Components/SectionTree.cs
+++ b/I18N Commander/UI WinForms/Components/SectionTree.cs
@@ -141,11 +141,15 @@ public partial class SectionTree : UserControl
// Add the new section to the database:
var addedSection = await SectionProcessor.AddSection(this.db, result.Text, addRootNode ? null : selectedNode?.Name);
+ addedSection.ProcessError();
+ if(!addedSection.Successful)
+ return;
+
// Add the new section to the tree control:
var node = new TreeNode
{
- Name = addedSection.DataKey, // [sic] name is the key
- Text = addedSection.Name,
+ Name = addedSection.Result!.DataKey, // [sic] name is the key
+ Text = addedSection.Result.Name,
StateImageIndex = 1,
};
@@ -233,8 +237,12 @@ public partial class SectionTree : UserControl
// Rename the section:
var alteredSection = await SectionProcessor.RenameSection(this.db, selectedNode.Name, result.Text);
+ alteredSection.ProcessError();
+ if(!alteredSection.Successful)
+ return;
+
// Rename the selected node:
- selectedNode.Text = alteredSection.Name;
- selectedNode.Name = alteredSection.DataKey; // [sic] name is the key
+ selectedNode.Text = alteredSection.Result!.Name;
+ selectedNode.Name = alteredSection.Result.DataKey; // [sic] name is the key
}
}
\ No newline at end of file