about summary refs log tree commit diff
path: root/MatrixUtils.Web/Pages/Dev/DevOptions.razor
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2024-01-24 02:31:56 +0100
committerRory& <root@rory.gay>2024-01-24 17:05:25 +0100
commit03313562d21d5db9bf6a14ebbeab80e06c883d3a (patch)
treee000546a2ee8e6a886a7ed9fd01ad674178fb7cb /MatrixUtils.Web/Pages/Dev/DevOptions.razor
parentMake RMU installable (diff)
downloadMatrixUtils-03313562d21d5db9bf6a14ebbeab80e06c883d3a.tar.xz
MRU->RMU, fixes, cleanup
Diffstat (limited to 'MatrixUtils.Web/Pages/Dev/DevOptions.razor')
-rw-r--r--MatrixUtils.Web/Pages/Dev/DevOptions.razor71
1 files changed, 71 insertions, 0 deletions
diff --git a/MatrixUtils.Web/Pages/Dev/DevOptions.razor b/MatrixUtils.Web/Pages/Dev/DevOptions.razor
new file mode 100644
index 0000000..6ca0b53
--- /dev/null
+++ b/MatrixUtils.Web/Pages/Dev/DevOptions.razor
@@ -0,0 +1,71 @@
+@page "/Dev/Options"
+@using ArcaneLibs.Extensions
+@using System.Text.Unicode
+@using System.Text
+@using System.Text.Json
+@inject NavigationManager NavigationManager
+@inject ILocalStorageService LocalStorage
+
+<PageTitle>Developer options</PageTitle>
+
+<h3>Rory&::MatrixUtils - Developer options</h3>
+<hr/>
+
+<p>
+    <span>Import local storage: </span>
+    <InputFile OnChange="ImportLocalStorage"></InputFile>
+</p>
+<p>
+    <span>Export local storage: </span>
+    <button @onclick="@ExportLocalStorage">Export</button>
+</p>
+
+@if (userSettings is not null) {
+    <InputCheckbox @bind-Value="@userSettings.DeveloperSettings.EnableLogViewers" @oninput="@LogStuff"></InputCheckbox>
+    <label> Enable log views</label>
+    <br/>
+    <InputCheckbox @bind-Value="@userSettings.DeveloperSettings.EnableConsoleLogging" @oninput="@LogStuff"></InputCheckbox>
+    <label> Enable console logging</label>
+    <br/>
+    <InputCheckbox @bind-Value="@userSettings.DeveloperSettings.EnablePortableDevtools" @oninput="@LogStuff"></InputCheckbox>
+    <label> Enable portable devtools</label>
+    <br/>
+}
+<br/>
+
+@code {
+
+    private RMUStorageWrapper.Settings? userSettings { get; set; }
+    protected override async Task OnInitializedAsync() {
+        // userSettings = await TieredStorage.DataStorageProvider.LoadObjectAsync<RMUStorageWrapper.Settings>("rmu.settings");
+        
+        await base.OnInitializedAsync();
+    }
+
+    private async Task LogStuff() {
+        await Task.Delay(100);
+        Console.WriteLine($"Settings: {userSettings.ToJson()}");
+        await TieredStorage.DataStorageProvider.SaveObjectAsync("rmu.settings", userSettings);
+    }
+
+    private async Task ExportLocalStorage() {
+        var keys = await TieredStorage.DataStorageProvider.GetAllKeysAsync();
+        var data = new Dictionary<string, object>();
+        foreach (var key in keys) {
+            data.Add(key, await TieredStorage.DataStorageProvider.LoadObjectAsync<object>(key));
+        }
+        var dataUri = "data:application/json;base64,";
+        dataUri += Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonSerializer.Serialize(data))); 
+        await JSRuntime.InvokeVoidAsync("window.open", dataUri, "_blank");
+    }
+
+    private async Task ImportLocalStorage(InputFileChangeEventArgs obj) {
+        if (obj.FileCount != 1) return;
+        var data = await JsonSerializer.DeserializeAsync<Dictionary<string, object>>(obj.File.OpenReadStream());
+        foreach (var (key, value) in data) {
+            await TieredStorage.DataStorageProvider.SaveObjectAsync(key, value);
+        }
+        NavigationManager.NavigateTo(NavigationManager.Uri, true, true);
+    }
+
+}