about summary refs log tree commit diff
path: root/MatrixRoomUtils.Web/Classes
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixRoomUtils.Web/Classes')
-rw-r--r--MatrixRoomUtils.Web/Classes/LocalStorageWrapper.cs35
-rw-r--r--MatrixRoomUtils.Web/Classes/RuntimeStorage.cs55
2 files changed, 35 insertions, 55 deletions
diff --git a/MatrixRoomUtils.Web/Classes/LocalStorageWrapper.cs b/MatrixRoomUtils.Web/Classes/LocalStorageWrapper.cs
new file mode 100644
index 0000000..462364c
--- /dev/null
+++ b/MatrixRoomUtils.Web/Classes/LocalStorageWrapper.cs
@@ -0,0 +1,35 @@
+using Blazored.LocalStorage;
+using MatrixRoomUtils.Authentication;
+using MatrixRoomUtils.Responses;
+
+namespace MatrixRoomUtils.Web.Classes;
+
+public partial class LocalStorageWrapper
+{
+    //some basic logic
+    public static async Task LoadFromLocalStorage(ILocalStorageService localStorage)
+    {
+        RuntimeCache.AccessToken = await localStorage.GetItemAsync<string>("rory.matrixroomutils.token");
+        RuntimeCache.CurrentHomeserver = await localStorage.GetItemAsync<string>("rory.matrixroomutils.current_homeserver");
+        RuntimeCache.LoginSessions = await localStorage.GetItemAsync<Dictionary<string, UserInfo>>("rory.matrixroomutils.user_cache") ?? new();
+        RuntimeCache.HomeserverResolutionCache = await localStorage.GetItemAsync<Dictionary<string, HomeServerResolutionResult>>("rory.matrixroomutils.homeserver_resolution_cache") ?? new();
+        Console.WriteLine($"[LocalStorageWrapper] Loaded {RuntimeCache.LoginSessions.Count} login sessions, {RuntimeCache.HomeserverResolutionCache.Count} homeserver resolution cache entries");
+        if (RuntimeCache.AccessToken != null && RuntimeCache.CurrentHomeserver != null)
+        {
+            Console.WriteLine($"Access token and current homeserver are not null, creating authenticated home server");
+            RuntimeCache.CurrentHomeServer = new AuthenticatedHomeServer(RuntimeCache.LoginSessions[RuntimeCache.AccessToken].LoginResponse.UserId, RuntimeCache.AccessToken, RuntimeCache.LoginSessions[RuntimeCache.AccessToken].LoginResponse.HomeServer);
+            Console.WriteLine("Created authenticated home server");
+        }
+        RuntimeCache.WasLoaded = true;
+    }
+
+    public static async Task SaveToLocalStorage(ILocalStorageService localStorage)
+    {
+        await localStorage.SetItemAsStringAsync("rory.matrixroomutils.token", RuntimeCache.AccessToken);
+        await localStorage.SetItemAsync("rory.matrixroomutils.current_homeserver", RuntimeCache.CurrentHomeserver);
+        await localStorage.SetItemAsync("rory.matrixroomutils.user_cache", RuntimeCache.LoginSessions);
+        await localStorage.SetItemAsync("rory.matrixroomutils.homeserver_resolution_cache", 
+            RuntimeCache.HomeserverResolutionCache.DistinctBy(x => x.Key)
+                .ToDictionary(x => x.Key, x => x.Value));
+    }
+}
\ No newline at end of file
diff --git a/MatrixRoomUtils.Web/Classes/RuntimeStorage.cs b/MatrixRoomUtils.Web/Classes/RuntimeStorage.cs
deleted file mode 100644
index d9d626f..0000000
--- a/MatrixRoomUtils.Web/Classes/RuntimeStorage.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using Blazored.LocalStorage;
-using MatrixRoomUtils.Authentication;
-using MatrixRoomUtils.Responses;
-
-namespace MatrixRoomUtils.Web.Classes;
-
-public class RuntimeStorage
-{
-    public static bool WasLoaded = false;
-    public static UserInfo? CurrentUserInfo { get; set; }
-    public static string AccessToken { get; set; }
-    public static string? CurrentHomeserver { get; set; }
-    
-    public static List<string> AccessTokens { get; set; } = new();
-    //public static AppSettings AppSettings { get; set; } = new();
-
-    public static Dictionary<string, UserInfo> UsersCache { get; set; } = new();
-
-    public static Dictionary<string, HomeServerResolutionResult> HomeserverResolutionCache { get; set; } = new();
-
-
-    //some basic logic
-    public static async Task LoadFromLocalStorage(ILocalStorageService localStorage)
-    {
-        AccessToken = await localStorage.GetItemAsync<string>("rory.matrixroomutils.token");
-        CurrentHomeserver = await localStorage.GetItemAsync<string>("rory.matrixroomutils.current_homeserver");
-        AccessTokens = await localStorage.GetItemAsync<List<string>>("rory.matrixroomutils.tokens") ?? new();
-        UsersCache = await localStorage.GetItemAsync<Dictionary<string, UserInfo>>("rory.matrixroomutils.user_cache") ?? new();
-        HomeserverResolutionCache = await localStorage.GetItemAsync<Dictionary<string, HomeServerResolutionResult>>("rory.matrixroomutils.homeserver_resolution_cache") ?? new();
-        WasLoaded = true;
-    }
-
-    public static async Task SaveToLocalStorage(ILocalStorageService localStorage)
-    {
-        await localStorage.SetItemAsStringAsync("rory.matrixroomutils.token", AccessToken);
-        await localStorage.SetItemAsync("rory.matrixroomutils.current_homeserver", CurrentHomeserver);
-        await localStorage.SetItemAsync("rory.matrixroomutils.tokens", AccessTokens);
-        await localStorage.SetItemAsync("rory.matrixroomutils.user_cache", UsersCache);
-        await localStorage.SetItemAsync("rory.matrixroomutils.homeserver_resolution_cache", 
-            HomeserverResolutionCache.DistinctBy(x => x.Key)
-                .ToDictionary(x => x.Key, x => x.Value));
-    }
-}
-
-public class UserInfo
-{
-    public ProfileResponse Profile { get; set; } = new();
-    public LoginResponse LoginResponse { get; set; }
-}
-
-public class HomeServerResolutionResult
-{
-    public string Result { get; set; }
-    public DateTime ResolutionTime { get; set; }
-}
\ No newline at end of file