about summary refs log tree commit diff
path: root/MatrixRoomUtils.Desktop/MRUStorageWrapper.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MatrixRoomUtils.Desktop/MRUStorageWrapper.cs')
-rw-r--r--MatrixRoomUtils.Desktop/MRUStorageWrapper.cs123
1 files changed, 0 insertions, 123 deletions
diff --git a/MatrixRoomUtils.Desktop/MRUStorageWrapper.cs b/MatrixRoomUtils.Desktop/MRUStorageWrapper.cs
deleted file mode 100644

index b69c50d..0000000 --- a/MatrixRoomUtils.Desktop/MRUStorageWrapper.cs +++ /dev/null
@@ -1,123 +0,0 @@ -using Avalonia; -using LibMatrix; -using LibMatrix.Homeservers; -using LibMatrix.Responses; -using LibMatrix.Services; - -namespace MatrixRoomUtils.Desktop; - -public class MRUStorageWrapper(TieredStorageService storageService, HomeserverProviderService homeserverProviderService) { - public async Task<List<LoginResponse>?> GetAllTokens() { - if (!await storageService.DataStorageProvider.ObjectExistsAsync("mru.tokens")) { - return null; - } - return await storageService.DataStorageProvider.LoadObjectAsync<List<LoginResponse>>("mru.tokens") ?? - new List<LoginResponse>(); - } - - public async Task<LoginResponse?> GetCurrentToken() { - if (!await storageService.DataStorageProvider.ObjectExistsAsync("token")) { - return null; - } - var currentToken = await storageService.DataStorageProvider.LoadObjectAsync<LoginResponse>("token"); - var allTokens = await GetAllTokens(); - if (allTokens is null or { Count: 0 }) { - await SetCurrentToken(null); - return null; - } - - if (currentToken is null) { - await SetCurrentToken(currentToken = allTokens[0]); - } - - if (!allTokens.Any(x => x.AccessToken == currentToken.AccessToken)) { - await SetCurrentToken(currentToken = allTokens[0]); - } - - return currentToken; - } - - public async Task AddToken(LoginResponse loginResponse) { - var tokens = await GetAllTokens() ?? new List<LoginResponse>(); - - tokens.Add(loginResponse); - await storageService.DataStorageProvider.SaveObjectAsync("mru.tokens", tokens); - if (await GetCurrentToken() is null) - await SetCurrentToken(loginResponse); - } - - private async Task<AuthenticatedHomeserverGeneric?> GetCurrentSession() { - var token = await GetCurrentToken(); - if (token == null) { - return null; - } - - return await homeserverProviderService.GetAuthenticatedWithToken(token.Homeserver, token.AccessToken); - } - - public async Task<AuthenticatedHomeserverGeneric?> GetCurrentSessionOrPrompt() { - AuthenticatedHomeserverGeneric? session = null; - - try { - //catch if the token is invalid - session = await GetCurrentSession(); - } - catch (MatrixException e) { - if (e.ErrorCode == "M_UNKNOWN_TOKEN") { - var token = await GetCurrentToken(); - // _navigationManager.NavigateTo("/InvalidSession?ctx=" + token.AccessToken); - return null; - } - - throw; - } - - if (session is null) { - // _navigationManager.NavigateTo("/Login"); - var wnd = new LoginWindow(this); - wnd.Position = MainWindow.Instance.Position + new PixelPoint(50, 50); - await wnd.ShowDialog(MainWindow.Instance); - while (wnd.IsVisible) { - await Task.Delay(100); - } - session = await GetCurrentSession(); - } - - return session; - } - - public class Settings { - public DeveloperSettings DeveloperSettings { get; set; } = new(); - } - - public class DeveloperSettings { - public bool EnableLogViewers { get; set; } = false; - public bool EnableConsoleLogging { get; set; } = true; - public bool EnablePortableDevtools { get; set; } = false; - } - - public async Task RemoveToken(LoginResponse auth) { - var tokens = await GetAllTokens(); - if (tokens == null) { - return; - } - - tokens.RemoveAll(x => x.AccessToken == auth.AccessToken); - await storageService.DataStorageProvider.SaveObjectAsync("mru.tokens", tokens); - } - - public async Task SetCurrentToken(LoginResponse? auth) => await storageService.DataStorageProvider.SaveObjectAsync("token", auth); - - public async Task<LoginResponse?> Login(string homeserver, string username, string password) { - try { - return await homeserverProviderService.Login(homeserver, username, password); - } - catch (MatrixException e) { - if (e.ErrorCode == "M_FORBIDDEN") { - return null; - } - - throw; - } - } -}