Esempio n. 1
0
        private async void SetupUI()
        {
            loadingCircle.Visibility = ViewStates.Visible;

            // We've opened the app before and cached the ideas offline
            if (File.Exists(Global.IDEAS_PATH))
            {
                var cachedDb = await DBSerializer.DeserializeDBAsync <List <Category> >(Global.IDEAS_PATH);

                if (cachedDb != null)
                {
                    Global.Categories = cachedDb;
                    categoryList.AddRange(cachedDb);
                    SetupList();
                    IdeasDownloader.StartLowkeyInvalidation();
                }
                else
                {
                    File.Delete(Global.IDEAS_PATH);
                    await DownloadIdeasAfresh();
                }
            }
            else // We've never opened the app before so we need to download the ideas from the server
            {
                await DownloadIdeasAfresh();
            }

            SetSubtitle("Not logged in");
            Global.LoginData = JsonConvert.DeserializeObject <LoginResponseData>(PreferenceManager.Instance.GetEntry("loginData"));
            if (Global.LoginData != null)
            {
                SetSubtitle(Global.LoginData.Email);
                IdeaBagApi.Instance.SetAuthToken(Global.LoginData.Token);
            }
        }
Esempio n. 2
0
        private async Task DownloadIdeasAfresh()
        {
            var snack = Snackbar.Make(bookmarksFab, "Getting ideas from server. Please wait.", Snackbar.LengthIndefinite);

            snack.Show();

            var response = await IdeasDownloader.DownloadIdeasFromGoogleDrive();

            if (response.Item1 != null)
            {
                // Item1 is the ideas from the Google Drive repo
                Global.Categories = response.Item1;
                categoryList      = response.Item1;

                snack.Dismiss();

                SetupList();
            }
            else
            {
                loadingCircle.Visibility = ViewStates.Gone;
                if (response.Item2 is TaskCanceledException)
                {
                    snack.SetText("Couldn't download ideas. Your connection might be too slow.").SetAction("Retry", (v) => SetupUI()).Show();
                }
                else if (response.Item2 is HttpRequestException)
                {
                    snack.SetText("Couldn't download ideas. Please check your connection and retry.").SetAction("Retry", (v) => SetupUI()).Show();
                }
            }
        }