From 38352ad4c257ae382dcb09868bb30f17d4769243 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 5 Jul 2017 22:25:29 +0200 Subject: [PATCH] fix various errors --- Habitica/AndroidManifest.xml | 2 +- Habitica/res/drawable/ic_arrow_back_white_36dp.xml | 4 ---- .../android/habitica/data/BaseRepository.java | 7 +++++++ .../data/implementation/BaseRepositoryImpl.java | 14 ++++++++++++++ .../data/implementation/SocialRepositoryImpl.java | 2 +- .../data/implementation/TaskRepositoryImpl.java | 6 ++++++ .../android/habitica/helpers/RxErrorHandler.java | 2 +- .../android/habitica/helpers/TaskAlarmManager.java | 9 ++------- .../interactors/CheckClassSelectionUseCase.java | 6 +++--- .../interactors/DisplayItemDropUseCase.java | 4 ++-- .../android/habitica/models/tasks/Task.java | 2 +- .../habitica/ui/views/tasks/TaskFilterDialog.java | 2 +- .../habitica/widget/HabitButtonWidgetService.java | 2 +- 13 files changed, 40 insertions(+), 22 deletions(-) delete mode 100644 Habitica/res/drawable/ic_arrow_back_white_36dp.xml diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index f9070e879..b2f2edd46 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -2,7 +2,7 @@ diff --git a/Habitica/res/drawable/ic_arrow_back_white_36dp.xml b/Habitica/res/drawable/ic_arrow_back_white_36dp.xml deleted file mode 100644 index 928f7c7df..000000000 --- a/Habitica/res/drawable/ic_arrow_back_white_36dp.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.java index 911a667b5..2b96acc8f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/BaseRepository.java @@ -1,6 +1,13 @@ package com.habitrpg.android.habitica.data; +import java.util.List; + +import io.realm.RealmObject; + public interface BaseRepository { void close(); + + T getUnmanagedCopy(T object); + List getUnmanagedCopy(List list); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java index 4dbec8745..6c9b2d207 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/BaseRepositoryImpl.java @@ -4,6 +4,10 @@ import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.BaseRepository; import com.habitrpg.android.habitica.data.local.BaseLocalRepository; +import java.util.List; + +import io.realm.RealmObject; + public abstract class BaseRepositoryImpl implements BaseRepository { protected final T localRepository; @@ -17,4 +21,14 @@ public abstract class BaseRepositoryImpl implemen public void close() { this.localRepository.close(); } + + @Override + public List getUnmanagedCopy(List list) { + return localRepository.getUnmanagedCopy(list); + } + + @Override + public T getUnmanagedCopy(T object) { + return localRepository.getUnmanagedCopy(object); + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.java index 1c579be28..af6a7972e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/SocialRepositoryImpl.java @@ -239,6 +239,6 @@ public class SocialRepositoryImpl extends BaseRepositoryImpl forceStartQuest(Group party) { - return apiClient.forceStartQuest(party.id, party); + return apiClient.forceStartQuest(party.id, localRepository.getUnmanagedCopy(party)); } } 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 904d469c6..cb5b001fa 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 @@ -6,6 +6,7 @@ import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.data.local.TaskLocalRepository; import com.habitrpg.android.habitica.helpers.RxErrorHandler; +import com.habitrpg.android.habitica.models.Tag; import com.habitrpg.android.habitica.models.responses.TaskDirection; import com.habitrpg.android.habitica.models.responses.TaskScoringResult; import com.habitrpg.android.habitica.models.tasks.RemindersItem; @@ -19,6 +20,7 @@ import java.util.Date; import java.util.List; import io.realm.Realm; +import io.realm.RealmList; import io.realm.RealmResults; import rx.Observable; @@ -132,6 +134,10 @@ public class TaskRepositoryImpl extends BaseRepositoryImpl return Observable.just(task); } lastTaskAction = now; + if (task.getTags() != null && task.getTags().size() > 0) { + RealmList tags = new RealmList<>(localRepository.getUnmanagedCopy(task.getTags()).toArray(new Tag[0])); + task.setTags(tags); + } return apiClient.createTask(task) .map(task1 -> { task1.dateCreated = new Date(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RxErrorHandler.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RxErrorHandler.java index 6bd386974..a98d31b97 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RxErrorHandler.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RxErrorHandler.java @@ -38,7 +38,7 @@ public class RxErrorHandler { Log.e("ObservableError", Log.getStackTraceString(throwable)); } catch (Exception ignored) {} } else { - if (!IOException.class.isAssignableFrom(throwable.getClass()) && !HttpException.class.isAssignableFrom(throwable.getClass())) { + if (!IOException.class.isAssignableFrom(throwable.getClass()) && !HttpException.class.isAssignableFrom(throwable.getClass()) && !retrofit2.HttpException.class.isAssignableFrom(throwable.getClass())) { instance.crashlyticsProxy.logException(throwable); } } 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 a6bd00d4f..610860956 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 @@ -33,9 +33,6 @@ import rx.schedulers.Schedulers; import static android.os.Build.VERSION.SDK_INT; -/** - * Created by keithholliday on 5/29/16. - */ public class TaskAlarmManager { public static final String TASK_ID_INTENT_KEY = "TASK_ID"; public static final String TASK_NAME_INTENT_KEY = "TASK_NAME"; @@ -127,7 +124,7 @@ public class TaskAlarmManager { //Ensure that we set to the next available time reminder = this.setTimeForDailyReminder(reminder, task); } - this.setAlarmForRemindersItem(reminder); + this.setAlarmForRemindersItem(task, reminder); } } @@ -170,9 +167,7 @@ public class TaskAlarmManager { return remindersItem; } - private void setAlarmForRemindersItem(RemindersItem remindersItem) { - Task reminderItemTask = remindersItem.getTask(); - + private void setAlarmForRemindersItem(Task reminderItemTask, RemindersItem remindersItem) { Date now = new Date(); if (remindersItem.getTime().before(now)) { return; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/CheckClassSelectionUseCase.java b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/CheckClassSelectionUseCase.java index a70cf9d9f..6b749c73a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/CheckClassSelectionUseCase.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/interactors/CheckClassSelectionUseCase.java @@ -24,7 +24,7 @@ public class CheckClassSelectionUseCase extends UseCase buildUseCaseObservable(RequestValues requestValues) { - return Observable.from(() -> { + return Observable.defer(() -> { User user = requestValues.user; @@ -34,14 +34,14 @@ public class CheckClassSelectionUseCase extends UseCase buildUseCaseObservable(RequestValues requestValues) { - return Observable.from(() -> { + return Observable.defer(() -> { TaskScoringResult data = requestValues.data; if (data != null) { @@ -39,7 +39,7 @@ public class DisplayItemDropUseCase extends UseCase getTags() { + public RealmList getTags() { return tags; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.java index 62f2b08ba..fab74e275 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/TaskFilterDialog.java @@ -133,7 +133,7 @@ public class TaskFilterDialog extends AlertDialog implements RadioGroup.OnChecke } public void setTags(List tags) { - this.tags = new ArrayList<>(tags); + this.tags = repository.getUnmanagedCopy(tags); createTagViews(); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetService.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetService.java index ed53253a4..8d50577e8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetService.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/HabitButtonWidgetService.java @@ -68,7 +68,7 @@ public class HabitButtonWidgetService extends Service { private void updateData(Task task) { RemoteViews remoteViews = new RemoteViews(this.getPackageName(), R.layout.widget_habit_button); - if (task != null) { + if (task != null && task.isManaged()) { CharSequence parsedText = MarkdownParser.parseMarkdown(task.text); SpannableStringBuilder builder = new SpannableStringBuilder(parsedText);