From 7de4e98746e0ee4501854b5e40ac4c933e4b116e Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 17 Dec 2015 13:43:24 -0600 Subject: [PATCH] Add request code for upgrades --- .../astrid/activity/AstridActivity.java | 18 ++++++++++++------ .../todoroo/astrid/service/StartupService.java | 3 ++- .../astrid/service/UpgradeActivity.java | 7 ++++++- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/todoroo/astrid/activity/AstridActivity.java b/src/main/java/com/todoroo/astrid/activity/AstridActivity.java index 667122470..18670f675 100644 --- a/src/main/java/com/todoroo/astrid/activity/AstridActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/AstridActivity.java @@ -15,6 +15,7 @@ import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.service.StartupService; +import com.todoroo.astrid.service.UpgradeActivity; import com.todoroo.astrid.subtasks.SubtasksHelper; import org.tasks.R; @@ -23,6 +24,8 @@ import org.tasks.ui.NavigationDrawerFragment; import javax.inject.Inject; +import timber.log.Timber; + /** * This wrapper activity contains all the glue-code to handle the callbacks between the different * fragments that could be visible on the screen in landscape-mode. @@ -40,7 +43,7 @@ public abstract class AstridActivity extends InjectingAppCompatActivity public static final int LAYOUT_SINGLE = 0; public static final int LAYOUT_DOUBLE = 1; - public static final int RESULT_RESTART_ACTIVITY = 50; + public static final int REQUEST_UPGRADE = 505; protected int fragmentLayout = LAYOUT_SINGLE; @@ -147,11 +150,14 @@ public abstract class AstridActivity extends InjectingAppCompatActivity @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == RESULT_RESTART_ACTIVITY) { - finish(); - startActivity(getIntent()); - return; + if (requestCode == REQUEST_UPGRADE && resultCode == RESULT_OK) { + if (data != null && data.getBooleanExtra(UpgradeActivity.EXTRA_RESTART, false)) { + Timber.w("Upgrade requires restart"); + finish(); + startActivity(getIntent()); + } + } else { + super.onActivityResult(requestCode, resultCode, data); } - super.onActivityResult(requestCode, resultCode, data); } } diff --git a/src/main/java/com/todoroo/astrid/service/StartupService.java b/src/main/java/com/todoroo/astrid/service/StartupService.java index cfb5d2d20..e50e6737d 100644 --- a/src/main/java/com/todoroo/astrid/service/StartupService.java +++ b/src/main/java/com/todoroo/astrid/service/StartupService.java @@ -19,6 +19,7 @@ import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.adapter.FilterAdapter; +import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.backup.TasksXmlImporter; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.DatabaseUpdateListener; @@ -132,7 +133,7 @@ public class StartupService { if(lastVersion > 0) { activity.startActivityForResult(new Intent(activity, UpgradeActivity.class) {{ putExtra(UpgradeActivity.TOKEN_FROM_VERSION, lastVersion); - }}, 0); + }}, AstridActivity.REQUEST_UPGRADE); } preferences.setDefaults(); preferences.setCurrentVersion(currentVersion); diff --git a/src/main/java/com/todoroo/astrid/service/UpgradeActivity.java b/src/main/java/com/todoroo/astrid/service/UpgradeActivity.java index 451adac9c..e9beaffca 100644 --- a/src/main/java/com/todoroo/astrid/service/UpgradeActivity.java +++ b/src/main/java/com/todoroo/astrid/service/UpgradeActivity.java @@ -27,6 +27,8 @@ public class UpgradeActivity extends InjectingAppCompatActivity { public static final String TOKEN_FROM_VERSION = "from_version"; //$NON-NLS-1$ + public static final String EXTRA_RESTART = "extra_restart"; + public static final int V4_8_0 = 380; public static final int V3_0_0 = 136; @@ -46,6 +48,7 @@ public class UpgradeActivity extends InjectingAppCompatActivity { new Thread() { @Override public void run() { + boolean restartRequired = false; try { if (from < V4_8_0) { performMarshmallowMigration(); @@ -54,7 +57,9 @@ public class UpgradeActivity extends InjectingAppCompatActivity { finished = true; DialogUtilities.dismissDialog(UpgradeActivity.this, dialog); sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH)); - setResult(AstridActivity.RESULT_RESTART_ACTIVITY); + Intent data = new Intent(); + data.putExtra(EXTRA_RESTART, restartRequired); + setResult(RESULT_OK, data); finish(); } }