From c2269f0da078f4ecf16f41b1b2b3746280c34b9e Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 7 Jun 2017 09:31:36 -0700 Subject: [PATCH] fix widget issues --- .../android/habitica/data/TaskRepository.java | 4 ++++ .../data/implementation/TaskRepositoryImpl.java | 11 +++++++++++ .../data/implementation/UserRepositoryImpl.java | 7 ++++++- .../habitica/ui/activities/TaskFormActivity.java | 6 ++---- .../android/habitica/widget/TaskListFactory.java | 9 ++++++--- 5 files changed, 29 insertions(+), 8 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java index 4c73acfc3..b4c0b35a1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/TaskRepository.java @@ -47,4 +47,8 @@ public interface TaskRepository extends BaseRepository { Observable> updateTaskPosition(int currentPosition); Observable getUnmanagedTask(String taskid); + + void updateTaskInBackground(Task task); + + void createTaskInBackground(Task task); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java index da17f05e8..86cea503a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.java @@ -5,6 +5,7 @@ import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.data.local.TaskLocalRepository; import com.habitrpg.android.habitica.events.TaskCreatedEvent; import com.habitrpg.android.habitica.events.TaskUpdatedEvent; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.responses.TaskDirection; import com.habitrpg.android.habitica.models.responses.TaskDirectionData; import com.habitrpg.android.habitica.models.responses.TaskScoringResult; @@ -196,4 +197,14 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl return getTask(taskid) .map(localRepository::getUnmanagedCopy); } + + @Override + public void updateTaskInBackground(Task task) { + updateTask(task).subscribe(task1 -> {}, RxErrorHandler.handleEmptyError()); + } + + @Override + public void createTaskInBackground(Task task) { + createTask(task).subscribe(task1 -> {}, RxErrorHandler.handleEmptyError()); + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java index 5f7dece0b..e253740f8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/UserRepositoryImpl.java @@ -197,7 +197,12 @@ public class UserRepositoryImpl extends BaseRepositoryImpl if (!oldUser.isValid()) { return oldUser; } - User copiedUser = localRepository.getUnmanagedCopy(oldUser); + User copiedUser; + if (oldUser.isManaged()) { + copiedUser = localRepository.getUnmanagedCopy(oldUser); + } else { + copiedUser = oldUser; + } if (newUser.getItems() != null) { copiedUser.setItems(newUser.getItems()); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java index ab746c3d4..00e1c6087 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java @@ -1247,14 +1247,12 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem if (this.saveTask(this.task)) { //send back to other elements. - Observable observable; if (TaskFormActivity.this.task.getId() == null) { - observable = taskRepository.createTask(task); + taskRepository.createTaskInBackground(task); } else { - observable = taskRepository.updateTask(task); + taskRepository.updateTaskInBackground(task); } - observable.subscribe(task1 -> {}, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListFactory.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListFactory.java index 3a9ebfa36..f7146deb2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListFactory.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/TaskListFactory.java @@ -13,6 +13,7 @@ import net.pherth.android.emoji_library.EmojiHandler; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; +import android.os.Handler; import android.text.SpannableStringBuilder; import android.text.style.DynamicDrawableSpan; import android.widget.RemoteViews; @@ -70,7 +71,8 @@ public abstract class TaskListFactory implements RemoteViewsService.RemoteViewsF } private void loadData() { - taskRepository.getTasks(taskType, userID) + Handler mainHandler = new Handler(context.getMainLooper()); + mainHandler.post(() -> taskRepository.getTasks(taskType, userID) .flatMap(Observable::from) .filter(task -> task.type.equals(Task.TYPE_TODO) || task.isDisplayedActive(customDayStart)) .toList() @@ -79,10 +81,11 @@ public abstract class TaskListFactory implements RemoteViewsService.RemoteViewsF .first() .subscribe(tasks -> { taskList = tasks; - this.reloadData = false; + reloadData = false; AppWidgetManager.getInstance(context).notifyAppWidgetViewDataChanged(widgetId, R.id.list_view); taskRepository.close(); - }, throwable -> this.reloadData = false); + }, throwable -> reloadData = false)); + }