New API Class is working

This commit is contained in:
TheJoKlLa 2022-05-17 23:23:47 +02:00
parent ec48a8b993
commit 14552bf929
7 changed files with 62 additions and 65 deletions

View File

@ -37,6 +37,8 @@ namespace Borepin.PageModel
#region Data
public override Task LoadInstance(object instance)
{
if(instance != null)
{
if (instance is ConnectionData)
{
@ -60,6 +62,11 @@ namespace Borepin.PageModel
{
DisplayAddress = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", _Connection_Item.Host.Host, _Connection_Item.Host.Port);
}
}
if(instance == null && Connection_Item == null)
{
throw new InstanceIncorrectException();
}
IsBusy = false;
return Task.CompletedTask;
@ -103,6 +110,7 @@ namespace Borepin.PageModel
if(_API.IsConnected)
{
await _API.Disconnect().ConfigureAwait(true);
_API.UnbindAllEvents();
}
try
@ -145,6 +153,7 @@ namespace Borepin.PageModel
public async Task DisonnectCommandExecute()
{
await _API.Disconnect().ConfigureAwait(false);
_API.UnbindAllEvents();
await LoadInstance(Connection_Item).ConfigureAwait(false);
}
@ -172,15 +181,18 @@ namespace Borepin.PageModel
{
if(string.Equals(result.Parameters.GetValue<string>("result"), "confirm", StringComparison.Ordinal))
{
ConnectionData connectionData = result.Parameters.GetValue<ConnectionData>("instance");
await _LoginStorageService.Remove(connectionData).ConfigureAwait(false);
await _API.Disconnect().ConfigureAwait(true);
_API.UnbindAllEvents();
await _LoginStorageService.Remove(Connection_Item).ConfigureAwait(false);
Device.BeginInvokeOnMainThread(async () =>
{
INavigationResult result_nav = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/ServerListPage").ConfigureAwait(false);
if (result_nav.Exception != null)
{
Log.Fatal(result.Exception, "Navigating failed");
}
});
}
}
#endregion

View File

@ -4,7 +4,6 @@ using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Linq;
namespace Borepin.Service.Storage
{
@ -55,12 +54,12 @@ namespace Borepin.Service.Storage
}
List<ConnectionData> connectionData_List = new List<ConnectionData>(await _LoadConnectionData().ConfigureAwait(false));
if (connectionData_List.Contains(connectionData))
if (!connectionData_List.Contains(connectionData))
{
throw new MissingConnectionException(connectionData);
}
connectionData_List.RemoveAll(x => x.Equals(connectionData));
connectionData_List.Remove(connectionData);
await _SaveConnectionData(connectionData_List).ConfigureAwait(false);
}
@ -72,14 +71,14 @@ namespace Borepin.Service.Storage
}
List<ConnectionData> connectionData_List = new List<ConnectionData>(await _LoadConnectionData().ConfigureAwait(false));
if (connectionData_List.Contains(connectionData))
if (! connectionData_List.Contains(connectionData))
{
throw new MissingConnectionException(connectionData);
}
connectionData.LastTime = DateTime.UtcNow;
connectionData_List.RemoveAll(x => x.Equals(connectionData));
connectionData_List.Remove(connectionData);
connectionData_List.Add(connectionData);
await _SaveConnectionData(connectionData_List).ConfigureAwait(false);
}

View File

@ -1,30 +0,0 @@
using System;
using System.Threading.Tasks;
using NUnit.Framework;
using Borepin.Service.Storage;
using NSubstitute;
using Borepin.Service.BFFH;
using Borepin.Model;
namespace Borepin_Test
{
public class BFFHService_Test
{
[Test, Explicit]
public async Task Connect()
{
IPreferenceStorageService preferenceStorageService = Substitute.For<IPreferenceStorageService>();
ISecretStorageService secretStorageService = Substitute.For<ISecretStorageService>();
IBFFHService bffhService = new BFFHService(preferenceStorageService, secretStorageService);
Connection connection = new Connection()
{
Address = new Uri("fabaccess://127.0.0.1:59661"),
Username = "Testuser"
};
await bffhService.Connect(connection, "secret");
}
}
}

View File

@ -55,6 +55,17 @@ namespace FabAccessAPI
_TcpRpcClient = null;
}
}
public void UnbindAllEvents()
{
if(ConnectionStatusChanged != null)
{
foreach (Delegate d in ConnectionStatusChanged.GetInvocationList())
{
ConnectionStatusChanged -= (EventHandler<ConnectionStatusChange>)d;
}
}
}
#endregion
#region Members

View File

@ -16,13 +16,13 @@ namespace FabAccessAPI
if(obj is ConnectionData && obj != null)
{
ConnectionData? data = obj as ConnectionData;
return data.Host.Host == Host.Host &&
data.Host.Port == Host.Port &&
data.Mechanism == Mechanism &&
data.Username == Username &&
EqualityComparer<Dictionary<string, object>>.Default.Equals(Properties, data.Properties);
data.Username == Username;
}
return false;
}

View File

@ -33,6 +33,11 @@ namespace FabAccessAPI
/// </summary>
event EventHandler<ConnectionStatusChange> ConnectionStatusChanged;
/// <summary>
/// Unbind all Events from ConnectionStatus Change
/// </summary>
void UnbindAllEvents();
/// <summary>
/// Connect to BFFH Server
/// </summary>

@ -1 +1 @@
Subproject commit 086bbc2497785d2cc63e9252df6f6d3ee7599579
Subproject commit 0176a503c8d0b0be66e0212e04200c8324e11fd9