mirror of
https://gitlab.com/fabinfra/fabaccess/borepin.git
synced 2025-03-12 23:01:52 +01:00
Added: Default Connection
This commit is contained in:
parent
c39b5bce3d
commit
f54e6ed98b
@ -23,6 +23,8 @@ namespace Borepin.Converter
|
||||
return "Blocked";
|
||||
case Machine.MachineState.disabled:
|
||||
return "Disabled";
|
||||
case Machine.MachineState.totakeover:
|
||||
return "ToTakeOver";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
|
@ -22,6 +22,8 @@
|
||||
<StackLayout Grid.Row="0">
|
||||
<Label Text="{Binding DisplayAddress}" Style="{StaticResource LabelStyle_Title}"/>
|
||||
<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}" Text="Disconnect" Margin="0,10,0,0" Command="{Binding DisconnectCommand}" Style="{StaticResource Style_Button_Admin}"/>
|
||||
</StackLayout>
|
||||
|
@ -32,11 +32,12 @@ namespace Borepin.PageModel
|
||||
ConnectCommand = new DelegateCommand(async () => await ConnectCommandExecute().ConfigureAwait(false));
|
||||
DisconnectCommand = new DelegateCommand(async () => await DisonnectCommandExecute().ConfigureAwait(false));
|
||||
DeleteCommand = new DelegateCommand(DeleteCommandExecute);
|
||||
SetDefaultCommand = new DelegateCommand(async () => await SetDefaultCommandExecute().ConfigureAwait(false));
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Data
|
||||
public override Task LoadInstance(object instance)
|
||||
public override async Task LoadInstance(object instance)
|
||||
{
|
||||
if(instance != null)
|
||||
{
|
||||
@ -62,6 +63,12 @@ namespace Borepin.PageModel
|
||||
{
|
||||
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)
|
||||
{
|
||||
@ -69,7 +76,6 @@ namespace Borepin.PageModel
|
||||
}
|
||||
|
||||
IsBusy = false;
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
#endregion
|
||||
|
||||
@ -94,6 +100,13 @@ namespace Borepin.PageModel
|
||||
get => _InstanceIsActiveConnection;
|
||||
set => SetProperty(ref _InstanceIsActiveConnection, value);
|
||||
}
|
||||
|
||||
private bool _InstanceIsDefaultConnection;
|
||||
public bool InstanceIsDefaultConnection
|
||||
{
|
||||
get => _InstanceIsDefaultConnection;
|
||||
set => SetProperty(ref _InstanceIsDefaultConnection, value);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#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;
|
||||
public ICommand DisconnectCommand
|
||||
|
@ -1,4 +1,5 @@
|
||||
using Borepin.Base;
|
||||
using Borepin.Service;
|
||||
using Borepin.Service.Storage;
|
||||
using FabAccessAPI;
|
||||
using Prism.AppModel;
|
||||
@ -9,14 +10,14 @@ using Xamarin.Forms;
|
||||
|
||||
namespace Borepin.PageModel
|
||||
{
|
||||
public class StartPageModel : PageModelBase, IPageLifecycleAware
|
||||
public class StartPageModel : ConnectionModelBase, IPageLifecycleAware
|
||||
{
|
||||
#region Private Fields
|
||||
private readonly ILoginStorageService _LoginStorageService;
|
||||
#endregion
|
||||
|
||||
#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;
|
||||
}
|
||||
@ -26,6 +27,8 @@ namespace Borepin.PageModel
|
||||
public async void OnAppearing()
|
||||
{
|
||||
IList<ConnectionData> connectionData_List = await _LoginStorageService.GetList().ConfigureAwait(false);
|
||||
ConnectionData connectionData_Default = await _LoginStorageService.GetDefault().ConfigureAwait(false);
|
||||
|
||||
if (connectionData_List.Count == 0)
|
||||
{
|
||||
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
|
||||
{
|
||||
Device.BeginInvokeOnMainThread(async () =>
|
||||
|
@ -10,5 +10,8 @@ namespace Borepin.Service.Storage
|
||||
Task Add(ConnectionData connectionData);
|
||||
Task Remove(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
|
||||
{
|
||||
#region Static Members
|
||||
const string StorageKey = "ConnectionData";
|
||||
const string StorageKey_ConnectionDataList = "ConnectionData";
|
||||
const string StorageKey_ConnecitonData_AutoConnect = "ConnectionData_Default";
|
||||
#endregion
|
||||
|
||||
#region Private Members
|
||||
@ -82,6 +83,31 @@ namespace Borepin.Service.Storage
|
||||
connectionData_List.Add(connectionData);
|
||||
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
|
||||
|
||||
#region Private Methods
|
||||
@ -90,7 +116,7 @@ namespace Borepin.Service.Storage
|
||||
List<ConnectionData> connectionData_List;
|
||||
try
|
||||
{
|
||||
string data = await _SecretStorageService.GetAsync(StorageKey).ConfigureAwait(false);
|
||||
string data = await _SecretStorageService.GetAsync(StorageKey_ConnectionDataList).ConfigureAwait(false);
|
||||
if(data != null)
|
||||
{
|
||||
connectionData_List = JsonConvert.DeserializeObject<List<ConnectionData>>(data);
|
||||
@ -98,13 +124,13 @@ namespace Borepin.Service.Storage
|
||||
else
|
||||
{
|
||||
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)
|
||||
{
|
||||
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;
|
||||
@ -113,7 +139,7 @@ namespace Borepin.Service.Storage
|
||||
private async Task _SaveConnectionData(IList<ConnectionData> connectionData_List)
|
||||
{
|
||||
string data = JsonConvert.SerializeObject(connectionData_List);
|
||||
await _SecretStorageService.SetAsync(StorageKey, data).ConfigureAwait(false);
|
||||
await _SecretStorageService.SetAsync(StorageKey_ConnectionDataList, data).ConfigureAwait(false);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
@ -9,7 +9,6 @@ namespace FabAccessAPI
|
||||
public Mechanism Mechanism;
|
||||
public string Username;
|
||||
public Dictionary<string, object> Properties;
|
||||
public bool IsDefault;
|
||||
public DateTime LastTime;
|
||||
|
||||
public override bool Equals(object? obj)
|
||||
|
Loading…
x
Reference in New Issue
Block a user