Only apply remote list fragment if changed

pull/898/head
Alex Baker 6 years ago
parent a3ffde6090
commit 685f5d9e43

@ -116,6 +116,7 @@ public class TaskEditControlSetFragmentManager {
TaskEditFragment taskEditFragment, Task task) { TaskEditFragment taskEditFragment, Task task) {
Bundle arguments = new Bundle(); Bundle arguments = new Bundle();
arguments.putParcelable(TaskEditControlFragment.EXTRA_TASK, task); arguments.putParcelable(TaskEditControlFragment.EXTRA_TASK, task);
arguments.putBoolean(TaskEditControlFragment.EXTRA_IS_NEW, task.isNew());
List<TaskEditControlFragment> fragments = new ArrayList<>(); List<TaskEditControlFragment> fragments = new ArrayList<>();
FragmentManager fragmentManager = taskEditFragment.getChildFragmentManager(); FragmentManager fragmentManager = taskEditFragment.getChildFragmentManager();

@ -14,6 +14,7 @@ import androidx.annotation.Nullable;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import com.google.android.material.chip.Chip; import com.google.android.material.chip.Chip;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.todoroo.astrid.api.CaldavFilter; import com.todoroo.astrid.api.CaldavFilter;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
@ -164,14 +165,20 @@ public class RemoteListFragment extends TaskEditControlFragment {
@Override @Override
public void apply(Task task) { public void apply(Task task) {
if (isNew() || hasChanges()) {
task.setParent(0); task.setParent(0);
task.setParentUuid(null); task.setParentUuid(null);
taskMover.move(ImmutableList.of(task.getId()), selectedList); taskMover.move(ImmutableList.of(task.getId()), selectedList);
} }
}
@Override @Override
public boolean hasChanges(Task original) { public boolean hasChanges(Task original) {
return selectedList == null ? originalList != null : !selectedList.equals(originalList); return hasChanges();
}
private boolean hasChanges() {
return !Objects.equal(selectedList, originalList);
} }
@Override @Override

@ -16,8 +16,10 @@ import org.tasks.injection.InjectingFragment;
public abstract class TaskEditControlFragment extends InjectingFragment { public abstract class TaskEditControlFragment extends InjectingFragment {
public static final String EXTRA_TASK = "extra_task"; public static final String EXTRA_TASK = "extra_task";
public static final String EXTRA_IS_NEW = "extra_is_new";
protected Task task; protected Task task;
private boolean isNew;
@Nullable @Nullable
@Override @Override
@ -39,6 +41,7 @@ public abstract class TaskEditControlFragment extends InjectingFragment {
Bundle arguments = getArguments(); Bundle arguments = getArguments();
if (arguments != null) { if (arguments != null) {
task = arguments.getParcelable(EXTRA_TASK); task = arguments.getParcelable(EXTRA_TASK);
isNew = arguments.getBoolean(EXTRA_IS_NEW);
} }
} }
@ -57,4 +60,8 @@ public abstract class TaskEditControlFragment extends InjectingFragment {
public boolean hasChanges(Task original) { public boolean hasChanges(Task original) {
return false; return false;
} }
protected boolean isNew() {
return isNew;
}
} }

Loading…
Cancel
Save