about summary refs log tree commit diff
path: root/MatrixRoomUtils.Web/Pages/DevOptions.razor
blob: e1b6ac08a1a48f1addac61af44deb43cb4af4ca2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
@page "/DevOptions"
@using MatrixRoomUtils.Core.Extensions
@inject NavigationManager NavigationManager
@inject ILocalStorageService LocalStorage

<PageTitle>Developer options</PageTitle>

<h3>Rory&::MatrixUtils - Developer options</h3>
<hr/>

<InputCheckbox @bind-Value="@LocalStorageWrapper.Settings.DeveloperSettings.EnableLogViewers" @oninput="@LogStuff"></InputCheckbox><label> Enable log views</label><br/>
<InputCheckbox @bind-Value="@LocalStorageWrapper.Settings.DeveloperSettings.EnableConsoleLogging" @oninput="@LogStuff"></InputCheckbox><label> Enable console logging</label><br/>
<InputCheckbox @bind-Value="@LocalStorageWrapper.Settings.DeveloperSettings.EnablePortableDevtools" @oninput="@LogStuff"></InputCheckbox><label> Enable portable devtools</label><br/>
<button @onclick="@DropCaches">Drop caches</button>
<button @onclick="@RandomiseCacheTimers">Randomise cache timers</button>
<br/>

<details open>
    <summary>View caches</summary>
    <p>Generic cache:</p>
    <ul>
        @foreach (var item in RuntimeCache.GenericResponseCache)
        {
            <li>
                @item.Key: @item.Value.Cache.Count entries<br/>
                Default expiry: @item.Value.DefaultExpiry<br/>
                @if (item.Value.Cache.Count > 0)
                {
                    <p>Earliest expiry: @(item.Value.Cache.Min(x => x.Value.ExpiryTime)) (@string.Format("{0:g}", item.Value.Cache.Min(x => x.Value.ExpiryTime).Value.Subtract(DateTime.Now)) from now)</p>
                    @* <p>Average expiry: @(item.Value.Cache.Average(x => x.Value.ExpiryTime.Value))(@item.Value.Cache.Average(x => x.Value.ExpiryTime).Value.Subtract(DateTime.Now) from now)</p> *@
                    <p>Last expiry: @(item.Value.Cache.Max(x => x.Value.ExpiryTime)) (@string.Format("{0:g}", item.Value.Cache.Max(x => x.Value.ExpiryTime).Value.Subtract(DateTime.Now)) from now)</p> 
                }
            </li>
        }
    </ul>
</details>

@code {
    protected override async Task OnInitializedAsync()
    {
        await LocalStorageWrapper.LoadFromLocalStorage(LocalStorage);
        await base.OnInitializedAsync();
        await LocalStorageWrapper.SaveToLocalStorage(LocalStorage);
        Task.Run(async () =>
        {
            while (true)
            {
                await Task.Delay(100);
                StateHasChanged();
            }
        });
    }

    protected async Task LogStuff()
    {
        await Task.Delay(100);
        Console.WriteLine($"Settings: {LocalStorageWrapper.Settings.ToJson()}");
        
        await LocalStorageWrapper.SaveToLocalStorage(LocalStorage);
    }

    protected async Task DropCaches()
    {
        RuntimeCache.GenericResponseCache.Clear();
        RuntimeCache.HomeserverResolutionCache.Clear();
        await LocalStorageWrapper.SaveToLocalStorage(LocalStorage);
    }

    protected async Task RandomiseCacheTimers()
    {
        foreach (var keyValuePair in RuntimeCache.GenericResponseCache)
        {
            Console.WriteLine($"Randomising cache timer for {keyValuePair.Key}");
            foreach (var cacheItem in keyValuePair.Value.Cache)
            {
                cacheItem.Value.ExpiryTime = DateTime.Now.AddSeconds(Random.Shared.Next(15, 120));
            }
            
            await LocalStorageWrapper.SaveToLocalStorage(LocalStorage);
        }
    }

}