private void GetCustomerOwnTaskAndRefreshAccessToken() { try { string sUserToken = Joyces.Helpers.Settings.AccessToken; string sUserEmail = Joyces.Helpers.Settings.UserEmail; Task.Run(async() => { var getCustomer = await RestAPI.GetCustomer(sUserEmail, sUserToken); // System.Diagnostics.Debug.WriteLine("================AFTER GET CUSTOMER================ " + DateTime.Now.ToString("HH:mm:ss.fff")); if (getCustomer != null && getCustomer is Customer) { Joyces.Platform.AppContext.Instance.Platform.CustomerList = (Customer)getCustomer; await SetCustomerSetting(); } }); Task.Run(async() => { Thread.Sleep(TimeSpan.FromSeconds(15)); // System.Diagnostics.Debug.WriteLine("================REFRESHTOKEN START================ " + DateTime.Now.ToString("HH:mm:ss.fff")); bool bRefreshed = await RestAPI.RefreshTokenInBackground(sUserEmail); string strRefreshed = ""; if (bRefreshed) { strRefreshed = "true"; } else { strRefreshed = "false"; } // System.Diagnostics.Debug.WriteLine("================REFRESHTOKEN END ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); }); //HERE REFRESH TOKEN } catch (Exception e) { } }
async private void CheckRESTServerStatus() { var tokenModel = await RestAPI.GetUserToken(GeneralSettings.TestUserUsername, GeneralSettings.TestUserPassword); var getCustomer = await RestAPI.GetCustomer(GeneralSettings.TestUserUsername, ((TokenModel)tokenModel).access_token); if (getCustomer != null && getCustomer is Customer) { TextViewRESTStatus.Text = "Online"; TextViewRESTStatus.TextColor = new UIColor(red: 0.14f, green: 0.62f, blue: 0.07f, alpha: 1.0f); } else if (getCustomer != null && tokenModel is AbalonErrors) { TextViewRESTStatus.Text = "Offline: " + ((AbalonErrors)tokenModel).message; TextViewRESTStatus.TextColor = new UIColor(red: 0.62f, green: 0.07f, blue: 0.07f, alpha: 1.0f); } else { TextViewRESTStatus.Text = "Offline"; TextViewRESTStatus.TextColor = new UIColor(red: 0.62f, green: 0.07f, blue: 0.07f, alpha: 1.0f); } }
async private void CheckRESTServerStatus() { EditText editTextDeveloperMenuStatusREST = FindViewById <EditText>(Resource.Id.editTextDeveloperMenuStatusREST); var tokenModel = await RestAPI.GetUserToken(GeneralSettings.TestUserUsername, GeneralSettings.TestUserPassword); var getCustomer = await RestAPI.GetCustomer(GeneralSettings.TestUserUsername, ((TokenModel)tokenModel).access_token); if (tokenModel != null && getCustomer is Customer) { editTextDeveloperMenuStatusREST.Text = "Online"; editTextDeveloperMenuStatusREST.SetTextColor(Android.Graphics.Color.DarkGreen); } else if (tokenModel != null && tokenModel is AbalonErrors) { editTextDeveloperMenuStatusREST.Text = "Offline: " + ((AbalonErrors)tokenModel).message; editTextDeveloperMenuStatusREST.SetTextColor(Android.Graphics.Color.DarkRed); } else { editTextDeveloperMenuStatusREST.Text = "Offline"; editTextDeveloperMenuStatusREST.SetTextColor(Android.Graphics.Color.DarkRed); } }
async partial void UIButton185623_TouchUpInside(UIButton sender) { var bounds = UIScreen.MainScreen.Bounds; loadPop = new LoadingOverlay(bounds); View.Add(loadPop); string sFirstName = txtFirstname.Text; string sLastName = txtLastname.Text; string sMobile = txtMobileNo.Text; string sEmail = customerList.email; string sAccessToken = Joyces.Helpers.Settings.AccessToken; string sResp = await RestAPI.UpdateUser(sEmail, sFirstName, sLastName, sMobile, sAccessToken); if (string.IsNullOrEmpty(sResp)) { var getCustomer = await RestAPI.GetCustomer(sEmail, sAccessToken); if (getCustomer == null) { alert = new UIAlertView(Lang.MESSAGE_HEADLINE, Lang.UNEXPECTED_ERROR, null, Lang.BUTTON_OK, null); alert.Show(); } else if (getCustomer is Customer) { Joyces.Platform.AppContext.Instance.Platform.CustomerList = (Customer)getCustomer; alert = new UIAlertView(Lang.MESSAGE_HEADLINE, Lang.PROFILE_UPDATE, null, Lang.BUTTON_OK, null); alert.Show(); } else if (getCustomer is AbalonErrors) { var localError = (AbalonErrors)getCustomer; 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; alert = new UIAlertView(Lang.MESSAGE_HEADLINE, Lang.USER_HAS_LOGGED_OUT, null, Lang.BUTTON_OK, null); alert.Show(); } else { alert = new UIAlertView(Lang.MESSAGE_HEADLINE, ((AbalonErrors)getCustomer).error_description, null, Lang.BUTTON_OK, null); alert.Show(); } } loadPop.Hide(); } else { alert = new UIAlertView(Lang.MESSAGE_HEADLINE, sResp, null, Lang.BUTTON_OK, null); alert.Show(); loadPop.Hide(); } }
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) { } } } }
//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(); } }
async private Task RefreshAllData() { //Refreashing News, Offer and More async try { string sUserToken = Joyces.Helpers.Settings.AccessToken; string sUserEmail = Joyces.Helpers.Settings.UserEmail; string strAccessTokenExp = Joyces.Helpers.Settings.AccessTokenExpiration; int iSecondsToExpiration = 0; if (!string.IsNullOrEmpty(strAccessTokenExp)) { Int32.TryParse(strAccessTokenExp, out iSecondsToExpiration); } await CheckValuesFromSettings(); //Int.TryParse(strAccessTokenExp, out iSecondsToExpiration); //System.Diagnostics.Debug.WriteLine("================START 1 ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); //Skicka användaren vidare till inloggatläge if (iSecondsToExpiration < 10) { if (!string.IsNullOrEmpty(sUserToken) && !string.IsNullOrEmpty(sUserEmail)) { Joyces.Platform.AppContext.Instance.Platform.CustomerId = sUserEmail; var getCustomer = await RestAPI.GetCustomer(sUserEmail, sUserToken); // System.Diagnostics.Debug.WriteLine("================AFTER GET CUSTOMER================ " + DateTime.Now.ToString("HH:mm:ss.fff")); if (getCustomer != null && getCustomer is Customer) { Joyces.Platform.AppContext.Instance.Platform.CustomerList = (Customer)getCustomer; //var resp = await RestAPI.GetOffer(sUserEmail, sUserToken); //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, sUserToken); //if (resp != null && resp is List<News>) // Joyces.Platform.AppContext.Instance.Platform.NewsList = (List<News>)resp; //else // Joyces.Platform.AppContext.Instance.Platform.NewsList = null; //Joyces.Platform.AppContext.Instance.Platform.MoreList = await RestAPI.GetMore(Helpers.Settings.AccessToken); GetAllDataForTabs(); } else if (getCustomer != null && getCustomer is AbalonErrors) { var localError = (AbalonErrors)getCustomer; if (localError.error.Contains("invalid_token") || localError.error.Contains("invalid_grant")) { Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; Joyces.Helpers.Settings.UserAccountNo = string.Empty; Alert(Lang.MESSAGE_HEADLINE, Lang.USER_HAS_LOGGED_OUT, Lang.BUTTON_OK); //Skickar användaren till inloggningssidan var intent = new Intent(this, typeof(MainActivity)); StartActivity(intent); } else { Alert(Lang.MESSAGE_HEADLINE, localError.message, Lang.BUTTON_OK); } } else { Alert(Lang.MESSAGE_HEADLINE, Lang.UNEXPECTED_ERROR, Lang.BUTTON_OK); } } } else { // System.Diagnostics.Debug.WriteLine("================ACCESS OK ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); Joyces.Platform.AppContext.Instance.Platform.CustomerId = sUserEmail; GetAllDataForTabs(); GetCustomerOwnTaskAndRefreshAccessToken(); } // System.Diagnostics.Debug.WriteLine("================END 1 ================ " + DateTime.Now.ToString("HH:mm:ss.fff")); //if (sSelectedTab == "news") // LoadNewsfeedView(); //else if (sSelectedTab == "offersWithLoyalty") // LoadOffersView(); //else if (sSelectedTab == "offersWithoutLoyalty") // LoadOffersSingleView(); //else if (sSelectedTab == "more") // LoadMoreFeed(); //progress.Hide(); } catch (Exception) { } }
async private void btnUpdate_Click(object sender, EventArgs e) { if (!bIsUpdating) { bIsUpdating = true; progress.Show(); string sEmail = FindViewById <EditText>(Resource.Id.txtProfileViewEmail).Text; string sFirstName = FindViewById <EditText>(Resource.Id.txtProfileViewFirstName).Text; string sLastName = FindViewById <EditText>(Resource.Id.txtProfileViewLastName).Text; string sMobileNo = FindViewById <EditText>(Resource.Id.txtProfileViewMobileNo).Text; string sUserToken = Joyces.Helpers.Settings.AccessToken; var sResp = await RestAPI.UpdateUser(sEmail, sFirstName, sLastName, sMobileNo, sUserToken); if (string.IsNullOrEmpty(sResp)) { var getCustomer = await RestAPI.GetCustomer(sEmail, sUserToken); if (getCustomer == null) { Alert(Lang.MESSAGE_HEADLINE, Lang.UNEXPECTED_ERROR, Lang.BUTTON_OK); } else if (getCustomer is Customer) { Joyces.Platform.AppContext.Instance.Platform.CustomerList = (Customer)getCustomer; Alert(Lang.MESSAGE_HEADLINE, Lang.PROFILE_UPDATE, Lang.BUTTON_OK); } else if (getCustomer is AbalonErrors) { var localError = (AbalonErrors)getCustomer; if (localError.error.Contains("invalid_token") || localError.error.Contains("invalid_grant")) { Joyces.Helpers.Settings.AccessToken = string.Empty; Joyces.Helpers.Settings.UserEmail = string.Empty; //Skickar användaren till inloggningssidan var intent = new Intent(this, typeof(MainActivity)); StartActivity(intent); Alert(Lang.MESSAGE_HEADLINE, Lang.USER_HAS_LOGGED_OUT, Lang.BUTTON_OK); } else { Alert(Lang.MESSAGE_HEADLINE, ((AbalonErrors)getCustomer).error_description, Lang.BUTTON_OK); } } progress.Hide(); } else { Alert(Lang.MESSAGE_HEADLINE, sResp, Lang.BUTTON_OK); } loadProfileViewContent(true); progress.Hide(); bIsUpdating = false; } }