mirror of
https://gitlab.com/fabinfra/fabaccess/borepin.git
synced 2025-04-20 18:36:31 +02:00
First working App with new API Class
This commit is contained in:
parent
3cf84220bf
commit
ec48a8b993
@ -10,7 +10,6 @@ using Borepin.PageModel.SetUpProcess;
|
||||
using Borepin.Page.AddServerProcess;
|
||||
using Borepin.PageModel.AddServerProcess;
|
||||
using System;
|
||||
using Prism.Navigation;
|
||||
using Borepin.Service.Storage;
|
||||
|
||||
namespace Borepin
|
||||
|
@ -21,8 +21,11 @@
|
||||
</Target>
|
||||
<ItemGroup>
|
||||
<Compile Remove="Behaviour\**" />
|
||||
<Compile Remove="Helpers\**" />
|
||||
<EmbeddedResource Remove="Behaviour\**" />
|
||||
<EmbeddedResource Remove="Helpers\**" />
|
||||
<None Remove="Behaviour\**" />
|
||||
<None Remove="Helpers\**" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Meziantou.Analyzer" Version="1.0.702">
|
||||
@ -32,7 +35,6 @@
|
||||
<PackageReference Include="NaturalSort.Extension" Version="3.2.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="NLog" Version="5.0.0" />
|
||||
<PackageReference Include="Plugin.Multilingual" Version="1.0.2" />
|
||||
<PackageReference Include="Prism.DryIoc.Forms" Version="8.1.97" />
|
||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2401" />
|
||||
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0" />
|
||||
|
@ -1,45 +0,0 @@
|
||||
using Plugin.Multilingual;
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
namespace Borepin.Helpers
|
||||
{
|
||||
[ContentProperty("Text")]
|
||||
public class TranslateExtension : IMarkupExtension
|
||||
{
|
||||
const string _ResourceId = "Borepin.Resources.Text.TextResource";
|
||||
|
||||
static readonly Lazy<ResourceManager> _Resmgr = new Lazy<ResourceManager>(() => new ResourceManager(_ResourceId, typeof(TranslateExtension).GetTypeInfo().Assembly));
|
||||
|
||||
public string Text { get; set; }
|
||||
|
||||
public object ProvideValue(IServiceProvider serviceProvider)
|
||||
{
|
||||
if (Text == null)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
System.Globalization.CultureInfo ci = CrossMultilingual.Current.CurrentCultureInfo;
|
||||
|
||||
string translation = _Resmgr.Value.GetString(Text, ci);
|
||||
|
||||
if (translation == null)
|
||||
{
|
||||
|
||||
#if DEBUG
|
||||
//throw new ArgumentException(
|
||||
// String.Format("Key '{0}' was not found in resources '{1}' for culture '{2}'.", Text, ResourceId, ci.Name),
|
||||
// "Text");
|
||||
translation = "!MISSING TEXT!";
|
||||
#else
|
||||
translation = Text; // returns the key, which GETS DISPLAYED TO THE USER
|
||||
#endif
|
||||
}
|
||||
return translation;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
|
||||
<file datatype="xml" source-language="en" target-language="de" original="BOREPIN/PROPERTIES/RESOURCES.RESX" tool-id="MultilingualAppToolkit" product-name="n/a" product-version="n/a" build-num="n/a">
|
||||
<header>
|
||||
<tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="4.0.6916.0" tool-company="Microsoft" />
|
||||
</header>
|
||||
<body>
|
||||
<group id="BOREPIN/PROPERTIES/RESOURCES.RESX" datatype="resx" />
|
||||
</body>
|
||||
</file>
|
||||
<file datatype="xml" source-language="en" target-language="de" original="BOREPIN/RESOURCES/TEXT/TEXTRESOURCE.RESX" tool-id="MultilingualAppToolkit" product-name="n/a" product-version="n/a" build-num="n/a">
|
||||
<header>
|
||||
<tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="4.0.6916.0" tool-company="Microsoft" />
|
||||
</header>
|
||||
<body>
|
||||
<group id="BOREPIN/RESOURCES/TEXT/TEXTRESOURCE.RESX" datatype="resx">
|
||||
<trans-unit id="SetUp_WelcomePage_Text" translate="yes" xml:space="preserve">
|
||||
<source>Automate your Space with FabAccess</source>
|
||||
<target state="new">Automate your Space with FabAccess</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SetUp_WelcomePage_Title" translate="yes" xml:space="preserve">
|
||||
<source>Welcome</source>
|
||||
<target state="new">Welcome</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SetUp_WelcomePage_Button" translate="yes" xml:space="preserve">
|
||||
<source>Begin working</source>
|
||||
<target state="new">Begin working</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SetUp_ScanPage_Button" translate="yes" xml:space="preserve">
|
||||
<source>Login to your Space</source>
|
||||
<target state="new">Login to your Space</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SetUp_ScanPage_Text" translate="yes" xml:space="preserve">
|
||||
<source>Wenn du dieses Logo siehst, dann kannst du es scannen</source>
|
||||
<target state="new">Wenn du dieses Logo siehst, dann kannst du es scannen</target>
|
||||
</trans-unit>
|
||||
</group>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
@ -1,40 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
|
||||
<file datatype="xml" source-language="en" target-language="en" original="BOREPIN/PROPERTIES/RESOURCES.RESX" tool-id="MultilingualAppToolkit" product-name="n/a" product-version="n/a" build-num="n/a">
|
||||
<header>
|
||||
<tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="4.0.6916.0" tool-company="Microsoft" />
|
||||
</header>
|
||||
<body>
|
||||
<group id="BOREPIN/PROPERTIES/RESOURCES.RESX" datatype="resx" />
|
||||
</body>
|
||||
</file>
|
||||
<file datatype="xml" source-language="en" target-language="en" original="BOREPIN/RESOURCES/TEXT/TEXTRESOURCE.RESX" tool-id="MultilingualAppToolkit" product-name="n/a" product-version="n/a" build-num="n/a">
|
||||
<header>
|
||||
<tool tool-id="MultilingualAppToolkit" tool-name="Multilingual App Toolkit" tool-version="4.0.6916.0" tool-company="Microsoft" />
|
||||
</header>
|
||||
<body>
|
||||
<group id="BOREPIN/RESOURCES/TEXT/TEXTRESOURCE.RESX" datatype="resx">
|
||||
<trans-unit id="SetUp_WelcomePage_Text" translate="yes" xml:space="preserve">
|
||||
<source>Automate your Space with FabAccess</source>
|
||||
<target state="new">Automate your Space with FabAccess</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SetUp_WelcomePage_Title" translate="yes" xml:space="preserve">
|
||||
<source>Welcome</source>
|
||||
<target state="new">Welcome</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SetUp_WelcomePage_Button" translate="yes" xml:space="preserve">
|
||||
<source>Begin working</source>
|
||||
<target state="new">Begin working</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SetUp_ScanPage_Button" translate="yes" xml:space="preserve">
|
||||
<source>Login to your Space</source>
|
||||
<target state="new">Login to your Space</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="SetUp_ScanPage_Text" translate="yes" xml:space="preserve">
|
||||
<source>Wenn du dieses Logo siehst, dann kannst du es scannen</source>
|
||||
<target state="new">Wenn du dieses Logo siehst, dann kannst du es scannen</target>
|
||||
</trans-unit>
|
||||
</group>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
@ -16,7 +16,7 @@
|
||||
</StackLayout>
|
||||
<StackLayout IsVisible="{Binding IsBusy, Converter={StaticResource InvertBoolConverter}}">
|
||||
<Label Text="Host" Style="{StaticResource Style_Label_Property_Title}"></Label>
|
||||
<Entry Text="{Binding Server}" Keyboard="Url" IsSpellCheckEnabled="false"/>
|
||||
<Entry Text="{Binding Host}" Keyboard="Url" IsSpellCheckEnabled="false"/>
|
||||
<Button Text="Connect to Server" Command="{Binding ConnectToServerCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
||||
<Button Text="Scan QR-Code" Command="{Binding ScanCodeCommand}" Style="{StaticResource Style_Button_Primary}">
|
||||
<Button.IsVisible>
|
||||
|
@ -2,14 +2,14 @@
|
||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="Borepin.Page.SetUpProcess.WelcomePage"
|
||||
xmlns:i18n="clr-namespace:Borepin.Helpers"
|
||||
xmlns:resource="clr-namespace:Borepin.Resources.Text"
|
||||
Title="FabAccess">
|
||||
<ContentPage.Content>
|
||||
<ScrollView>
|
||||
<StackLayout Style="{StaticResource Style_StackLayout_Content}">
|
||||
<Label Text="{i18n:Translate SetUp_WelcomePage_Title}" Style="{StaticResource Style_Label_Title_Center}"/>
|
||||
<Label Text="{i18n:Translate SetUp_WelcomePage_Text}" Style="{StaticResource Style_Label_Text_Center}"/>
|
||||
<Button Text="{i18n:Translate SetUp_WelcomePage_Button}" Command="{Binding NextCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
||||
<Label Text="{x:Static resource:TextResource.SetUp_WelcomePage_Title}" Style="{StaticResource Style_Label_Title_Center}"/>
|
||||
<Label Text="{x:Static resource:TextResource.SetUp_WelcomePage_Text}" Style="{StaticResource Style_Label_Text_Center}"/>
|
||||
<Button Text="{x:Static resource:TextResource.SetUp_WelcomePage_Button}" Command="{Binding NextCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
||||
</StackLayout>
|
||||
</ScrollView>
|
||||
</ContentPage.Content>
|
||||
|
@ -5,11 +5,13 @@ using System.Windows.Input;
|
||||
using Borepin.Base;
|
||||
using Borepin.Base.Exceptions;
|
||||
using Borepin.Service;
|
||||
using Borepin.Service.Storage;
|
||||
using FabAccessAPI;
|
||||
using FabAccessAPI.Exceptions;
|
||||
using Prism.Commands;
|
||||
using Prism.Navigation;
|
||||
using Prism.Services;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace Borepin.PageModel.AddServerProcess
|
||||
{
|
||||
@ -17,11 +19,14 @@ namespace Borepin.PageModel.AddServerProcess
|
||||
{
|
||||
#region Private Fields
|
||||
private ConnectionData _ConnectionData;
|
||||
private readonly ILoginStorageService _LoginStorageService;
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
public AuthPlainPageModel(INavigationService navigationService, IAPIService apiService, IPageDialogService pageDialogService) : base(navigationService, pageDialogService, apiService)
|
||||
public AuthPlainPageModel(INavigationService navigationService, IAPIService apiService, IPageDialogService pageDialogService, ILoginStorageService loginStorageService) : base(navigationService, pageDialogService, apiService)
|
||||
{
|
||||
_LoginStorageService = loginStorageService;
|
||||
|
||||
AuthenticateCommand = new DelegateCommand(async () => await AuthenticateCommandExecute().ConfigureAwait(false));
|
||||
}
|
||||
#endregion
|
||||
@ -77,19 +82,19 @@ namespace Borepin.PageModel.AddServerProcess
|
||||
Username = Username,
|
||||
Properties = new Dictionary<string, object>(StringComparer.Ordinal)
|
||||
{
|
||||
{ "username", Username },
|
||||
{ "password", Password },
|
||||
{ "Username", Username },
|
||||
{ "Password", Password },
|
||||
},
|
||||
};
|
||||
|
||||
if (_API.IsConnected)
|
||||
{
|
||||
await _API.Disconnect().ConfigureAwait(true);
|
||||
await _API.Disconnect().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await _API.Connect(_ConnectionData).ConfigureAwait(true);
|
||||
await _API.Connect(_ConnectionData).ConfigureAwait(false);
|
||||
}
|
||||
catch (ConnectingFailedException)
|
||||
{
|
||||
@ -113,11 +118,17 @@ namespace Borepin.PageModel.AddServerProcess
|
||||
return;
|
||||
}
|
||||
|
||||
await _LoginStorageService.Add(_ConnectionData).ConfigureAwait(false);
|
||||
await _LoginStorageService.UpdateTimestamp(_ConnectionData).ConfigureAwait(false);
|
||||
|
||||
Device.BeginInvokeOnMainThread(async () =>
|
||||
{
|
||||
INavigationResult result = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/MachineListPage").ConfigureAwait(false);
|
||||
if(result.Exception != null)
|
||||
if (result.Exception != null)
|
||||
{
|
||||
Log.Fatal(result.Exception, "Navigating failed");
|
||||
}
|
||||
});
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
using Borepin.Base;
|
||||
using Borepin.Service;
|
||||
using FabAccessAPI;
|
||||
using FabAccessAPI.Exceptions;
|
||||
using Prism.Commands;
|
||||
|
@ -107,7 +107,7 @@ namespace Borepin.PageModel
|
||||
|
||||
NavigationParameters parameters = new NavigationParameters
|
||||
{
|
||||
{ "id", viewmodel.Instance.Id },
|
||||
{ "instance", viewmodel.Instance.Id },
|
||||
};
|
||||
|
||||
await _NavigationService.NavigateAsync($"MachinePage", parameters).ConfigureAwait(false);
|
||||
|
@ -31,8 +31,8 @@ namespace Borepin.PageModel
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Data
|
||||
public async Task LoadData()
|
||||
#region LoadData
|
||||
public override async Task LoadInstance(object instance)
|
||||
{
|
||||
IList<ConnectionData> list = await _LoginStorageService.GetList().ConfigureAwait(false);
|
||||
if (_API.IsConnected)
|
||||
|
@ -12,6 +12,7 @@ using System;
|
||||
using System.Globalization;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace Borepin.PageModel
|
||||
{
|
||||
@ -123,11 +124,16 @@ namespace Borepin.PageModel
|
||||
return;
|
||||
}
|
||||
|
||||
await _LoginStorageService.UpdateTimestamp(_Connection_Item).ConfigureAwait(false);
|
||||
|
||||
Device.BeginInvokeOnMainThread(async () =>
|
||||
{
|
||||
INavigationResult result = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/MachineListPage").ConfigureAwait(false);
|
||||
if(result.Exception != null)
|
||||
if (result.Exception != null)
|
||||
{
|
||||
Log.Fatal(result.Exception, "Navigating failed");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private ICommand _DisconnectCommand;
|
||||
|
@ -5,6 +5,7 @@ using Prism.AppModel;
|
||||
using Prism.Navigation;
|
||||
using Prism.Services;
|
||||
using System.Collections.Generic;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace Borepin.PageModel
|
||||
{
|
||||
@ -26,20 +27,26 @@ namespace Borepin.PageModel
|
||||
{
|
||||
IList<ConnectionData> connectionData_List = await _LoginStorageService.GetList().ConfigureAwait(false);
|
||||
if (connectionData_List.Count == 0)
|
||||
{
|
||||
Device.BeginInvokeOnMainThread(async () =>
|
||||
{
|
||||
INavigationResult result = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/SetUpProcess_WelcomePage").ConfigureAwait(false);
|
||||
if (result.Exception != null)
|
||||
{
|
||||
Log.Fatal(result.Exception, "Navigating failed");
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
Device.BeginInvokeOnMainThread(async () =>
|
||||
{
|
||||
INavigationResult result = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/ServerListPage").ConfigureAwait(false);
|
||||
if (result.Exception != null)
|
||||
{
|
||||
Log.Fatal(result.Exception, "Navigating failed");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,35 +10,48 @@
|
||||
|
||||
namespace Borepin.Resources.Text {
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class TextResource {
|
||||
|
||||
private static System.Resources.ResourceManager resourceMan;
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static System.Globalization.CultureInfo resourceCulture;
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal TextResource() {
|
||||
}
|
||||
|
||||
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static System.Resources.ResourceManager ResourceManager {
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.Equals(null, resourceMan)) {
|
||||
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("Borepin.Resources.Text.TextResource", typeof(TextResource).Assembly);
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Borepin.Resources.Text.TextResource", typeof(TextResource).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static System.Globalization.CultureInfo Culture {
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
@ -47,30 +60,36 @@ namespace Borepin.Resources.Text {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Login to your Space.
|
||||
/// </summary>
|
||||
internal static string SetUp_ScanPage_Button {
|
||||
get {
|
||||
return ResourceManager.GetString("SetUp_ScanPage_Button", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
internal static string SetUp_ScanPage_Text {
|
||||
get {
|
||||
return ResourceManager.GetString("SetUp_ScanPage_Text", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Begin working.
|
||||
/// </summary>
|
||||
internal static string SetUp_WelcomePage_Button {
|
||||
get {
|
||||
return ResourceManager.GetString("SetUp_WelcomePage_Button", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Automate your Space with FabAccess.
|
||||
/// </summary>
|
||||
internal static string SetUp_WelcomePage_Text {
|
||||
get {
|
||||
return ResourceManager.GetString("SetUp_WelcomePage_Text", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Welcome.
|
||||
/// </summary>
|
||||
internal static string SetUp_WelcomePage_Title {
|
||||
get {
|
||||
return ResourceManager.GetString("SetUp_WelcomePage_Title", resourceCulture);
|
||||
|
@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
@ -120,9 +120,6 @@
|
||||
<data name="SetUp_ScanPage_Button" xml:space="preserve">
|
||||
<value>Login to your Space</value>
|
||||
</data>
|
||||
<data name="SetUp_ScanPage_Text" xml:space="preserve">
|
||||
<value>Wenn du dieses Logo siehst, dann kannst du es scannen</value>
|
||||
</data>
|
||||
<data name="SetUp_WelcomePage_Button" xml:space="preserve">
|
||||
<value>Begin working</value>
|
||||
</data>
|
||||
|
@ -4,6 +4,7 @@ using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using System.Linq;
|
||||
|
||||
namespace Borepin.Service.Storage
|
||||
{
|
||||
@ -53,13 +54,13 @@ namespace Borepin.Service.Storage
|
||||
throw new InvalidConnectionExceptoin(connectionData);
|
||||
}
|
||||
|
||||
IList<ConnectionData> connectionData_List = await _LoadConnectionData().ConfigureAwait(false);
|
||||
List<ConnectionData> connectionData_List = new List<ConnectionData>(await _LoadConnectionData().ConfigureAwait(false));
|
||||
if (connectionData_List.Contains(connectionData))
|
||||
{
|
||||
throw new MissingConnectionException(connectionData);
|
||||
}
|
||||
|
||||
connectionData_List.Remove(connectionData);
|
||||
connectionData_List.RemoveAll(x => x.Equals(connectionData));
|
||||
await _SaveConnectionData(connectionData_List).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@ -70,7 +71,7 @@ namespace Borepin.Service.Storage
|
||||
throw new InvalidConnectionExceptoin(connectionData);
|
||||
}
|
||||
|
||||
IList<ConnectionData> connectionData_List = await _LoadConnectionData().ConfigureAwait(false);
|
||||
List<ConnectionData> connectionData_List = new List<ConnectionData>(await _LoadConnectionData().ConfigureAwait(false));
|
||||
if (connectionData_List.Contains(connectionData))
|
||||
{
|
||||
throw new MissingConnectionException(connectionData);
|
||||
@ -78,7 +79,7 @@ namespace Borepin.Service.Storage
|
||||
|
||||
connectionData.LastTime = DateTime.UtcNow;
|
||||
|
||||
connectionData_List.Remove(connectionData);
|
||||
connectionData_List.RemoveAll(x => x.Equals(connectionData));
|
||||
connectionData_List.Add(connectionData);
|
||||
await _SaveConnectionData(connectionData_List).ConfigureAwait(false);
|
||||
}
|
||||
@ -91,8 +92,16 @@ namespace Borepin.Service.Storage
|
||||
try
|
||||
{
|
||||
string data = await _SecretStorageService.GetAsync(StorageKey).ConfigureAwait(false);
|
||||
if(data != null)
|
||||
{
|
||||
connectionData_List = JsonConvert.DeserializeObject<List<ConnectionData>>(data);
|
||||
}
|
||||
else
|
||||
{
|
||||
connectionData_List = new List<ConnectionData>();
|
||||
await _SecretStorageService.SetAsync(StorageKey, JsonConvert.SerializeObject(connectionData_List)).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
catch (JsonSerializationException)
|
||||
{
|
||||
connectionData_List = new List<ConnectionData>();
|
||||
|
@ -13,11 +13,17 @@ namespace FabAccessAPI
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
return obj is ConnectionData data &&
|
||||
EqualityComparer<Uri>.Default.Equals(Host, data.Host) &&
|
||||
Mechanism == data.Mechanism &&
|
||||
Username == data.Username &&
|
||||
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);
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
|
Loading…
x
Reference in New Issue
Block a user