diff --git a/app/src/main/java/com/github/yeriomin/yalpstore/DetailsActivity.java b/app/src/main/java/com/github/yeriomin/yalpstore/DetailsActivity.java index eb05607ed..bab257861 100644 --- a/app/src/main/java/com/github/yeriomin/yalpstore/DetailsActivity.java +++ b/app/src/main/java/com/github/yeriomin/yalpstore/DetailsActivity.java @@ -78,7 +78,7 @@ public class DetailsActivity extends YalpStoreActivity { redrawDetails(DetailsActivity.app); } - DetailsTask task = getDetailsTask(packageName); + GetAndRedrawDetailsTask task = getDetailsTask(packageName); task.setTaskClone(getDetailsTask(packageName)); task.execute(); } @@ -163,21 +163,29 @@ public class DetailsActivity extends YalpStoreActivity { downloadOptionsFragment.draw(); } - private DetailsTask getDetailsTask(String packageName) { - DetailsTask task = new DetailsTask() { - - @Override - protected void onPostExecute(Throwable e) { - super.onPostExecute(e); - if (this.app != null) { - DetailsActivity.app = this.app; - redrawDetails(this.app); - } - } - }; + private GetAndRedrawDetailsTask getDetailsTask(String packageName) { + GetAndRedrawDetailsTask task = new GetAndRedrawDetailsTask(this); task.setPackageName(packageName); task.setContext(this); task.setProgressIndicator(findViewById(R.id.progress)); return task; } + + static class GetAndRedrawDetailsTask extends DetailsTask { + + private DetailsActivity activity; + + public GetAndRedrawDetailsTask(DetailsActivity activity) { + this.activity = activity; + } + + @Override + protected void onPostExecute(Throwable e) { + super.onPostExecute(e); + if (this.app != null) { + DetailsActivity.app = this.app; + activity.redrawDetails(this.app); + } + } + } } diff --git a/app/src/main/java/com/github/yeriomin/yalpstore/DirectDownloadActivity.java b/app/src/main/java/com/github/yeriomin/yalpstore/DirectDownloadActivity.java index 2c9da941a..b31ced9b4 100644 --- a/app/src/main/java/com/github/yeriomin/yalpstore/DirectDownloadActivity.java +++ b/app/src/main/java/com/github/yeriomin/yalpstore/DirectDownloadActivity.java @@ -26,7 +26,7 @@ public class DirectDownloadActivity extends YalpStoreActivity { return; } Log.i(getClass().getName(), "Getting package " + packageName); - DetailsTask task = getDetailsTask(packageName); + DetailsAndPurchaseTask task = getDetailsTask(packageName); task.setTaskClone(getDetailsTask(packageName)); task.execute(); finish(); @@ -46,33 +46,13 @@ public class DirectDownloadActivity extends YalpStoreActivity { } } - private DetailsTask getDetailsTask(final String packageName) { - DetailsTask task = new DetailsTask() { - @Override - protected void onPostExecute(Throwable result) { - Throwable e = result; - if (result instanceof RuntimeException && null != result.getCause()) { - e = result.getCause(); - } - if (null == e) { - getPurchaseTask(app).execute(); - } else { - DetailsActivity.start(context, packageName); - } - } - }; + private DetailsAndPurchaseTask getDetailsTask(final String packageName) { + DetailsAndPurchaseTask task = new DetailsAndPurchaseTask(); task.setPackageName(packageName); task.setContext(this); return task; } - private PurchaseTask getPurchaseTask(App app) { - PurchaseTask task = new PurchaseTask(); - task.setApp(app); - task.setContext(this); - return task; - } - private boolean checkPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { return checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) @@ -80,4 +60,27 @@ public class DirectDownloadActivity extends YalpStoreActivity { } return true; } + + static class DetailsAndPurchaseTask extends DetailsTask { + + @Override + protected void onPostExecute(Throwable result) { + Throwable e = result; + if (result instanceof RuntimeException && null != result.getCause()) { + e = result.getCause(); + } + if (null == e) { + getPurchaseTask(app).execute(); + } else { + DetailsActivity.start(context, packageName); + } + } + + private PurchaseTask getPurchaseTask(App app) { + PurchaseTask task = new PurchaseTask(); + task.setApp(app); + task.setContext(context); + return task; + } + } } diff --git a/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/GeneralDetails.java b/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/GeneralDetails.java index b001595f7..c08e9c890 100644 --- a/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/GeneralDetails.java +++ b/app/src/main/java/com/github/yeriomin/yalpstore/fragment/details/GeneralDetails.java @@ -111,10 +111,10 @@ public class GeneralDetails extends Abstract { } try { PackageInfo info = activity.getPackageManager().getPackageInfo(app.getPackageName(), 0); - if (info.versionCode == app.getVersionCode()) { + String currentVersion = info.versionName; + if (info.versionCode == app.getVersionCode() || null == currentVersion) { return; } - String currentVersion = info.versionName; String newVersion = versionName; if (currentVersion.equals(newVersion)) { currentVersion += " (" + info.versionCode;