diff --git a/mRemoteV1/Config/CredentialRepositoryListSaver.cs b/mRemoteV1/Config/CredentialRepositoryListSaver.cs new file mode 100644 index 000000000..1a7a821d8 --- /dev/null +++ b/mRemoteV1/Config/CredentialRepositoryListSaver.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using mRemoteNG.Config.DataProviders; +using mRemoteNG.Config.Serializers.CredentialProviderSerializer; +using mRemoteNG.Credential; + +namespace mRemoteNG.Config +{ + public class CredentialRepositoryListSaver + { + private readonly IDataProvider _dataProvider; + + public CredentialRepositoryListSaver(IDataProvider dataProvider) + { + if (dataProvider == null) + throw new ArgumentNullException(nameof(dataProvider)); + + _dataProvider = dataProvider; + } + + public void Save(IEnumerable repositories) + { + var serializer = new CredentialRepositoryListSerializer(); + var data = serializer.Serialize(repositories); + _dataProvider.Save(data); + } + } +} diff --git a/mRemoteV1/UI/Forms/frmMain.cs b/mRemoteV1/UI/Forms/frmMain.cs index e8ae03fe3..5e3724710 100644 --- a/mRemoteV1/UI/Forms/frmMain.cs +++ b/mRemoteV1/UI/Forms/frmMain.cs @@ -139,9 +139,12 @@ namespace mRemoteNG.UI.Forms Startup.Instance.InitializeProgram(messageCollector); - var credRepoListLoader = new CredentialRepositoryListLoader(new FileDataProvider(_credentialRepoListPath), new CredentialRepositoryListDeserializer()); + var credRepoListDataProvider = new FileDataProvider(_credentialRepoListPath); + var credRepoListLoader = new CredentialRepositoryListLoader(credRepoListDataProvider, new CredentialRepositoryListDeserializer()); + var credRepoListSaver = new CredentialRepositoryListSaver(credRepoListDataProvider); foreach (var repository in credRepoListLoader.Load()) Runtime.CredentialProviderCatalog.AddProvider(repository); + Runtime.CredentialProviderCatalog.CollectionChanged += (o, args) => credRepoListSaver.Save(Runtime.CredentialProviderCatalog.CredentialProviders); msMain.Items.AddRange(new ToolStripItem[] { diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj index 64eb9795b..3d8912664 100644 --- a/mRemoteV1/mRemoteV1.csproj +++ b/mRemoteV1/mRemoteV1.csproj @@ -139,6 +139,7 @@ +