From bb6565b688ee7b9479e5f5a31a8e830e5c4254df Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 7 Jun 2017 10:51:23 -0700 Subject: [PATCH] fix minor issues --- Habitica/AndroidManifest.xml | 2 +- .../habitrpg/android/habitica/api/ApiService.java | 2 +- .../android/habitica/data/TaskRepository.java | 2 ++ .../data/implementation/TaskRepositoryImpl.java | 12 +++++++++--- .../data/implementation/UserRepositoryImpl.java | 2 +- .../habitica/data/local/BaseLocalRepository.java | 2 ++ .../implementation/RealmBaseLocalRepository.java | 6 ++++++ .../android/habitica/helpers/TaskAlarmManager.java | 6 +++--- .../habitica/ui/activities/SetupActivity.java | 3 +++ .../ui/fragments/tasks/TaskRecyclerViewFragment.java | 6 +++++- 10 files changed, 33 insertions(+), 10 deletions(-) diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index c7fc19db6..e4d2cf004 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -2,7 +2,7 @@ diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.java b/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.java index 55407c47d..9bba677ee 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/api/ApiService.java @@ -309,7 +309,7 @@ public interface ApiService { // Notifications @POST("notifications/{notificationId}/read") - Observable> readNotification(@Path("notificationId") String notificationId); + Observable> readNotification(@Path("notificationId") String notificationId); @POST("user/open-mystery-item") Observable> openMysteryItem(); 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 b4c0b35a1..e0fb034aa 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 @@ -51,4 +51,6 @@ public interface TaskRepository extends BaseRepository { void updateTaskInBackground(Task task); void createTaskInBackground(Task task); + + Observable> getTaskCopies(String userId); } 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 86cea503a..8fa01ec39 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 @@ -62,7 +62,7 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl public Observable taskChecked(User user, Task task, boolean up) { long now = new Date().getTime(); if (lastTaskAction > now-500) { - return Observable.empty(); + return Observable.just(null); } lastTaskAction = now; return this.apiClient.postTaskDirection(task.getId(), (up ? TaskDirection.up : TaskDirection.down).toString()) @@ -127,7 +127,7 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl public Observable createTask(Task task) { long now = new Date().getTime(); if (lastTaskAction > now-500) { - return Observable.empty(); + return Observable.just(task); } lastTaskAction = now; return localRepository.getTaskCopy(task.getId()).first() @@ -139,7 +139,7 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl public Observable updateTask(Task task) { long now = new Date().getTime(); if (lastTaskAction > now-500) { - return Observable.empty(); + return Observable.just(task); } lastTaskAction = now; return localRepository.getTaskCopy(task.getId()).first() @@ -207,4 +207,10 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl public void createTaskInBackground(Task task) { createTask(task).subscribe(task1 -> {}, RxErrorHandler.handleEmptyError()); } + + @Override + public Observable> getTaskCopies(String userId) { + return getTasks(userId) + .map(localRepository::getUnmanagedCopy); + } } 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 e253740f8..f87554de3 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 @@ -179,7 +179,7 @@ public class UserRepositoryImpl extends BaseRepositoryImpl path = path + "," + customization.getPath(); } if (path.length() == 0) { - return Observable.empty(); + return Observable.just(null); } path = path.substring(1); return apiClient.unlockPath(path) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.java index ba567caf4..b3da5fc34 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/BaseLocalRepository.java @@ -7,6 +7,7 @@ import com.habitrpg.android.habitica.models.user.User; import java.util.List; +import io.realm.OrderedRealmCollection; import io.realm.Realm; import io.realm.RealmObject; @@ -17,6 +18,7 @@ public interface BaseLocalRepository { void executeTransaction(Realm.Transaction transaction); T getUnmanagedCopy(T object); + List getUnmanagedCopy(OrderedRealmCollection list); void save(List objects); void save(T object); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmBaseLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmBaseLocalRepository.java index e2f9be2f4..7c838da63 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmBaseLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmBaseLocalRepository.java @@ -4,6 +4,7 @@ import com.habitrpg.android.habitica.data.local.BaseLocalRepository; import java.util.List; +import io.realm.OrderedRealmCollection; import io.realm.Realm; import io.realm.RealmObject; @@ -30,6 +31,11 @@ abstract class RealmBaseLocalRepository implements BaseLocalRepository { return realm.copyFromRealm(object); } + @Override + public List getUnmanagedCopy(OrderedRealmCollection list) { + return realm.copyFromRealm(list); + } + @Override public void save(T object) { realm.executeTransactionAsync(realm1 -> realm1.insertOrUpdate(object)); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.java index 67b24e013..a6bd00d4f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.java @@ -142,14 +142,14 @@ public class TaskAlarmManager { //We currently only use this function to schedule the next reminder for dailies //We may be able to use repeating alarms instead of this in the future public void addAlarmForTaskId(String taskId) { - taskRepository.getTask(taskId) - .filter(task -> task.isManaged() && Task.TYPE_DAILY.equals(task.type)) + taskRepository.getTaskCopy(taskId) + .filter(task -> task.isValid() && task.isManaged() && Task.TYPE_DAILY.equals(task.type)) .first() .subscribe(this::setAlarmsForTask, RxErrorHandler.handleEmptyError()); } public void scheduleAllSavedAlarms() { - taskRepository.getTasks(userId) + taskRepository.getTaskCopies(userId) .first() .flatMap(Observable::from) .subscribe(this::setAlarmsForTask, crashlyticsProxy::logException); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java index 43b8cf803..2654f42f8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.java @@ -176,6 +176,9 @@ public class SetupActivity extends BaseActivity implements ViewPager.OnPageChang Integer.toString(Calendar.getInstance().getFirstDayOfWeek())); editor.apply(); if (isLastPage()) { + if (this.taskSetupFragment == null) { + return; + } List newTasks = this.taskSetupFragment.createSampleTasks(); this.completedSetup = true; this.taskRepository.createTasks(newTasks) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java index 6d0c0ec2a..910488930 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java @@ -323,7 +323,11 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli if (Task.TYPE_REWARD.equals(getClassName())) { compositeSubscription.add(taskRepository.getTasks(this.getClassName(), userID) - .subscribe(recyclerAdapter::updateData, RxErrorHandler.handleEmptyError())); + .subscribe(tasks -> { + if (recyclerAdapter != null) { + recyclerAdapter.updateData(tasks); + } + }, RxErrorHandler.handleEmptyError())); } }