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); } }
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(); } } }