@page "/config/gameconfig" @rendermode InteractiveServer Game Config

Game Config

Edit the gameconfigs.json file that controls various game settings.

@if (loading) {
} else if (!string.IsNullOrEmpty(error)) {
@error
} else { @if (activeTab == "edit") {
@if (!string.IsNullOrEmpty(saveMessage)) { @saveMessage }
} else if (activeTab == "browse") {
@foreach (var entry in configEntries.Where(e => string.IsNullOrEmpty(filterText) || e.Key.Contains(filterText, StringComparison.OrdinalIgnoreCase))) { }
KeyValue
@entry.Key @entry.Value
@configEntries.Count(e => string.IsNullOrEmpty(filterText) || e.Key.Contains(filterText, StringComparison.OrdinalIgnoreCase)) entries
} } @code { [Inject] private HttpClient Http { get; set; } = default!; private bool loading = true; private bool saving; private string? error; private string? saveMessage; private string jsonContent = ""; private string activeTab = "browse"; private string filterText = ""; private List configEntries = new(); protected override async Task OnInitializedAsync() { try { jsonContent = await Http.GetStringAsync("/admin/api/config/gameconfigs"); configEntries = JsonSerializer.Deserialize>(jsonContent) ?? new(); } catch (Exception ex) { error = $"Failed to load: {ex.Message}"; } finally { loading = false; } } private string GetActiveClass(string tab) => activeTab == tab ? "active" : ""; private void SetTab(string tab) { activeTab = tab; } private async Task Save() { saving = true; saveMessage = null; try { var content = new StringContent(jsonContent, System.Text.Encoding.UTF8, "application/json"); var response = await Http.PutAsync("/admin/api/config/gameconfigs", content); response.EnsureSuccessStatusCode(); saveMessage = "Saved successfully!"; configEntries = JsonSerializer.Deserialize>(jsonContent) ?? new(); } catch (Exception ex) { saveMessage = $"Error: {ex.Message}"; } finally { saving = false; } } private class ConfigEntry { public string Key { get; set; } = ""; public string Value { get; set; } = ""; public string? EndTime { get; set; } public string? StartTime { get; set; } } }