Exemplo n.º 1
0
        private void InitXeroWebView()
        {
            xeroWebView.Source          = AuthorizeLink();
            activityIndicator.IsVisible = false;
            xeroWebView.Navigated      += async(object sender, WebNavigatedEventArgs e) =>
            {
                if (e.Url.Contains(@"https://www.xero.com/nz/"))
                {
                    activityIndicator.IsVisible = true;
                    int indexStart = e.Url.IndexOf("code=") + 5;
                    int length     = e.Url.IndexOf("&scope=") - indexStart;
                    Preferences.Set("Code", e.Url.Substring(indexStart, length));

                    try {
                        await XeroAPI.GetToken();

                        await XeroAPI.GetTenantID();

                        await XeroAPI.GetInvoices();

                        await XeroAPI.FillData();
                    }
                    catch {
                        await DisplayAlert("XERO API", "Failure in retrieving data from XERO", "OK");
                    }

                    await Navigation.PopModalAsync();
                }
            };
        }
Exemplo n.º 2
0
        // Get data from XERO API.
        private async void LoadDeliveryBtn_Clicked(object sender, EventArgs e)
        {
            if (!App.CheckIfInternet())
            {
                await DisplayAlert("Oops", "No internet connection, couldn't load data from XERO", "OK");

                return;
            }
            spinnerActivity.IsVisible = true;
            // no access token in Preferences: first run -> login
            // more than 30 days -> login
            // more than 30 mins -> get new access token
            // otherwise -> get data directly
            XeroAPI.DecodeAccessToken();
            long currentUnixTimeStamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

            try
            {
                if (XeroAPI._accessToken == null || currentUnixTimeStamp - XeroAPI._accessToken.nbf >= 30 * 24 * 3600)
                {
                    await Navigation.PushModalAsync(new XEROWebPage());

                    GridOverlay.IsVisible = false;
                }
                else if (currentUnixTimeStamp - XeroAPI._accessToken.nbf > 1800)
                {
                    // get a new access token
                    await XeroAPI.RefreshToken();

                    await XeroAPI.GetTenantID();

                    await XeroAPI.GetInvoices();

                    await XeroAPI.FillData();

                    SupplyOrder();
                    //await DisplayAlert("Xero API", "You got a new access Token", "OK");
                    await DisplayAlert("Xero API", "Data has been loaded", "OK");
                }
                else
                {
                    // get the data by the access token;
                    await XeroAPI.GetTenantID();

                    await XeroAPI.GetInvoices();

                    await XeroAPI.FillData();

                    SupplyOrder();
                    await DisplayAlert("Xero API", "Data has been loaded", "OK");
                }
            }
            catch
            {
                await DisplayAlert("Xero API", "Failure in loading data from XERO", "OK");
            }


            spinnerActivity.IsVisible = false;
        }
Exemplo n.º 3
0
        private void InitXeroWebView()
        {
            xeroWebView.Source          = AuthorizeLink();
            activityIndicator.IsVisible = false;
            xeroWebView.Navigated      += async(object sender, WebNavigatedEventArgs e) =>
            {
                if (e.Url.Contains(@"https://www.xero.com/nz/"))
                {
                    activityIndicator.IsVisible = true;
                    int indexStart = e.Url.IndexOf("code=") + 5;
                    int length     = e.Url.IndexOf("&scope=") - indexStart;
                    Preferences.Set("Code", e.Url.Substring(indexStart, length));

                    var isSuccess = await XeroAPI.GetToken();

                    await XeroAPI.GetTenantID();

                    await XeroAPI.GetInvoices();

                    //await DisplayAlert("OK", $"{XeroAPI._InvoiceResponse.Invoices[0].InvoiceID}", "OK");
                    await XeroAPI.FillData();

                    await Navigation.PopModalAsync();
                }
            };
        }