async private void LoginButton_Click(object sender, EventArgs e) { Console.WriteLine("Login button clicked"); progress.Show(); Console.WriteLine("Progress Show exited"); EditText txtEmail = FindViewById <EditText>(Resource.Id.EmailEditText); string sUsername = txtEmail.Text; EditText txtPassword = FindViewById <EditText>(Resource.Id.PasswordEditText); string sPassword = txtPassword.Text; var tokenModel = await RestAPI.GetUserToken(sUsername, sPassword); if (tokenModel != null && tokenModel is TokenModel) { //Om allt går som det ska, så ska den komma in hit! Joyces.Helpers.Settings.AccessToken = ((TokenModel)tokenModel).access_token; Joyces.Helpers.Settings.UserEmail = sUsername; if (((TokenModel)tokenModel).expires_in != null) { Joyces.Helpers.Settings.AccessTokenExpiration = ((TokenModel)tokenModel).expires_in.ToString(); } Joyces.Platform.AppContext.Instance.Platform.CustomerId = sUsername; var getCustomer = await RestAPI.GetCustomer(sUsername, ((TokenModel)tokenModel).access_token); if (getCustomer == null) { Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; Joyces.Helpers.Settings.AccessTokenExpiration = string.Empty; Alert(Lang.MESSAGE_HEADLINE, Lang.UNEXPECTED_ERROR, Lang.BUTTON_OK); progress.Hide(); return; } else if (getCustomer is Customer) { //Always set new token here. //((TokenModel)tokenModel).access_token = Helpers.Settings.AccessToken; // Task.Run(async () => await LoadApp()); Joyces.Platform.AppContext.Instance.Platform.CustomerList = (Customer)getCustomer; if (Joyces.Platform.AppContext.Instance.Platform.CustomerList != null) { await SetCustomerSetting(); } var resp = await RestAPI.GetOffer(sUsername, Joyces.Helpers.Settings.AccessToken); if (resp != null && resp is List <Offer> ) { Joyces.Platform.AppContext.Instance.Platform.OfferList = (List <Offer>)resp; await SetOfferSetting(); } else { Joyces.Platform.AppContext.Instance.Platform.OfferList = null; } resp = await RestAPI.GetNews(sUsername, Joyces.Helpers.Settings.AccessToken); if (resp != null && resp is List <News> ) { Joyces.Platform.AppContext.Instance.Platform.NewsList = (List <News>)resp; await SetNewsSetting(); } else { Joyces.Platform.AppContext.Instance.Platform.NewsList = null; } Joyces.Platform.AppContext.Instance.Platform.MoreList = await RestAPI.GetMore(Joyces.Helpers.Settings.AccessToken); if (Joyces.Platform.AppContext.Instance.Platform.MoreList != null) { await SetMoreSetting(); } Joyces.Helpers.Settings.UserAccountNo = Joyces.Platform.AppContext.Instance.Platform.CustomerList.accountNumber; progress.Hide(); var t = Task.Run(async() => await LoadApp()); } else if (getCustomer is AbalonErrors) { var localError = (AbalonErrors)getCustomer; Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; Alert(Lang.ERROR_HEADLINE, localError.message, Lang.BUTTON_OK); progress.Hide(); } } else if (tokenModel != null && tokenModel is AbalonErrors) { //Hit kommer den om ett fel returneras från Abalon progress.Hide(); Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; if (((AbalonErrors)tokenModel).error_description.Contains("PRE_AUTHENTICATION")) { ((AbalonErrors)tokenModel).error_description = Lang.NOT_ACTIVATED_MEMBER; } Alert(Lang.ERROR_HEADLINE, ((AbalonErrors)tokenModel).error_description.Replace("@carbon.super", ""), Lang.BUTTON_OK); } else { //Vid all sorts exception kommer den hit och visar UNEXPECTED_ERROR! progress.Hide(); Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; Alert(Lang.ERROR_HEADLINE, Lang.WRONG_PASSWORD, Lang.BUTTON_OK); } }
async override public void ViewDidAppear(bool animated) { if (GeneralSettings.AutoLogin) { if (!string.IsNullOrEmpty(Joyces.Helpers.Settings.AccessToken) && !string.IsNullOrEmpty(Joyces.Helpers.Settings.UserEmail)) { //Kontrollerar om användaren redan har loggat in en gång. try { var bounds = UIScreen.MainScreen.Bounds; loadPop = new LoadingOverlay(bounds); View.Add(loadPop); System.Diagnostics.Debug.WriteLine("================LOGIN IOS BEFORE CALLS ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); //string sAccessToken = Helpers.Settings.AccessToken; string sUserEmail = Joyces.Helpers.Settings.UserEmail; if (!string.IsNullOrEmpty(Joyces.Helpers.Settings.AccessToken) && !string.IsNullOrEmpty(sUserEmail)) { Joyces.Platform.AppContext.Instance.Platform.CustomerId = sUserEmail; var getCustomer = await RestAPI.GetCustomer(sUserEmail, Joyces.Helpers.Settings.AccessToken); if (getCustomer != null && getCustomer is Customer) { Joyces.Platform.AppContext.Instance.Platform.CustomerList = (Customer)getCustomer; var resp = await RestAPI.GetOffer(sUserEmail, Joyces.Helpers.Settings.AccessToken); if (resp != null && resp is List <Offer> ) { Joyces.Platform.AppContext.Instance.Platform.OfferList = (List <Offer>)resp; } else { Joyces.Platform.AppContext.Instance.Platform.OfferList = null; } resp = await RestAPI.GetNews(sUserEmail, Joyces.Helpers.Settings.AccessToken); if (resp != null && resp is List <Joyces.News> ) { Joyces.Platform.AppContext.Instance.Platform.NewsList = (List <Joyces.News>)resp; } else { Joyces.Platform.AppContext.Instance.Platform.NewsList = null; } Joyces.Platform.AppContext.Instance.Platform.MoreList = await RestAPI.GetMore(Joyces.Helpers.Settings.AccessToken); var x = new MenuTabBarController(this.Handle); x.PerformSegue("segueMenu", this); } else { Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; return; } } System.Diagnostics.Debug.WriteLine("================LOGIN IOS AFTER CALLS ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); } catch (Exception ex) { } } } }
async private void fetchData() { try { string sCustomerId = Joyces.Platform.AppContext.Instance.Platform.CustomerId; string sUserToken = Joyces.Helpers.Settings.AccessToken; var resp = await RestAPI.GetOffer(sCustomerId, sUserToken); if (resp == null) { _message = new UIAlertView(Lang.MESSAGE_HEADLINE, Lang.SERVICE_NOT_AVAILABLE, null, Lang.BUTTON_OK, null); _message.Show(); } else if (resp != null && resp is List <Offer> ) { Joyces.Platform.AppContext.Instance.Platform.OfferList = (List <Offer>)resp; //Troligen har giltighetstiden för Token gått ut. if (Joyces.Platform.AppContext.Instance.Platform.OfferList == null) { Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; var mainController = Storyboard.InstantiateViewController("loginNavigationController"); UIApplication.SharedApplication.KeyWindow.RootViewController = mainController; _message = new UIAlertView(Lang.MESSAGE_HEADLINE, Lang.USER_HAS_LOGGED_OUT, null, Lang.BUTTON_OK, null); _message.Show(); } else { offerTableView.Source = new OfferTableViewSource(Joyces.Platform.AppContext.Instance.Platform.OfferList); offerTableView.SeparatorStyle = UITableViewCellSeparatorStyle.SingleLine; offerTableView.SeparatorInset = UIEdgeInsets.Zero; offerTableView.RowHeight = 120f; offerTableView.EstimatedRowHeight = 120f; offerTableView.ReloadData(); } } else if (resp != null && resp is AbalonErrors) { var localError = (AbalonErrors)resp; if (localError.error.Contains("invalid_token") || localError.error.Contains("invalid_grant")) { Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; var mainController = Storyboard.InstantiateViewController("loginNavigationController"); UIApplication.SharedApplication.KeyWindow.RootViewController = mainController; _message = new UIAlertView(Lang.MESSAGE_HEADLINE, Lang.USER_HAS_LOGGED_OUT, null, Lang.BUTTON_OK, null); _message.Show(); } else { UIAlertView _error = new UIAlertView(Lang.MESSAGE_HEADLINE, localError.message, null, Lang.BUTTON_OK, null); _error.Show(); } } else { //_message = new UIAlertView(Lang.MESSAGE_HEADLINE, Lang.UNEXPECTED_ERROR + " #1", null, Lang.BUTTON_OK, null); //_message.Show(); } } catch (Exception ex) { var mainController = Storyboard.InstantiateViewController("loginNavigationController"); UIApplication.SharedApplication.KeyWindow.RootViewController = mainController; _message = new UIAlertView(Lang.MESSAGE_HEADLINE, Lang.UNEXPECTED_ERROR + " #2", null, Lang.BUTTON_OK, null); _message.Show(); } }
//Login button async partial void BtnLogin_TouchUpInside(UIButton sender) { var bounds = UIScreen.MainScreen.Bounds; loadPop = new LoadingOverlay(bounds); View.Add(loadPop); string sUsername = txtName.Text; string sPassword = txtPassword.Text; var tokenModel = await RestAPI.GetUserToken(sUsername, sPassword); if (tokenModel != null && tokenModel is TokenModel) { //Om allt går som det ska, så ska den komma in hit! Joyces.Helpers.Settings.AccessToken = ((TokenModel)tokenModel).access_token; Joyces.Helpers.Settings.UserEmail = sUsername; Joyces.Platform.AppContext.Instance.Platform.CustomerId = sUsername; var getCustomer = await RestAPI.GetCustomer(sUsername, Joyces.Helpers.Settings.AccessToken); if (getCustomer == null) { Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; UIAlertView _error = new UIAlertView(Lang.ERROR_HEADLINE, Lang.UNEXPECTED_ERROR, null, Lang.BUTTON_OK, null); _error.Show(); loadPop.Hide(); } else if (getCustomer is Customer) { //Always set new token here. ((TokenModel)tokenModel).access_token = Joyces.Helpers.Settings.AccessToken; Joyces.Platform.AppContext.Instance.Platform.CustomerList = (Customer)getCustomer; var resp = await RestAPI.GetOffer(sUsername, Joyces.Helpers.Settings.AccessToken); if (resp != null && resp is List <Offer> ) { Joyces.Platform.AppContext.Instance.Platform.OfferList = (List <Offer>)resp; } else { Joyces.Platform.AppContext.Instance.Platform.OfferList = null; } resp = await RestAPI.GetNews(sUsername, Joyces.Helpers.Settings.AccessToken); if (resp != null && resp is List <Joyces.News> ) { Joyces.Platform.AppContext.Instance.Platform.NewsList = (List <Joyces.News>)resp; } else { Joyces.Platform.AppContext.Instance.Platform.NewsList = null; } Joyces.Platform.AppContext.Instance.Platform.MoreList = await RestAPI.GetMore(Joyces.Helpers.Settings.AccessToken); loadPop.Hide(); Joyces.Helpers.Settings.UserAccountNo = Joyces.Platform.AppContext.Instance.Platform.CustomerList.accountNumber; var x = new MenuTabBarController(this.Handle); x.PerformSegue("segueMenu", this); } else if (getCustomer is AbalonErrors) { var localError = (AbalonErrors)getCustomer; Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; UIAlertView _error = new UIAlertView(Lang.MESSAGE_HEADLINE, localError.message, null, Lang.BUTTON_OK, null); _error.Show(); loadPop.Hide(); return; } } else if (tokenModel != null && tokenModel is AbalonErrors) { //Hit kommer den om ett fel returneras från Abalon loadPop.Hide(); Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; if (((AbalonErrors)tokenModel).error_description.Contains("PRE_AUTHENTICATION")) { ((AbalonErrors)tokenModel).error_description = Lang.NOT_ACTIVATED_MEMBER; } try { //TEMPORÄRT string strErrorDesc = ((AbalonErrors)tokenModel).error_description; strErrorDesc = strErrorDesc.Replace("Missing parameters", "Saknade parametrar").Replace("username", "Epost").Replace("password", "Lösenord"); ((AbalonErrors)tokenModel).error_description = strErrorDesc; strErrorDesc = strErrorDesc + ""; } catch (Exception eee) { } UIAlertView _error = new UIAlertView(Lang.MESSAGE_HEADLINE, ((AbalonErrors)tokenModel).error_description.Replace("@carbon.super", ""), null, Lang.BUTTON_OK, null); _error.Show(); } else { //Vid all sorts exception kommer den hit och visar UNEXPECTED_ERROR! loadPop.Hide(); Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; UIAlertView _error = new UIAlertView(Lang.MESSAGE_HEADLINE, Lang.UNEXPECTED_ERROR, null, Lang.BUTTON_OK, null); _error.Show(); } }
private void GetAllDataForTabs() { try { // System.Diagnostics.Debug.WriteLine("================START 2 ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); string sUserToken = Joyces.Helpers.Settings.AccessToken; string sUserEmail = Joyces.Helpers.Settings.UserEmail; Task.Run(async() => { // System.Diagnostics.Debug.WriteLine("================OFFERS START ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); var resp = await RestAPI.GetOffer(sUserEmail, sUserToken); // System.Diagnostics.Debug.WriteLine("================OFFERS END ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); bool bOfferIsNotTheSame = false; if (resp != null && resp is List <Offer> ) { string strJsonFromRest = JsonConvert.SerializeObject((List <Offer>)resp); if (strJsonFromRest != Joyces.Helpers.Settings.OfferJson) { Joyces.Platform.AppContext.Instance.Platform.OfferList = (List <Offer>)resp; bOfferIsNotTheSame = true; } await SetOfferSetting(); } else { Joyces.Platform.AppContext.Instance.Platform.OfferList = null; } if (Joyces.Platform.AppContext.Instance.Platform.OfferList != null && bOfferIsNotTheSame) { if (sSelectedTab == "offersWithLoyalty") { RunOnUiThread(() => { LoadOffersView(); }); } else if (sSelectedTab == "offersWithoutLoyalty") { RunOnUiThread(() => { LoadOffersSingleView(); }); } } }); Task.Run(async() => { // System.Diagnostics.Debug.WriteLine("================NEWS START ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); var resp2 = await RestAPI.GetNews(sUserEmail, sUserToken); // System.Diagnostics.Debug.WriteLine("================NEWS END ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); bool bNewsIsNotTheSame = false; if (resp2 != null && resp2 is List <News> ) { string strJsonFromRest = JsonConvert.SerializeObject((List <News>)resp2); if (strJsonFromRest != Joyces.Helpers.Settings.NewsJson) { Joyces.Platform.AppContext.Instance.Platform.NewsList = (List <News>)resp2; bNewsIsNotTheSame = true; } await SetNewsSetting(); } else { Joyces.Platform.AppContext.Instance.Platform.NewsList = null; } if (Joyces.Platform.AppContext.Instance.Platform.NewsList != null && bNewsIsNotTheSame) { if (sSelectedTab == "news") { RunOnUiThread(() => { LoadNewsfeedView(); }); } } }); Task.Run(async() => { // System.Diagnostics.Debug.WriteLine("================MORE START ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); bool bMoreIsNotTheSame = false; var resp = await RestAPI.GetMore(Joyces.Helpers.Settings.AccessToken); if (resp != null && resp is List <More> ) { string strJsonFromRest = JsonConvert.SerializeObject((List <More>)resp); if (strJsonFromRest != Joyces.Helpers.Settings.MoreJson) { Joyces.Platform.AppContext.Instance.Platform.MoreList = (List <More>)resp; bMoreIsNotTheSame = true; } if (Joyces.Platform.AppContext.Instance.Platform.MoreList != null) { await SetMoreSetting(); } } // System.Diagnostics.Debug.WriteLine("================MORE END ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); if (sSelectedTab == "more") { if (Joyces.Platform.AppContext.Instance.Platform.MoreList != null && bMoreIsNotTheSame) { RunOnUiThread(() => { LoadMoreFeed(); }); } } }); // System.Diagnostics.Debug.WriteLine("================END 2 ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); } catch (Exception e) { } }