mirror of
https://gitlab.com/fabinfra/fabaccess/borepin.git
synced 2025-03-12 14:51:44 +01:00
Added: Default Connection
This commit is contained in:
parent
c39b5bce3d
commit
f54e6ed98b
@ -23,6 +23,8 @@ namespace Borepin.Converter
|
|||||||
return "Blocked";
|
return "Blocked";
|
||||||
case Machine.MachineState.disabled:
|
case Machine.MachineState.disabled:
|
||||||
return "Disabled";
|
return "Disabled";
|
||||||
|
case Machine.MachineState.totakeover:
|
||||||
|
return "ToTakeOver";
|
||||||
default:
|
default:
|
||||||
return "Unknown";
|
return "Unknown";
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
<StackLayout Grid.Row="0">
|
<StackLayout Grid.Row="0">
|
||||||
<Label Text="{Binding DisplayAddress}" Style="{StaticResource LabelStyle_Title}"/>
|
<Label Text="{Binding DisplayAddress}" Style="{StaticResource LabelStyle_Title}"/>
|
||||||
<Label Text="{Binding Connection_Item.Username}" Style="{StaticResource Style_Label_Text_Center}"/>
|
<Label Text="{Binding Connection_Item.Username}" Style="{StaticResource Style_Label_Text_Center}"/>
|
||||||
|
<Button IsVisible="{Binding InstanceIsDefaultConnection, Converter={StaticResource InvertBoolConverter}}" Text="Set as Default Connection" Margin="0,10,0,0" Command="{Binding SetDefaultCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
||||||
|
<Label IsVisible="{Binding InstanceIsDefaultConnection}" Text="Is Default Connection" Style="{StaticResource Style_Label_Text_Center}"/>
|
||||||
<Button IsVisible="{Binding InstanceIsActiveConnection, Converter={StaticResource InvertBoolConverter}}" Text="Connect" Margin="0,10,0,0" Command="{Binding ConnectCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
<Button IsVisible="{Binding InstanceIsActiveConnection, Converter={StaticResource InvertBoolConverter}}" Text="Connect" Margin="0,10,0,0" Command="{Binding ConnectCommand}" Style="{StaticResource Style_Button_Primary}"/>
|
||||||
<Button IsVisible="{Binding InstanceIsActiveConnection}" Text="Disconnect" Margin="0,10,0,0" Command="{Binding DisconnectCommand}" Style="{StaticResource Style_Button_Admin}"/>
|
<Button IsVisible="{Binding InstanceIsActiveConnection}" Text="Disconnect" Margin="0,10,0,0" Command="{Binding DisconnectCommand}" Style="{StaticResource Style_Button_Admin}"/>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
|
@ -32,15 +32,16 @@ namespace Borepin.PageModel
|
|||||||
ConnectCommand = new DelegateCommand(async () => await ConnectCommandExecute().ConfigureAwait(false));
|
ConnectCommand = new DelegateCommand(async () => await ConnectCommandExecute().ConfigureAwait(false));
|
||||||
DisconnectCommand = new DelegateCommand(async () => await DisonnectCommandExecute().ConfigureAwait(false));
|
DisconnectCommand = new DelegateCommand(async () => await DisonnectCommandExecute().ConfigureAwait(false));
|
||||||
DeleteCommand = new DelegateCommand(DeleteCommandExecute);
|
DeleteCommand = new DelegateCommand(DeleteCommandExecute);
|
||||||
|
SetDefaultCommand = new DelegateCommand(async () => await SetDefaultCommandExecute().ConfigureAwait(false));
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Data
|
#region Data
|
||||||
public override Task LoadInstance(object instance)
|
public override async Task LoadInstance(object instance)
|
||||||
{
|
{
|
||||||
if(instance != null)
|
if(instance != null)
|
||||||
{
|
{
|
||||||
if (instance is ConnectionData)
|
if(instance is ConnectionData)
|
||||||
{
|
{
|
||||||
Connection_Item = instance as ConnectionData;
|
Connection_Item = instance as ConnectionData;
|
||||||
}
|
}
|
||||||
@ -49,7 +50,7 @@ namespace Borepin.PageModel
|
|||||||
throw new InstanceIncorrectException();
|
throw new InstanceIncorrectException();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_API.ConnectionData != null && Connection_Item != null)
|
if(_API.ConnectionData != null && Connection_Item != null)
|
||||||
{
|
{
|
||||||
InstanceIsActiveConnection = Connection_Item.Equals(_API.ConnectionData);
|
InstanceIsActiveConnection = Connection_Item.Equals(_API.ConnectionData);
|
||||||
}
|
}
|
||||||
@ -58,10 +59,16 @@ namespace Borepin.PageModel
|
|||||||
InstanceIsActiveConnection = false;
|
InstanceIsActiveConnection = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_Connection_Item != null && _Connection_Item.Host != null)
|
if(_Connection_Item != null && _Connection_Item.Host != null)
|
||||||
{
|
{
|
||||||
DisplayAddress = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", _Connection_Item.Host.Host, _Connection_Item.Host.Port);
|
DisplayAddress = string.Format(CultureInfo.InvariantCulture, "{0}:{1}", _Connection_Item.Host.Host, _Connection_Item.Host.Port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConnectionData connectionData_Default = await _LoginStorageService.GetDefault().ConfigureAwait(false);
|
||||||
|
if(connectionData_Default != null && connectionData_Default.Equals(_Connection_Item))
|
||||||
|
{
|
||||||
|
InstanceIsDefaultConnection = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(instance == null && Connection_Item == null)
|
if(instance == null && Connection_Item == null)
|
||||||
{
|
{
|
||||||
@ -69,7 +76,6 @@ namespace Borepin.PageModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
IsBusy = false;
|
IsBusy = false;
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -94,6 +100,13 @@ namespace Borepin.PageModel
|
|||||||
get => _InstanceIsActiveConnection;
|
get => _InstanceIsActiveConnection;
|
||||||
set => SetProperty(ref _InstanceIsActiveConnection, value);
|
set => SetProperty(ref _InstanceIsActiveConnection, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool _InstanceIsDefaultConnection;
|
||||||
|
public bool InstanceIsDefaultConnection
|
||||||
|
{
|
||||||
|
get => _InstanceIsDefaultConnection;
|
||||||
|
set => SetProperty(ref _InstanceIsDefaultConnection, value);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Commands
|
#region Commands
|
||||||
@ -143,6 +156,18 @@ namespace Borepin.PageModel
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
private ICommand _SetDefaultCommand;
|
||||||
|
public ICommand SetDefaultCommand
|
||||||
|
{
|
||||||
|
get => _SetDefaultCommand;
|
||||||
|
set => SetProperty(ref _SetDefaultCommand, value);
|
||||||
|
}
|
||||||
|
public async Task SetDefaultCommandExecute()
|
||||||
|
{
|
||||||
|
await _LoginStorageService.SetDefault(Connection_Item).ConfigureAwait(false);
|
||||||
|
|
||||||
|
await LoadInstance(Connection_Item).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
private ICommand _DisconnectCommand;
|
private ICommand _DisconnectCommand;
|
||||||
public ICommand DisconnectCommand
|
public ICommand DisconnectCommand
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using Borepin.Base;
|
using Borepin.Base;
|
||||||
|
using Borepin.Service;
|
||||||
using Borepin.Service.Storage;
|
using Borepin.Service.Storage;
|
||||||
using FabAccessAPI;
|
using FabAccessAPI;
|
||||||
using Prism.AppModel;
|
using Prism.AppModel;
|
||||||
@ -9,14 +10,14 @@ using Xamarin.Forms;
|
|||||||
|
|
||||||
namespace Borepin.PageModel
|
namespace Borepin.PageModel
|
||||||
{
|
{
|
||||||
public class StartPageModel : PageModelBase, IPageLifecycleAware
|
public class StartPageModel : ConnectionModelBase, IPageLifecycleAware
|
||||||
{
|
{
|
||||||
#region Private Fields
|
#region Private Fields
|
||||||
private readonly ILoginStorageService _LoginStorageService;
|
private readonly ILoginStorageService _LoginStorageService;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
public StartPageModel(INavigationService navigationService, IPageDialogService pageDialogService, ILoginStorageService loginStorageService) : base(navigationService, pageDialogService)
|
public StartPageModel(INavigationService navigationService, IPageDialogService pageDialogService, IAPIService apiService, ILoginStorageService loginStorageService) : base(navigationService, pageDialogService, apiService)
|
||||||
{
|
{
|
||||||
_LoginStorageService = loginStorageService;
|
_LoginStorageService = loginStorageService;
|
||||||
}
|
}
|
||||||
@ -26,6 +27,8 @@ namespace Borepin.PageModel
|
|||||||
public async void OnAppearing()
|
public async void OnAppearing()
|
||||||
{
|
{
|
||||||
IList<ConnectionData> connectionData_List = await _LoginStorageService.GetList().ConfigureAwait(false);
|
IList<ConnectionData> connectionData_List = await _LoginStorageService.GetList().ConfigureAwait(false);
|
||||||
|
ConnectionData connectionData_Default = await _LoginStorageService.GetDefault().ConfigureAwait(false);
|
||||||
|
|
||||||
if (connectionData_List.Count == 0)
|
if (connectionData_List.Count == 0)
|
||||||
{
|
{
|
||||||
Device.BeginInvokeOnMainThread(async () =>
|
Device.BeginInvokeOnMainThread(async () =>
|
||||||
@ -37,6 +40,32 @@ namespace Borepin.PageModel
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
else if(connectionData_Default != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await _API.Connect(connectionData_Default).ConfigureAwait(false);
|
||||||
|
Device.BeginInvokeOnMainThread(async () =>
|
||||||
|
{
|
||||||
|
INavigationResult result = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/MachineListPage").ConfigureAwait(false);
|
||||||
|
if (result.Exception != null)
|
||||||
|
{
|
||||||
|
Log.Fatal(result.Exception, "Navigating failed");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
Device.BeginInvokeOnMainThread(async () =>
|
||||||
|
{
|
||||||
|
INavigationResult result = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/ServerListPage").ConfigureAwait(false);
|
||||||
|
if (result.Exception != null)
|
||||||
|
{
|
||||||
|
Log.Fatal(result.Exception, "Navigating failed");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Device.BeginInvokeOnMainThread(async () =>
|
Device.BeginInvokeOnMainThread(async () =>
|
||||||
|
@ -10,5 +10,8 @@ namespace Borepin.Service.Storage
|
|||||||
Task Add(ConnectionData connectionData);
|
Task Add(ConnectionData connectionData);
|
||||||
Task Remove(ConnectionData connectionData);
|
Task Remove(ConnectionData connectionData);
|
||||||
Task UpdateTimestamp(ConnectionData connectionData);
|
Task UpdateTimestamp(ConnectionData connectionData);
|
||||||
|
|
||||||
|
Task<ConnectionData> GetDefault();
|
||||||
|
Task SetDefault(ConnectionData connectionData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,8 @@ namespace Borepin.Service.Storage
|
|||||||
public class LoginStorageService : ILoginStorageService
|
public class LoginStorageService : ILoginStorageService
|
||||||
{
|
{
|
||||||
#region Static Members
|
#region Static Members
|
||||||
const string StorageKey = "ConnectionData";
|
const string StorageKey_ConnectionDataList = "ConnectionData";
|
||||||
|
const string StorageKey_ConnecitonData_AutoConnect = "ConnectionData_Default";
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Private Members
|
#region Private Members
|
||||||
@ -82,6 +83,31 @@ namespace Borepin.Service.Storage
|
|||||||
connectionData_List.Add(connectionData);
|
connectionData_List.Add(connectionData);
|
||||||
await _SaveConnectionData(connectionData_List).ConfigureAwait(false);
|
await _SaveConnectionData(connectionData_List).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<ConnectionData> GetDefault()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string data = await _SecretStorageService.GetAsync(StorageKey_ConnecitonData_AutoConnect).ConfigureAwait(false);
|
||||||
|
if (data != null)
|
||||||
|
{
|
||||||
|
ConnectionData connectionData = JsonConvert.DeserializeObject<ConnectionData>(data);
|
||||||
|
return connectionData;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
catch (JsonSerializationException)
|
||||||
|
{
|
||||||
|
_SecretStorageService.Remove(StorageKey_ConnecitonData_AutoConnect);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task SetDefault(ConnectionData connectionData)
|
||||||
|
{
|
||||||
|
string data = JsonConvert.SerializeObject(connectionData);
|
||||||
|
await _SecretStorageService.SetAsync(StorageKey_ConnecitonData_AutoConnect, data).ConfigureAwait(false);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Private Methods
|
#region Private Methods
|
||||||
@ -90,7 +116,7 @@ namespace Borepin.Service.Storage
|
|||||||
List<ConnectionData> connectionData_List;
|
List<ConnectionData> connectionData_List;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
string data = await _SecretStorageService.GetAsync(StorageKey).ConfigureAwait(false);
|
string data = await _SecretStorageService.GetAsync(StorageKey_ConnectionDataList).ConfigureAwait(false);
|
||||||
if(data != null)
|
if(data != null)
|
||||||
{
|
{
|
||||||
connectionData_List = JsonConvert.DeserializeObject<List<ConnectionData>>(data);
|
connectionData_List = JsonConvert.DeserializeObject<List<ConnectionData>>(data);
|
||||||
@ -98,13 +124,13 @@ namespace Borepin.Service.Storage
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
connectionData_List = new List<ConnectionData>();
|
connectionData_List = new List<ConnectionData>();
|
||||||
await _SecretStorageService.SetAsync(StorageKey, JsonConvert.SerializeObject(connectionData_List)).ConfigureAwait(false);
|
await _SecretStorageService.SetAsync(StorageKey_ConnectionDataList, JsonConvert.SerializeObject(connectionData_List)).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (JsonSerializationException)
|
catch (JsonSerializationException)
|
||||||
{
|
{
|
||||||
connectionData_List = new List<ConnectionData>();
|
connectionData_List = new List<ConnectionData>();
|
||||||
await _SecretStorageService.SetAsync(StorageKey, JsonConvert.SerializeObject(connectionData_List)).ConfigureAwait(false);
|
await _SecretStorageService.SetAsync(StorageKey_ConnectionDataList, JsonConvert.SerializeObject(connectionData_List)).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return connectionData_List;
|
return connectionData_List;
|
||||||
@ -113,7 +139,7 @@ namespace Borepin.Service.Storage
|
|||||||
private async Task _SaveConnectionData(IList<ConnectionData> connectionData_List)
|
private async Task _SaveConnectionData(IList<ConnectionData> connectionData_List)
|
||||||
{
|
{
|
||||||
string data = JsonConvert.SerializeObject(connectionData_List);
|
string data = JsonConvert.SerializeObject(connectionData_List);
|
||||||
await _SecretStorageService.SetAsync(StorageKey, data).ConfigureAwait(false);
|
await _SecretStorageService.SetAsync(StorageKey_ConnectionDataList, data).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ namespace FabAccessAPI
|
|||||||
public Mechanism Mechanism;
|
public Mechanism Mechanism;
|
||||||
public string Username;
|
public string Username;
|
||||||
public Dictionary<string, object> Properties;
|
public Dictionary<string, object> Properties;
|
||||||
public bool IsDefault;
|
|
||||||
public DateTime LastTime;
|
public DateTime LastTime;
|
||||||
|
|
||||||
public override bool Equals(object? obj)
|
public override bool Equals(object? obj)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user