Storage - Replace LiteDB with SQLite + EF Core (#843)

Storage - Added LiteDB to SQLite migration
UI - Try to die a bit more gracefully
Core - Delay start watching plugins for hot reload after initializing
UI - Simplify category management logic
UI - Avoid crash during profile icon load
Storage - Fix entry metadata retrieval
This commit is contained in:
RobertBeekman authored and GitHub committed 2024-03-13 20:19:21 +01:00
1 parent 9132301dbf
commit 551921db9f
130 files changed
+2965 -1135

No files matched your search

@@ -1,31 +1,30 @@
using Artemis.WebClient.Workshop.Entities;
using LiteDB;
using Artemis.Core;
using Artemis.Core.Services;
namespace Artemis.WebClient.Workshop.Repositories;
internal class AuthenticationRepository : IAuthenticationRepository
{
private readonly LiteRepository _repository;
private readonly PluginSetting<string> _refreshToken;
public AuthenticationRepository(LiteRepository repository)
public AuthenticationRepository(ISettingsService settingsService)
{
_repository = repository;
_repository.Database.GetCollection<RefreshTokenEntity>().EnsureIndex(s => s.RefreshToken);
// Of course anyone can grab these indirectly, but that goes for whatever we do.
// ISettingsService is a protected service so we at least don't make it very straightforward.
_refreshToken = settingsService.GetSetting<string>("Workshop.RefreshToken");
}
/// <inheritdoc />
public void SetRefreshToken(string? refreshToken)
{
_repository.Database.GetCollection<RefreshTokenEntity>().DeleteAll();
if (refreshToken != null)
_repository.Insert(new RefreshTokenEntity {RefreshToken = refreshToken});
_refreshToken.Value = refreshToken;
_refreshToken.Save();
}
/// <inheritdoc />
public string? GetRefreshToken()
{
return _repository.Query<RefreshTokenEntity>().FirstOrDefault()?.RefreshToken;
return _refreshToken.Value;
}
}