private bool CheckBeforeConnect() { Uri host = new Uri(DataManager.Get <ISettingsManager>().Settings.DownloadUrl); if (!Reachability.IsHostReachable("http://" + host.Host)) { if (Activity == null) { return(false); } Activity.RunOnUiThread(() => { StopUpdating(); var alert = new AlertDialog.Builder(Activity); alert.SetTitle(GetString(Resource.String.gen_error)); alert.SetMessage(GetString(Resource.String.gen_serverNotReachable)); alert.SetPositiveButton("Ok", (EventHandler <DialogClickEventArgs>)null); alert.Show().SetDivider(); }); return(false); } //se siamo nella cartella principale controllo la compatibilità con la versione dell'app var verResult = DownloadManager.CheckAppVersion(2); if (!verResult.Success) { Activity.RunOnUiThread(() => { StopUpdating(); var alert = new AlertDialog.Builder(Activity); alert.SetCancelable(false); alert.SetTitle(GetString(Resource.String.gen_error)); alert.SetMessage(GetString(Resource.String.gen_appVersion)); alert.SetPositiveButton(GetString(Resource.String.gen_downApp), delegate { var callIntent = new Intent(Intent.ActionView); Android.Net.Uri uri = Android.Net.Uri.Parse(verResult.Link); callIntent.SetData(uri); this.StartActivity(callIntent); //va all'edicola var home = Activity as HomeScreen; home.GoTo(0); }); alert.SetNegativeButton(GetString(Resource.String.gen_cancel), delegate { //va all'edicola var home = Activity as HomeScreen; home.GoTo(0); }); alert.Show().SetDivider(); }); this.IsUpdating = false; return(false); } //controllo utente disattivato var result = DownloadManager.CheckUser(); if (!result.Success) { if (result.ErrBloccante) { Activity.RunOnUiThread(() => { StopUpdating(); var alert = new AlertDialog.Builder(Activity); alert.SetTitle(GetString(Resource.String.gen_error)); alert.SetMessage(result.Message); alert.SetPositiveButton("Ok", (EventHandler <DialogClickEventArgs>)null); alert.Show().SetDivider(); var adapter = new DownloadGridAdapter(Activity, new List <Object>()); _GridView.Adapter = adapter; StopUpdating(); }); this.IsUpdating = false; return(false); } } return(true); }
private async Task LoadDocuments() { Utils.WriteLog("download PopulateTable"); if (!CheckBeforeConnect()) { return; } List <Download> docs = DownloadManager.GetDocuments(_CurrentDir, DataManager.Get <IPreferencesManager>().Preferences.EdicolaOrder); List <DownDir> _Directories = DownloadManager.GetDirectory(_CurrentDir); //aggiungo celle vuote in modo da tenere separati cartelle e documenti int lastLineCol = _Directories.Count - ((int)(_Directories.Count / ColumnNum) * ColumnNum); if (ColumnNum > 1 && lastLineCol > 0) { int n = ColumnNum - lastLineCol; for (int i = 0; i < n; i++) { DownDir info = new DownDir(); _Directories.Add(info); } } //in-app billing // prendo i prodotti che non sono stati acquistati e che non hanno permessi dalla lista che mi arriva dal server Action <string> buyAction = null; _Abbonamenti = new List <Subscription>(); if (DataManager.Get <ISettingsManager>().Settings.InAppPurchase&& _billingHandler != null) { var products = docs.Where(p => p.IapID != "" && !p.IapAutorizzato && !p.IapAcquistato && p.Stato == DownloadStato.Download); if (products.Count() > 0) { //lista degli id dei prodotti per richiedere le info a google List <string> productsIds = new List <string>(); foreach (var prod in products) { productsIds.Add(prod.IapID); } //richiesta delle informazioni a google IReadOnlyList <Product> billProducts = await _billingHandler.QueryInventory(productsIds, ItemType.Product); if (billProducts != null) { //per ogni prodotto setto i valori corretti nel download foreach (var billProd in billProducts) { var down = docs.Where(d => d.IapID == billProd.ProductId).FirstOrDefault(); if (down != null && down.ID != "") { if (!down.IapAcquistato && !down.IapAutorizzato && down.Stato == DownloadStato.Download) { down.IapPrezzo = billProd.Price; down.Stato = DownloadStato.Buy; } } //tolgo i prodotti corretti dalla lista degli id productsIds.RemoveAll(x => x == billProd.ProductId); } //gli id rimasti li tolgo dai download perché vuol dire che google non li ha riconosciuti foreach (var id in productsIds) { docs.RemoveAll(x => x.IapID == id); } buyAction += (string p) => { if (!DownloadManager.IsLogged()) { Action action = delegate { PopulateTable(); }; ActivitiesBringe.SetObject("loginSuccess", action); var logActivity = new Intent(Activity, typeof(LoginActivity)); StartActivity(logActivity); } else { var prod = billProducts.Where(x => x.ProductId == p).FirstOrDefault(); if (prod == null) { return; } Task billTask = BillProcess(prod); } }; } } //abbonamenti List <string> subIds = new List <string>(); _Abbonamenti = DownloadManager.GetSubscriptions(); foreach (var s in _Abbonamenti) { subIds.Add(s.IapID); } if (subIds.Count > 0) { IReadOnlyList <Product> billSubscription = await _billingHandler.QueryInventory(subIds, ItemType.Subscription); if (billSubscription != null) { foreach (var billSub in billSubscription) { var sub = _Abbonamenti.Where(d => d.IapID == billSub.ProductId).FirstOrDefault(); if (sub != null && sub.IapID != "") { sub.Nome = billSub.Title.Replace("(" + Activity.ApplicationInfo.LoadLabel(Activity.PackageManager) + ")", "").Trim(); sub.Prezzo = billSub.Price; } //tolgo i prodotti corretti dalla lista degli id subIds.RemoveAll(x => x == billSub.ProductId); } //gli id rimasti li tolgo dai download perché vuol dire che google non li ha riconosciuti foreach (var id in subIds) { _Abbonamenti.RemoveAll(x => x.IapID == id); } } } } _Items = new List <Object>(); _Items.AddRange(_Directories); _Items.AddRange(docs); var adapter = new DownloadGridAdapter(Activity, _Items); adapter.OpenAction += (string p) => { Intent i = new Intent(); i.SetClass(Activity, typeof(ViewerScreen)); i.SetAction(Intent.ActionView); i.PutExtra("pubPath", p); Activity.StartActivityForResult(i, 0); }; if (Activity != null) { Activity.RunOnUiThread(() => { this.SetTitle(); StopUpdating(); _GridView.Adapter = adapter; }); } if (buyAction != null) { adapter.BuyAction += buyAction; } }