WIP fixes startup (a first one ...)

main
Paul Schneider 9 years ago
parent 29b6d75086
commit 1840c869d6
2 changed files with 42 additions and 36 deletions

@ -67,9 +67,10 @@ namespace BookAStar
MainSettings.UserChanged += MainSettings_UserChanged; MainSettings.UserChanged += MainSettings_UserChanged;
CrossConnectivity.Current.ConnectivityChanged += (conSender, args) => CrossConnectivity.Current.ConnectivityChanged += (conSender, args) =>
{ App.IsConnected = args.IsConnected; }; { App.IsConnected = args.IsConnected; };
SetupHubConnection();
MainSettings_UserChanged(this, null); MainSettings_UserChanged(this, null);
if (CrossConnectivity.Current.IsConnected)
StartHubConnection(); StartConnexion();
} }
// omg // omg
@ -106,7 +107,7 @@ namespace BookAStar
// Called on rotation // Called on rotation
private void OnSuspended(object sender, EventArgs e) private void OnSuspended(object sender, EventArgs e)
{ {
StopHubConnection(); StopConnection();
int position = 0; int position = 0;
DataManager.Instance.AppState.Clear(); DataManager.Instance.AppState.Clear();
foreach (Page page in Navigation.NavigationStack) foreach (Page page in Navigation.NavigationStack)
@ -125,7 +126,7 @@ namespace BookAStar
// called on app startup, after OnStartup, not on rotation // called on app startup, after OnStartup, not on rotation
private void OnAppResumed(object sender, EventArgs e) private void OnAppResumed(object sender, EventArgs e)
{ {
StartHubConnection(); StartConnexion();
// TODO restore the navigation stack // TODO restore the navigation stack
base.OnResume(); base.OnResume();
foreach (var pageState in DataManager.Instance.AppState) foreach (var pageState in DataManager.Instance.AppState)
@ -316,7 +317,7 @@ namespace BookAStar
if (isConnected) if (isConnected)
{ {
// TODO Start all cloud related stuff // TODO Start all cloud related stuff
StartHubConnection(); StartConnexion();
} }
} }
@ -331,9 +332,10 @@ namespace BookAStar
} }
} }
// Start the Hub connection // Start the Hub connection
public static async void StartHubConnection () public static async void StartConnexion ()
{ {
try if (CrossConnectivity.Current.IsConnected)
try
{ {
await chatHubConnection.Start(); await chatHubConnection.Start();
} }
@ -350,6 +352,8 @@ namespace BookAStar
public void SetupHubConnection() public void SetupHubConnection()
{ {
if (chatHubConnection != null)
chatHubConnection.Dispose();
chatHubConnection = new HubConnection(Constants.SignalRHubsUrl); chatHubConnection = new HubConnection(Constants.SignalRHubsUrl);
chatHubConnection.Error += ChatHubConnection_Error; chatHubConnection.Error += ChatHubConnection_Error;
@ -367,11 +371,11 @@ namespace BookAStar
DataManager.Instance.ChatUsers.OnPrivateMessage(msg); DataManager.Instance.ChatUsers.OnPrivateMessage(msg);
}); });
} }
public static void StopHubConnection() public static void StopConnection()
{ {
try try
{ {
chatHubConnection.Stop(); chatHubConnection.Stop();
} }
catch (WebException) catch (WebException)
{ {
@ -385,18 +389,13 @@ namespace BookAStar
} }
private void MainSettings_UserChanged(object sender, EventArgs e) private void MainSettings_UserChanged(object sender, EventArgs e)
{ {
if (chatHubConnection != null) StopConnection();
{
chatHubConnection.Dispose();
chatHubConnection = null;
chatHubProxy = null;
}
if (MainSettings.CurrentUser != null) if (MainSettings.CurrentUser != null)
{ {
var token = MainSettings.CurrentUser.YavscTokens.AccessToken; var token = MainSettings.CurrentUser.YavscTokens.AccessToken;
SetupHubConnection();
chatHubConnection.Headers.Add("Authorization", $"Bearer {token}"); chatHubConnection.Headers.Add("Authorization", $"Bearer {token}");
} }
StartConnexion();
} }
private void ChatHubConnection_Error(Exception obj) private void ChatHubConnection_Error(Exception obj)

@ -27,32 +27,39 @@ namespace BookAStar.Pages.UserProfile
public async void OnRefreshQuery(object sender, EventArgs e) public async void OnRefreshQuery(object sender, EventArgs e)
{ {
IsBusy = true; // TODO disable the button when current user is not registered
using (var client = UserHelpers.CreateJsonClient()) if (MainSettings.CurrentUser==null)
ShowPage<AccountChooserPage>(null, true);
else
{ {
using (var request = new HttpRequestMessage(HttpMethod.Get, Constants.UserInfoUrl)) IsBusy = true;
using (var client = UserHelpers.CreateJsonClient())
{ {
using (var response = await client.SendAsync(request)) using (var request = new HttpRequestMessage(HttpMethod.Get, Constants.UserInfoUrl))
{ {
response.EnsureSuccessStatusCode(); using (var response = await client.SendAsync(request))
string userJson = await response.Content.ReadAsStringAsync(); {
JObject jactiveUser = JObject.Parse(userJson); response.EnsureSuccessStatusCode();
var username = jactiveUser["UserName"].Value<string>(); string userJson = await response.Content.ReadAsStringAsync();
var roles = jactiveUser["Roles"].Values<string>().ToList(); JObject jactiveUser = JObject.Parse(userJson);
var emails = jactiveUser["EMails"].Values<string>().ToList(); var username = jactiveUser["UserName"].Value<string>();
var avatar = jactiveUser["Avatar"].Value<string>(); var roles = jactiveUser["Roles"].Values<string>().ToList();
var address = jactiveUser["Avatar"].Value<string>(); var emails = jactiveUser["EMails"].Values<string>().ToList();
var me = MainSettings.CurrentUser; var avatar = jactiveUser["Avatar"].Value<string>();
me.Address = address; var address = jactiveUser["Avatar"].Value<string>();
me.Avatar = avatar; var me = MainSettings.CurrentUser;
me.EMails = emails; me.Address = address;
me.UserName = username; me.Avatar = avatar;
me.Roles = roles; me.EMails = emails;
MainSettings.SaveUser(me); me.UserName = username;
me.Roles = roles;
MainSettings.SaveUser(me);
}
} }
} }
IsBusy = false;
} }
IsBusy = false;
} }
public void OnManageFiles(object sender, EventArgs e) public void OnManageFiles(object sender, EventArgs e)

Loading…