diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java b/app/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java index bfcfcfbee..14cf3c6e6 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskEditActivity.java @@ -1,23 +1,57 @@ package com.todoroo.astrid.activity; -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; +import com.todoroo.astrid.dao.TaskDao; +import com.todoroo.astrid.service.TaskCreator; +import io.reactivex.Single; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.schedulers.Schedulers; +import javax.inject.Inject; +import org.tasks.injection.ActivityComponent; +import org.tasks.injection.InjectingAppCompatActivity; +import org.tasks.intents.TaskIntents; -public class TaskEditActivity extends Activity { +public class TaskEditActivity extends InjectingAppCompatActivity { private static final String TOKEN_ID = "id"; + @Inject TaskCreator taskCreator; + @Inject TaskDao taskDao; + private CompositeDisposable disposables; + @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + protected void onResume() { + super.onResume(); + + long taskId = getIntent().getLongExtra(TOKEN_ID, 0); + + disposables = new CompositeDisposable(); + + if (taskId == 0) { + startActivity(TaskIntents.getEditTaskIntent(this, taskCreator.createWithValues(""))); + finish(); + } else { + disposables.add( + Single.fromCallable(() -> taskDao.fetch(taskId)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + task -> { + startActivity(TaskIntents.getEditTaskIntent(this, task)); + finish(); + })); + } + } - final long taskId = getIntent().getLongExtra(TOKEN_ID, 0); + @Override + protected void onPause() { + super.onPause(); - Intent intent = new Intent(this, MainActivity.class); - intent.putExtra(MainActivity.OPEN_TASK, taskId); - startActivity(intent); + disposables.dispose(); + } - finish(); + @Override + public void inject(ActivityComponent component) { + component.inject(this); } } diff --git a/app/src/main/java/org/tasks/injection/ActivityComponent.java b/app/src/main/java/org/tasks/injection/ActivityComponent.java index 3e4acb54e..7067bbf61 100644 --- a/app/src/main/java/org/tasks/injection/ActivityComponent.java +++ b/app/src/main/java/org/tasks/injection/ActivityComponent.java @@ -3,6 +3,7 @@ package org.tasks.injection; import com.todoroo.astrid.activity.BeastModePreferences; import com.todoroo.astrid.activity.MainActivity; import com.todoroo.astrid.activity.ShareLinkActivity; +import com.todoroo.astrid.activity.TaskEditActivity; import com.todoroo.astrid.core.CustomFilterActivity; import com.todoroo.astrid.core.DefaultsPreferences; import com.todoroo.astrid.core.OldTaskPreferences; @@ -134,4 +135,6 @@ public interface ActivityComponent { void inject(DriveLoginActivity driveLoginActivity); void inject(DebugPreferences debugPreferences); + + void inject(TaskEditActivity taskEditActivity); } diff --git a/app/src/main/java/org/tasks/intents/TaskIntents.java b/app/src/main/java/org/tasks/intents/TaskIntents.java index 5710c7551..3b07e2f15 100644 --- a/app/src/main/java/org/tasks/intents/TaskIntents.java +++ b/app/src/main/java/org/tasks/intents/TaskIntents.java @@ -11,7 +11,11 @@ import org.jetbrains.annotations.Nullable; public class TaskIntents { - public static Intent getEditTaskIntent(Context context, Filter filter, Task task) { + public static Intent getEditTaskIntent(Context context, Task task) { + return getEditTaskIntent(context, null, task); + } + + public static Intent getEditTaskIntent(Context context, @Nullable Filter filter, Task task) { Intent intent = getTaskListIntent(context, filter); intent.putExtra(MainActivity.OPEN_NEW_TASK, task); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); diff --git a/app/src/main/java/org/tasks/reminders/NotificationActivity.java b/app/src/main/java/org/tasks/reminders/NotificationActivity.java index ae9f32a47..613cfe110 100644 --- a/app/src/main/java/org/tasks/reminders/NotificationActivity.java +++ b/app/src/main/java/org/tasks/reminders/NotificationActivity.java @@ -91,7 +91,7 @@ public class NotificationActivity extends InjectingAppCompatActivity .observeOn(AndroidSchedulers.mainThread()) .subscribe( task -> { - startActivity(TaskIntents.getEditTaskIntent(this, null, task)); + startActivity(TaskIntents.getEditTaskIntent(this, task)); finish(); }, e -> Timber.e("Task not found: %s", taskId)));