login!
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
using OwnChar.App.Desktop.Api;
|
||||
using OwnChar.App.Desktop.Settings;
|
||||
using OwnChar.Data;
|
||||
using OwnChar.Data.Managers;
|
||||
using OwnChar.Data.Providers.JsonFile;
|
||||
using Pilz.Plugins.Advanced;
|
||||
using Telerik.WinControls.UI;
|
||||
|
||||
namespace OwnChar.App.Desktop.Features.LoginProviders;
|
||||
|
||||
internal class JsonFileLoginProvider() : LoginProvider(FeatureCodes.LoginProvider, "ownchar.jsonfile"), IPluginFeatureProvider<JsonFileLoginProvider>
|
||||
{
|
||||
private const string defaultJsonFileName = "ownchar.db.json";
|
||||
|
||||
public static JsonFileLoginProvider Instance { get; } = new();
|
||||
|
||||
public override IDataManager GetDefault(IMainWindowApi api)
|
||||
{
|
||||
var settings = AppApi.Instance.Settings.Get<JsonFileLoginProviderSettings>();
|
||||
return new DefaultDataManager(new JsonFileDataProvider(settings?.RecentFilePath ?? defaultJsonFileName));
|
||||
}
|
||||
|
||||
public override void Configure(IMainWindowApi api, ref IDataManager? manager)
|
||||
{
|
||||
var settings = AppApi.Instance.Settings.Get<JsonFileLoginProviderSettings>();
|
||||
using var ofd = new RadOpenFileDialog
|
||||
{
|
||||
Filter = "OwnChar Json database (*.json)|*.json"
|
||||
};
|
||||
|
||||
if (manager is DefaultDataManager defaultManager && defaultManager.DataProvider is JsonFileDataProvider jsonFileDataProvider)
|
||||
ofd.FileName = jsonFileDataProvider.JsonFilePath;
|
||||
else
|
||||
ofd.FileName = settings.RecentFilePath;
|
||||
|
||||
if (ofd.ShowDialog(api.Window) != System.Windows.Forms.DialogResult.OK)
|
||||
return;
|
||||
|
||||
settings.RecentFilePath = ofd.FileName;
|
||||
|
||||
manager = new DefaultDataManager(new JsonFileDataProvider(ofd.FileName ?? defaultJsonFileName));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user