diff --git a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor
index 4d82882..40df286 100644
--- a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor
+++ b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor
@@ -28,7 +28,7 @@
@bind-SelectedValues="_selectedCaddyConfigurations">
@foreach (var (index, caddyConfig) in _availableCaddyConfigurations.Index())
{
-
+
@if (index < _availableCaddyConfigurations.Count - 1)
{
diff --git a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor.cs b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor.cs
index f3288ae..73e7dbb 100644
--- a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor.cs
+++ b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxiesPage.razor.cs
@@ -42,11 +42,11 @@ public partial class CaddyReverseProxiesPage : ComponentBase
private async Task NewReverseProxy()
{
var dialog = await DialogService.ShowAsync("New configuration",
- options: new DialogOptions
+ options: new MudBlazor.DialogOptions
{
FullWidth = true,
- MaxWidth = MaxWidth.Medium
- }, parameters: new DialogParameters
+ MaxWidth = MudBlazor.MaxWidth.Medium
+ }, parameters: new MudBlazor.DialogParameters
{
{ "FileName", string.Empty }
});
@@ -56,6 +56,7 @@ public partial class CaddyReverseProxiesPage : ComponentBase
if (result is { Data: bool, Canceled: false } && (bool)result.Data)
{
Refresh();
+ await RestartCaddy();
}
}
@@ -127,6 +128,8 @@ public partial class CaddyReverseProxiesPage : ComponentBase
_isProcessing = true;
StateHasChanged();
Snackbar.Add("Restarting Caddy container", Severity.Info);
+ // Added a small delay for debugging purposes to ensure UI renders
+ await Task.Delay(100);
await DockerService.RestartCaddyContainerAsync();
Snackbar.Add("Caddy container restarted successfully", Severity.Success);
_isProcessing = false;
diff --git a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor.cs b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor.cs
index db68653..938da40 100644
--- a/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor.cs
+++ b/CaddyManager/Components/Pages/Caddy/CaddyReverseProxies/CaddyReverseProxyItem.razor.cs
@@ -16,6 +16,12 @@ public partial class CaddyReverseProxyItem : ComponentBase
///
[Parameter]
public string FileName { get; set; } = string.Empty;
+
+ ///
+ /// Callback to refresh the Caddy reverse proxies on the main page
+ ///
+ [Parameter]
+ public EventCallback OnCaddyRestartRequired { get; set; }
///
/// Dialog service for showing the Caddy file editor dialog
@@ -63,8 +69,13 @@ public partial class CaddyReverseProxyItem : ComponentBase
{ "FileName", FileName }
});
- await dialog.Result;
+ var result = await dialog.Result;
+ if (result is { Data: bool, Canceled: false } && (bool)result.Data)
+ {
+ await OnCaddyRestartRequired.InvokeAsync();
+ }
+
Refresh();
}
}
\ No newline at end of file
diff --git a/CaddyManager/Components/Pages/Caddy/CaddyfileEditor/CaddyfileEditor.razor.cs b/CaddyManager/Components/Pages/Caddy/CaddyfileEditor/CaddyfileEditor.razor.cs
index 1018032..522904a 100644
--- a/CaddyManager/Components/Pages/Caddy/CaddyfileEditor/CaddyfileEditor.razor.cs
+++ b/CaddyManager/Components/Pages/Caddy/CaddyfileEditor/CaddyfileEditor.razor.cs
@@ -78,11 +78,12 @@ public partial class CaddyfileEditor : ComponentBase
if (response.Success)
{
Snackbar.Add($"{FileName} Caddy configuration saved successfully", Severity.Success);
- MudDialog.Close(DialogResult.Ok(true));
+ MudDialog.Close(DialogResult.Ok(false)); // Indicate successful save but no restart
}
else
{
Snackbar.Add(response.Message, Severity.Error);
+ MudDialog.Close(DialogResult.Ok(false)); // Indicate failed save
}
}
@@ -99,18 +100,24 @@ public partial class CaddyfileEditor : ComponentBase
///
private async Task SaveAndRestart()
{
- await Submit();
-
- // Restart the Caddy container
- try
+ var submitResponse = CaddyService.SaveCaddyConfiguration(new CaddySaveConfigurationRequest
{
- Snackbar.Add("Restarting Caddy container", Severity.Info);
- await DockerService.RestartCaddyContainerAsync();
- Snackbar.Add("Caddy container restarted successfully", Severity.Success);
+ IsNew = IsNew,
+ FileName = FileName,
+ Content = await _codeEditor.GetValue(),
+ });
+
+ if (submitResponse.Success)
+ {
+ Snackbar.Add($"{FileName} Caddy configuration saved successfully", Severity.Success);
+ // Indicate successful save and that a restart is required by the calling component
+ MudDialog.Close(DialogResult.Ok(true));
}
- catch
+ else
{
- Snackbar.Add("Failed to restart the Caddy container", Severity.Error);
+ Snackbar.Add(submitResponse.Message, Severity.Error);
+ // Indicate failed save, no restart needed
+ MudDialog.Close(DialogResult.Ok(false));
}
}
}
\ No newline at end of file