diff --git a/BookAStar/BookAStar/App.xaml.cs b/BookAStar/BookAStar/App.xaml.cs index 8b2a52d4..7e665a83 100644 --- a/BookAStar/BookAStar/App.xaml.cs +++ b/BookAStar/BookAStar/App.xaml.cs @@ -67,9 +67,10 @@ namespace BookAStar MainSettings.UserChanged += MainSettings_UserChanged; CrossConnectivity.Current.ConnectivityChanged += (conSender, args) => { App.IsConnected = args.IsConnected; }; + SetupHubConnection(); MainSettings_UserChanged(this, null); - if (CrossConnectivity.Current.IsConnected) - StartHubConnection(); + + StartConnexion(); } // omg @@ -106,7 +107,7 @@ namespace BookAStar // Called on rotation private void OnSuspended(object sender, EventArgs e) { - StopHubConnection(); + StopConnection(); int position = 0; DataManager.Instance.AppState.Clear(); foreach (Page page in Navigation.NavigationStack) @@ -125,7 +126,7 @@ namespace BookAStar // called on app startup, after OnStartup, not on rotation private void OnAppResumed(object sender, EventArgs e) { - StartHubConnection(); + StartConnexion(); // TODO restore the navigation stack base.OnResume(); foreach (var pageState in DataManager.Instance.AppState) @@ -316,7 +317,7 @@ namespace BookAStar if (isConnected) { // TODO Start all cloud related stuff - StartHubConnection(); + StartConnexion(); } } @@ -331,9 +332,10 @@ namespace BookAStar } } // Start the Hub connection - public static async void StartHubConnection () + public static async void StartConnexion () { - try + if (CrossConnectivity.Current.IsConnected) + try { await chatHubConnection.Start(); } @@ -350,6 +352,8 @@ namespace BookAStar public void SetupHubConnection() { + if (chatHubConnection != null) + chatHubConnection.Dispose(); chatHubConnection = new HubConnection(Constants.SignalRHubsUrl); chatHubConnection.Error += ChatHubConnection_Error; @@ -367,11 +371,11 @@ namespace BookAStar DataManager.Instance.ChatUsers.OnPrivateMessage(msg); }); } - public static void StopHubConnection() + public static void StopConnection() { try { - chatHubConnection.Stop(); + chatHubConnection.Stop(); } catch (WebException) { @@ -385,18 +389,13 @@ namespace BookAStar } private void MainSettings_UserChanged(object sender, EventArgs e) { - if (chatHubConnection != null) - { - chatHubConnection.Dispose(); - chatHubConnection = null; - chatHubProxy = null; - } + StopConnection(); if (MainSettings.CurrentUser != null) { var token = MainSettings.CurrentUser.YavscTokens.AccessToken; - SetupHubConnection(); chatHubConnection.Headers.Add("Authorization", $"Bearer {token}"); } + StartConnexion(); } private void ChatHubConnection_Error(Exception obj) diff --git a/BookAStar/BookAStar/Pages/UserProfile/DashboardPage.xaml.cs b/BookAStar/BookAStar/Pages/UserProfile/DashboardPage.xaml.cs index 8301a339..7eca2418 100644 --- a/BookAStar/BookAStar/Pages/UserProfile/DashboardPage.xaml.cs +++ b/BookAStar/BookAStar/Pages/UserProfile/DashboardPage.xaml.cs @@ -27,32 +27,39 @@ namespace BookAStar.Pages.UserProfile public async void OnRefreshQuery(object sender, EventArgs e) { - IsBusy = true; - using (var client = UserHelpers.CreateJsonClient()) + // TODO disable the button when current user is not registered + if (MainSettings.CurrentUser==null) + ShowPage(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(); - string userJson = await response.Content.ReadAsStringAsync(); - JObject jactiveUser = JObject.Parse(userJson); - var username = jactiveUser["UserName"].Value(); - var roles = jactiveUser["Roles"].Values().ToList(); - var emails = jactiveUser["EMails"].Values().ToList(); - var avatar = jactiveUser["Avatar"].Value(); - var address = jactiveUser["Avatar"].Value(); - var me = MainSettings.CurrentUser; - me.Address = address; - me.Avatar = avatar; - me.EMails = emails; - me.UserName = username; - me.Roles = roles; - MainSettings.SaveUser(me); + using (var response = await client.SendAsync(request)) + { + response.EnsureSuccessStatusCode(); + string userJson = await response.Content.ReadAsStringAsync(); + JObject jactiveUser = JObject.Parse(userJson); + var username = jactiveUser["UserName"].Value(); + var roles = jactiveUser["Roles"].Values().ToList(); + var emails = jactiveUser["EMails"].Values().ToList(); + var avatar = jactiveUser["Avatar"].Value(); + var address = jactiveUser["Avatar"].Value(); + var me = MainSettings.CurrentUser; + me.Address = address; + me.Avatar = avatar; + me.EMails = emails; + me.UserName = username; + me.Roles = roles; + MainSettings.SaveUser(me); + } } } + IsBusy = false; } - IsBusy = false; + } public void OnManageFiles(object sender, EventArgs e)