From 2eacc25cec67194e6f84eb6a1d6e5e7cbcf6a853 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Fri, 5 May 2017 17:14:55 +0200 Subject: [PATCH] fix guild display --- Habitica/build.gradle | 2 +- Habitica/res/layout/floating_menu_tasks.xml | 4 +- .../habitica/HabiticaBaseApplication.java | 4 +- .../habitica/NotificationPublisher.java | 4 +- .../habitica/data/SocialRepository.java | 1 + .../implementation/SocialRepositoryImpl.java | 17 +++-- .../implementation/UserRepositoryImpl.java | 4 +- .../data/local/SocialLocalRepository.java | 7 +++ .../RealmChallengeLocalRepository.java | 2 +- .../RealmContentLocalRepository.java | 1 - .../RealmSocialLocalRepository.java | 34 ++++++++++ .../RealmTaskLocalRepository.java | 2 +- .../RealmUserLocalRepository.java | 9 ++- .../helpers/PopupNotificationsManager.java | 2 +- .../habitica/helpers/QrCodeManager.java | 2 +- ...eErrorHandler.java => RxErrorHandler.java} | 2 +- .../habitica/helpers/TaskAlarmManager.java | 4 +- .../PushNotificationManager.java | 6 +- .../activities/ChallengeDetailActivity.java | 28 +++++---- .../activities/CreateChallengeActivity.java | 8 +-- .../ui/activities/FullProfileActivity.java | 6 +- .../habitica/ui/activities/IntroActivity.java | 4 +- .../habitica/ui/activities/MainActivity.java | 12 ++-- .../ui/activities/PartyInviteActivity.java | 6 +- .../ui/activities/TaskFormActivity.java | 8 +-- .../SkillTasksRecyclerViewAdapter.java | 4 +- .../social/ChallengesListViewAdapter.java | 12 ---- .../PublicGuildsRecyclerViewAdapter.java | 62 ++++++------------ .../tasks/RewardsRecyclerViewAdapter.java | 4 +- .../habitica/ui/fragments/BaseFragment.java | 4 +- .../ui/fragments/BaseMainFragment.java | 4 +- .../ui/fragments/faq/FAQOverviewFragment.java | 6 +- .../AvatarCustomizationFragment.java | 10 +-- .../customization/AvatarOverviewFragment.java | 4 +- .../equipment/EquipmentDetailFragment.java | 6 +- .../equipment/EquipmentOverviewFragment.java | 10 +-- .../inventory/items/ItemRecyclerFragment.java | 12 ++-- .../stable/MountDetailRecyclerFragment.java | 9 +-- .../stable/PetDetailRecyclerFragment.java | 8 +-- .../stable/StableRecyclerFragment.java | 4 +- .../preferences/AccountDetailsFragment.java | 4 +- .../preferences/PreferencesFragment.java | 6 +- .../ui/fragments/skills/SkillsFragment.java | 6 +- .../ui/fragments/social/ChatListFragment.java | 4 +- .../social/GroupInformationFragment.java | 7 ++- .../ui/fragments/social/GuildFragment.java | 24 +++---- .../social/GuildsOverviewFragment.java | 11 ++-- .../ui/fragments/social/InboxFragment.java | 4 +- .../social/InboxMessageListFragment.java | 6 +- .../social/PublicGuildsFragment.java | 17 +++-- .../ui/fragments/social/TavernFragment.java | 4 +- .../ChallengeDetailDialogHolder.java | 63 +++++++++++-------- .../challenges/ChallengeListFragment.java | 5 +- .../ChallengesOverviewFragment.java | 5 +- .../fragments/social/party/PartyFragment.java | 35 +++-------- .../tasks/TaskRecyclerViewFragment.java | 4 +- .../ui/fragments/tasks/TasksFragment.java | 5 +- .../ui/views/tasks/TaskFilterDialog.java | 8 +-- .../habitica/utils/GroupSerialization.java | 4 +- .../widget/AvatarStatsWidgetProvider.java | 4 +- .../habitica/widget/BaseWidgetProvider.java | 2 - .../widget/HabitButtonWidgetService.java | 4 +- 62 files changed, 284 insertions(+), 286 deletions(-) rename Habitica/src/main/java/com/habitrpg/android/habitica/helpers/{ReactiveErrorHandler.java => RxErrorHandler.java} (94%) diff --git a/Habitica/build.gradle b/Habitica/build.gradle index a6f920627..ccb7bba84 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -79,7 +79,7 @@ dependencies { compile 'com.github.kenglxn.QRGen:android:2.2.0' // Emojis - compile 'com.github.viirus:emoji-lib:0.0.3.4' + compile 'com.github.viirus:emoji-lib:0.0.4' // Markdown compile 'com.commonsware.cwac:anddown:0.3.0' diff --git a/Habitica/res/layout/floating_menu_tasks.xml b/Habitica/res/layout/floating_menu_tasks.xml index 068766a8a..0e9b5d0c3 100644 --- a/Habitica/res/layout/floating_menu_tasks.xml +++ b/Habitica/res/layout/floating_menu_tasks.xml @@ -18,7 +18,9 @@ fab:menu_animationDelayPerItem="50" fab:menu_icon="@drawable/fab_add" fab:menu_buttonSpacing="2dp" - fab:menu_labels_margin="4dp"> + fab:menu_labels_margin="4dp" + fab:menu_fab_show_animation="@anim/fab_slide_in" + fab:menu_fab_hide_animation="@anim/fab_slide_out"> { }, ReactiveErrorHandler.handleEmptyError()); + .subscribe(contentResult -> { }, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/NotificationPublisher.java b/Habitica/src/main/java/com/habitrpg/android/habitica/NotificationPublisher.java index 47d4d4df4..e4627d202 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/NotificationPublisher.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/NotificationPublisher.java @@ -11,7 +11,7 @@ import android.os.Build; import android.support.v4.content.ContextCompat; import com.habitrpg.android.habitica.data.TaskRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.models.tasks.Task; import com.habitrpg.android.habitica.modules.AppModule; @@ -58,7 +58,7 @@ public class NotificationPublisher extends BroadcastReceiver { int id = intent.getIntExtra(NOTIFICATION_ID, 0); notificationManager.notify(id, notification); } - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); } else { NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.java index 68bd8ee81..ccceba103 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/SocialRepository.java @@ -39,6 +39,7 @@ public interface SocialRepository extends BaseRepository { Observable> retrieveGroups(String type); Observable> getGroups(String type); + Observable> getPublicGuilds(); Observable postPrivateMessage(HashMap messageObject); Observable postPrivateMessage(String recipientId, String message); 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 95b3120dc..c2ea8c07a 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 @@ -3,7 +3,7 @@ package com.habitrpg.android.habitica.data.implementation; import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.SocialRepository; import com.habitrpg.android.habitica.data.local.SocialLocalRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.responses.PostChatMessageResult; import com.habitrpg.android.habitica.models.social.Challenge; import com.habitrpg.android.habitica.models.social.ChatMessage; @@ -45,7 +45,7 @@ public class SocialRepositoryImpl extends BaseRepositoryImpl {}, ReactiveErrorHandler.handleEmptyError()); + apiClient.seenMessages(seenGroupId).subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); } @Override @@ -77,12 +77,13 @@ public class SocialRepositoryImpl extends BaseRepositoryImpl retrieveGroup(String id) { - return apiClient.getGroup(id); + return apiClient.getGroup(id) + .doOnNext(localRepository::saveGroup); } @Override public Observable getGroup(String id) { - return retrieveGroup(id); + return localRepository.getGroup(id); } @Override @@ -102,7 +103,8 @@ public class SocialRepositoryImpl extends BaseRepositoryImpl> retrieveGroups(String type) { - return apiClient.listGroups(type); + return apiClient.listGroups(type) + .doOnNext(localRepository::saveGroups); } @Override @@ -110,6 +112,11 @@ public class SocialRepositoryImpl extends BaseRepositoryImpl> getPublicGuilds() { + return localRepository.getPublicGuilds(); + } + @Override public Observable postPrivateMessage(HashMap messageObject) { return apiClient.postPrivateMessage(messageObject); 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 c00e732b0..c846c42b8 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 @@ -4,7 +4,7 @@ import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.data.local.UserLocalRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.Skill; import com.habitrpg.android.habitica.models.TutorialStep; import com.habitrpg.android.habitica.models.inventory.Customization; @@ -97,7 +97,7 @@ public class UserRepositoryImpl extends BaseRepositoryImpl return updateData; }) .flatMap(updateData -> updateUser(user, updateData)) - .subscribe(tutorialSteps -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(tutorialSteps -> {}, RxErrorHandler.handleEmptyError()); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/SocialLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/SocialLocalRepository.java index 6c2316f62..e61e7f435 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/SocialLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/SocialLocalRepository.java @@ -11,4 +11,11 @@ import rx.Observable; public interface SocialLocalRepository extends BaseLocalRepository { Observable> getGroups(String type); + Observable> getPublicGuilds(); + + Observable getGroup(String id); + + void saveGroup(Group group); + + void saveGroups(List groups); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.java index 5858e9d7e..712160189 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmChallengeLocalRepository.java @@ -55,7 +55,7 @@ public class RealmChallengeLocalRepository extends RealmBaseLocalRepository impl @Override public void saveChallenges(User user, List challenges) { - realm.executeTransactionAsync(realm1 -> realm1.copyToRealmOrUpdate(challenges)); + realm.executeTransactionAsync(realm1 -> realm1.insertOrUpdate(challenges)); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmContentLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmContentLocalRepository.java index b79dae40e..ba9aea743 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmContentLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmContentLocalRepository.java @@ -24,7 +24,6 @@ class RealmContentLocalRepository extends RealmBaseLocalRepository implements Co realm1.insertOrUpdate(result.food); realm1.insertOrUpdate(result.hatchingPotions); - realm1.insertOrUpdate(result.pets); realm1.insertOrUpdate(result.mounts); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.java index 8c3193818..4a15bd3b3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmSocialLocalRepository.java @@ -2,9 +2,13 @@ package com.habitrpg.android.habitica.data.local.implementation; import com.habitrpg.android.habitica.data.local.SocialLocalRepository; import com.habitrpg.android.habitica.models.social.Group; +import com.habitrpg.android.habitica.models.tasks.Task; + +import java.util.List; import io.realm.Realm; import io.realm.RealmResults; +import io.realm.Sort; import rx.Observable; @@ -22,4 +26,34 @@ public class RealmSocialLocalRepository extends RealmBaseLocalRepository impleme .asObservable() .filter(RealmResults::isLoaded); } + + @Override + public Observable> getPublicGuilds() { + return realm.where(Group.class) + .equalTo("type", "guild") + .equalTo("privacy", "public") + .findAllSorted("memberCount", Sort.DESCENDING) + .asObservable() + .filter(RealmResults::isLoaded); + } + + @Override + public Observable getGroup(String id) { + return realm.where(Group.class) + .equalTo("id", id) + .findAllAsync() + .asObservable() + .filter(group -> group.isLoaded() && group.isValid() && !group.isEmpty()) + .map(groups -> groups.first()); + } + + @Override + public void saveGroup(Group group) { + realm.executeTransactionAsync(realm1 -> realm1.insertOrUpdate(group)); + } + + @Override + public void saveGroups(List groups) { + realm.executeTransactionAsync(realm1 -> realm1.insertOrUpdate(groups)); + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.java index df6dcae2e..0b1b7de37 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmTaskLocalRepository.java @@ -118,6 +118,6 @@ public class RealmTaskLocalRepository extends RealmBaseLocalRepository implement @Override public void saveReminder(RemindersItem remindersItem) { - realm.executeTransaction(realm1 -> realm1.copyToRealm(remindersItem)); + realm.executeTransaction(realm1 -> realm1.insertOrUpdate(remindersItem)); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.java b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.java index f850a9599..aae426951 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/local/implementation/RealmUserLocalRepository.java @@ -22,9 +22,12 @@ public class RealmUserLocalRepository extends RealmBaseLocalRepository implement @Override public Observable getUser(String userID) { - return realm.where(User.class).equalTo("id", userID).findFirstAsync().asObservable() - .filter(realmObject -> realmObject.isLoaded() && realmObject.isValid()) - .cast(User.class); + return realm.where(User.class) + .equalTo("id", userID) + .findAllAsync() + .asObservable() + .filter(realmObject -> realmObject.isLoaded() && realmObject.isValid() && !realm.isEmpty()) + .map(users -> users.first()); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java index c43cc806b..d3a71b248 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PopupNotificationsManager.java @@ -93,7 +93,7 @@ public class PopupNotificationsManager { if (apiClient != null) { // @TODO: This should be handled somewhere else? MAybe we notifiy via event apiClient.readNotificaiton(notification.getId()) - .subscribe(next -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(next -> {}, RxErrorHandler.handleEmptyError()); } dialog.hide(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/QrCodeManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/QrCodeManager.java index d69a6d946..ac3ae64b9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/QrCodeManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/QrCodeManager.java @@ -71,7 +71,7 @@ public class QrCodeManager { avatarView.configureView(false, false, false); this.qrCodeWrapper = (FrameLayout) qrLayout.findViewById(R.id.qrCodeWrapper); - userRepository.getUser(userId).subscribe(avatarView::setUser, ReactiveErrorHandler.handleEmptyError()); + userRepository.getUser(userId).subscribe(avatarView::setUser, RxErrorHandler.handleEmptyError()); this.displayQrCode(); this.setDownloadQr(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/ReactiveErrorHandler.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RxErrorHandler.java similarity index 94% rename from Habitica/src/main/java/com/habitrpg/android/habitica/helpers/ReactiveErrorHandler.java rename to Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RxErrorHandler.java index 2d06e1d50..0486716a3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/ReactiveErrorHandler.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/RxErrorHandler.java @@ -5,7 +5,7 @@ import android.util.Log; import rx.android.BuildConfig; import rx.functions.Action1; -public class ReactiveErrorHandler { +public class RxErrorHandler { public static Action1 handleEmptyError() { //Can't be turned into a lambda, because it then doesn't work for some reason. 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 6ccd6ac28..d75335e8c 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 @@ -12,8 +12,6 @@ import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.NotificationPublisher; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.events.ReminderDeleteEvent; -import com.habitrpg.android.habitica.events.TaskDeleteEvent; -import com.habitrpg.android.habitica.events.TaskSaveEvent; import com.habitrpg.android.habitica.models.tasks.RemindersItem; import com.habitrpg.android.habitica.models.tasks.Task; import com.habitrpg.android.habitica.modules.AppModule; @@ -146,7 +144,7 @@ public class TaskAlarmManager { public void addAlarmForTaskId(String taskId) { taskRepository.getTask(taskId) .filter(task -> Task.TYPE_DAILY.equals(task.type)) - .subscribe(this::setAlarmsForTask, ReactiveErrorHandler.handleEmptyError()); + .subscribe(this::setAlarmsForTask, RxErrorHandler.handleEmptyError()); } public void scheduleAllSavedAlarms() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java index 1583b21ab..704b100e3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/notifications/PushNotificationManager.java @@ -6,7 +6,7 @@ import android.content.SharedPreferences; import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.messaging.RemoteMessage; import com.habitrpg.android.habitica.data.ApiClient; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.PushDevice; import com.habitrpg.android.habitica.models.user.User; @@ -75,13 +75,13 @@ public class PushNotificationManager { pushDeviceData.put("type", "android"); apiClient.addPushDevice(pushDeviceData) - .subscribe(aVoid -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); } public void removePushDeviceUsingStoredToken() { apiClient.deletePushDevice(this.refreshedToken) - .subscribe(aVoid -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); } private Boolean userHasPushDevice() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java index 865e39c6a..09b9aa8ec 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java @@ -27,7 +27,7 @@ import com.habitrpg.android.habitica.events.TaskUpdatedEvent; import com.habitrpg.android.habitica.events.commands.BuyRewardCommand; import com.habitrpg.android.habitica.events.commands.ChecklistCheckedCommand; import com.habitrpg.android.habitica.events.commands.TaskCheckedCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.interactors.BuyRewardUseCase; import com.habitrpg.android.habitica.interactors.ChecklistCheckUseCase; import com.habitrpg.android.habitica.interactors.DailyCheckUseCase; @@ -148,10 +148,14 @@ public class ChallengeDetailActivity extends BaseActivity { ObservableList fullList = new ObservableArrayList<>(); - userRepository.getUser(userId).first().subscribe(user -> ChallengeDetailActivity.this.user = user, ReactiveErrorHandler.handleEmptyError()); + userRepository.getUser(userId).first().subscribe(user -> { + ChallengeDetailActivity.this.user = user; + createTaskRecyclerFragment(fullList); + }, RxErrorHandler.handleEmptyError()); if (challengeId != null) { challengeRepository.getChallengeTasks(challengeId) + .first() .subscribe(taskList -> { ArrayList resultList = new ArrayList<>(); @@ -228,6 +232,16 @@ public class ChallengeDetailActivity extends BaseActivity { }, Throwable::printStackTrace); } + if (challengeId != null) { + challengeRepository.getChallenge(challengeId).subscribe(challenge -> { + ChallengeDetailActivity.this.challenge = challenge; + ChallengeViewHolder challengeViewHolder = new ChallengeViewHolder(findViewById(R.id.challenge_header)); + challengeViewHolder.bind(challenge); + }); + } + } + + private void createTaskRecyclerFragment(ObservableList fullList) { ChallengeTasksRecyclerViewFragment fragment = ChallengeTasksRecyclerViewFragment.newInstance(user, fullList); if (getSupportFragmentManager().getFragments() == null) { @@ -237,14 +251,6 @@ public class ChallengeDetailActivity extends BaseActivity { transaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out, android.R.anim.fade_in, android.R.anim.fade_out); transaction.replace(R.id.fragment_container, fragment).addToBackStack(null).commitAllowingStateLoss(); } - - if (challengeId != null) { - challengeRepository.getChallenge(challengeId).subscribe(challenge -> { - ChallengeDetailActivity.this.challenge = challenge; - ChallengeViewHolder challengeViewHolder = new ChallengeViewHolder(findViewById(R.id.challenge_header)); - challengeViewHolder.bind(challenge); - }); - } } @Override @@ -426,6 +432,6 @@ public class ChallengeDetailActivity extends BaseActivity { } displayItemDropUseCase.observable(new DisplayItemDropUseCase.RequestValues(data, this, floatingMenuWrapper)) - .subscribe(aVoid -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java index a36743f91..600a7d23d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java @@ -30,7 +30,6 @@ import android.widget.Spinner; import android.widget.TextView; import com.github.underscore.$; -import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.ChallengeRepository; @@ -38,7 +37,7 @@ import com.habitrpg.android.habitica.data.SocialRepository; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.events.TaskSaveEvent; import com.habitrpg.android.habitica.events.TaskTappedEvent; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.social.Challenge; import com.habitrpg.android.habitica.models.social.Group; import com.habitrpg.android.habitica.models.tasks.Task; @@ -52,7 +51,6 @@ import org.greenrobot.eventbus.Subscribe; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Objects; import java.util.UUID; import javax.inject.Inject; @@ -136,7 +134,7 @@ public class CreateChallengeActivity extends BaseActivity { @Override public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); - userRepository.getUser(userId).subscribe(user1 -> this.user = user1, ReactiveErrorHandler.handleEmptyError()); + userRepository.getUser(userId).subscribe(user1 -> this.user = user1, RxErrorHandler.handleEmptyError()); } @Override @@ -358,7 +356,7 @@ public class CreateChallengeActivity extends BaseActivity { locationAdapter.add(tavern); groups.forEach(group -> locationAdapter.add(group)); - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); challengeLocationSpinner.setAdapter(locationAdapter); challengeLocationSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java index c301b53ee..816729eb0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.java @@ -30,7 +30,7 @@ import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.InventoryRepository; import com.habitrpg.android.habitica.data.SocialRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.helpers.UserStatComputer; import com.habitrpg.android.habitica.models.Achievement; import com.habitrpg.android.habitica.models.AchievementGroup; @@ -344,10 +344,10 @@ public class FullProfileActivity extends BaseActivity { addAttributeRow(getString(R.string.profile_level), byLevelStat, byLevelStat, byLevelStat, byLevelStat, true, false); - loadItemDataByOutfit(user.getItems().getGear().getEquipped()).subscribe(gear -> this.gotGear(gear, user), ReactiveErrorHandler.handleEmptyError()); + loadItemDataByOutfit(user.getItems().getGear().getEquipped()).subscribe(gear -> this.gotGear(gear, user), RxErrorHandler.handleEmptyError()); if (user.getPreferences().getCostume()) { - loadItemDataByOutfit(user.getItems().getGear().getCostume()).subscribe(this::gotCostume, ReactiveErrorHandler.handleEmptyError()); + loadItemDataByOutfit(user.getItems().getGear().getCostume()).subscribe(this::gotCostume, RxErrorHandler.handleEmptyError()); } else { costumeCard.setVisibility(View.GONE); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java index dd1fb65f6..d3238dff2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/IntroActivity.java @@ -18,7 +18,7 @@ import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.ApiClient; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.ui.fragments.setup.IntroFragment; import com.viewpagerindicator.IconPageIndicator; import com.viewpagerindicator.IconPagerAdapter; @@ -58,7 +58,7 @@ public class IntroActivity extends BaseActivity implements View.OnClickListener, this.finishButton.setOnClickListener(this); apiClient.getContent() - .subscribe(contentResult -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(contentResult -> {}, RxErrorHandler.handleEmptyError()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Window window = getWindow(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 3121357e5..cb0abbb9d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -62,7 +62,7 @@ import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand; import com.habitrpg.android.habitica.events.commands.TaskCheckedCommand; import com.habitrpg.android.habitica.helpers.AmplitudeManager; import com.habitrpg.android.habitica.helpers.LanguageHelper; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager; @@ -264,7 +264,7 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria .subscribe(newUser -> { MainActivity.this.user = newUser; MainActivity.this.setUserData(true); - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); EventBus.getDefault().register(this); } @@ -293,7 +293,7 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria this.checkMaintenance(); } - inventoryRepository.retrieveContent().subscribe(contentResult -> {}, ReactiveErrorHandler.handleEmptyError()); + inventoryRepository.retrieveContent().subscribe(contentResult -> {}, RxErrorHandler.handleEmptyError()); if (this.sharedPreferences.getLong("lastReminderSchedule", 0) < new Date().getTime() - 86400000) { try { @@ -750,11 +750,11 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria if (user != null) { notifyUserUseCase.observable(new NotifyUserUseCase.RequestValues(this, floatingMenuWrapper, user, data.experienceDelta, data.healthDelta, data.goldDelta, data.manaDelta, data.hasLeveledUp)) - .subscribe(aVoid -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); } displayItemDropUseCase.observable(new DisplayItemDropUseCase.RequestValues(data, this, floatingMenuWrapper)) - .subscribe(aVoid -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); } @@ -808,7 +808,7 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria protected void retrieveUser() { if (this.userRepository != null) { this.userRepository.retrieveUser(true) - .subscribe(user1 -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(user1 -> {}, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java index 1965e8a3c..9cefe0c91 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/PartyInviteActivity.java @@ -16,7 +16,7 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.SocialRepository; import com.habitrpg.android.habitica.data.UserRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.modules.AppModule; import com.habitrpg.android.habitica.prefs.scanner.IntentIntegrator; @@ -164,7 +164,7 @@ public class PartyInviteActivity extends BaseActivity { } userIdToInvite = uri.getPathSegments().get(2); - userRepository.getUser(userId).subscribe(this::handleUserRecieved, ReactiveErrorHandler.handleEmptyError()); + userRepository.getUser(userId).subscribe(this::handleUserRecieved, RxErrorHandler.handleEmptyError()); } } @@ -184,6 +184,6 @@ public class PartyInviteActivity extends BaseActivity { inviteData.put("uuids", invites); this.socialRepository.inviteToGroup(user.getParty().getId(), inviteData) - .subscribe(aVoid -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); } } 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 c0b4f2b72..3b408852b 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 @@ -40,7 +40,7 @@ import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.TagRepository; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.helpers.FirstDayOfTheWeekHelper; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.helpers.RemindersManager; import com.habitrpg.android.habitica.helpers.TaskFilterHelper; import com.habitrpg.android.habitica.models.Tag; @@ -282,7 +282,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem finish(); dismissKeyboard(); - taskRepository.deleteTask(taskId).subscribe(aVoid -> {}, ReactiveErrorHandler.handleEmptyError()); + taskRepository.deleteTask(taskId).subscribe(aVoid -> {}, RxErrorHandler.handleEmptyError()); }).setNegativeButton(getString(R.string.no), (dialog, which) -> dialog.dismiss()).show()); ArrayAdapter difficultyAdapter = ArrayAdapter.createFromResource(this, @@ -364,7 +364,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem } setTitle(task); - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); btnDelete.setEnabled(true); } else { @@ -979,7 +979,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem observable = taskRepository.updateTask(task); } - observable.subscribe(task1 -> {}, ReactiveErrorHandler.handleEmptyError()); + observable.subscribe(task1 -> {}, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.java index 7a4d44bf6..053caa5c0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.java @@ -12,7 +12,7 @@ import android.widget.TextView; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.databinding.SkillTaskItemCardBinding; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.tasks.Task; import com.habitrpg.android.habitica.ui.activities.TaskClickActivity; @@ -100,7 +100,7 @@ public class SkillTasksRecyclerViewAdapter extends RecyclerView.Adapter implements Filterable { +public class PublicGuildsRecyclerViewAdapter extends RealmRecyclerViewAdapter implements Filterable { public ApiClient apiClient; - private List publicGuildList; - private List fullPublicGuildList; private List memberGuildIDs; - public void setPublicGuildList(List publicGuildList) { - this.publicGuildList = publicGuildList; - this.fullPublicGuildList = new ArrayList<>(publicGuildList); - this.notifyDataSetChanged(); + public PublicGuildsRecyclerViewAdapter(@Nullable OrderedRealmCollection data, boolean autoUpdate) { + super(data, autoUpdate); } public void setMemberGuildIDs(List memberGuildIDs) { @@ -49,7 +50,7 @@ public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter { Group guild = (Group) v.getTag(); GuildFragment guildFragment = new GuildFragment(); - guildFragment.setGuild(guild); + guildFragment.setGuildId(guild.id); guildFragment.isMember = isInGroup(guild); DisplayFragmentEvent event = new DisplayFragmentEvent(); event.fragment = guildFragment; @@ -60,19 +61,17 @@ public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter { memberGuildIDs.remove(guild.id); - int indexOfGroup = publicGuildList.indexOf(guild); + int indexOfGroup = getData().indexOf(guild); notifyItemChanged(indexOfGroup); }, throwable -> { }); } else { PublicGuildsRecyclerViewAdapter.this.apiClient.joinGroup(guild.id) - .subscribe(group -> { memberGuildIDs.add(group.id); - int indexOfGroup = publicGuildList.indexOf(group); + int indexOfGroup = getData().indexOf(group); notifyItemChanged(indexOfGroup); }, throwable -> { }); @@ -84,18 +83,13 @@ public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter filteredGuilds; - - if (constraint.length() == 0) { - filteredGuilds = fullPublicGuildList; - } else { - filteredGuilds = getFilteredResults(constraint.toString().toLowerCase(Locale.US)); - } - FilterResults results = new FilterResults(); - results.values = filteredGuilds; - return results; + results.values = constraint; + return new FilterResults(); } @Override protected void publishResults(CharSequence constraint, FilterResults results) { - publicGuildList = (List) results.values; - PublicGuildsRecyclerViewAdapter.this.notifyDataSetChanged(); + if (getData() != null && constraint.length() > 0) { + updateData(getData().where() + .contains("name", String.valueOf(constraint), Case.INSENSITIVE) + .findAll()); + } } }; } - protected List getFilteredResults(String query) { - List filteredGuilds = new ArrayList<>(); - - for (Group guild : fullPublicGuildList) { - if (guild.name.toLowerCase().contains(query)) { - filteredGuilds.add(guild); - } - } - - return filteredGuilds; - } static class GuildViewHolder extends RecyclerView.ViewHolder { @@ -152,7 +130,7 @@ public class PublicGuildsRecyclerViewAdapter extends RecyclerView.Adapter { notifyDataSetChanged(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.java index b29ae253f..5a454880d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.java @@ -14,7 +14,7 @@ import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.TutorialRepository; import com.habitrpg.android.habitica.events.DisplayTutorialEvent; import com.habitrpg.android.habitica.helpers.AmplitudeManager; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.squareup.leakcanary.RefWatcher; import org.greenrobot.eventbus.EventBus; @@ -61,7 +61,7 @@ public abstract class BaseFragment extends DialogFragment { event.canBeDeferred = tutorialCanBeDeferred; EventBus.getDefault().post(event); } - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); } String displayedClassName = this.getDisplayedClassName(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java index 486cb63e8..42cc5ec28 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.java @@ -10,7 +10,7 @@ import android.view.ViewGroup; import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.UserRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.ui.activities.MainActivity; @@ -86,7 +86,7 @@ public abstract class BaseMainFragment extends BaseFragment { if (savedInstanceState != null && savedInstanceState.containsKey("userId")) { String userId = savedInstanceState.getString("userId"); if (userId != null) { - userRepository.getUser(userId).subscribe(habitRPGUser -> user = habitRPGUser, ReactiveErrorHandler.handleEmptyError()); + userRepository.getUser(userId).subscribe(habitRPGUser -> user = habitRPGUser, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/faq/FAQOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/faq/FAQOverviewFragment.java index 31506dc24..d5b3ca559 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/faq/FAQOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/faq/FAQOverviewFragment.java @@ -10,7 +10,7 @@ import android.view.ViewGroup; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.FAQRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.ui.adapter.FAQOverviewRecyclerAdapter; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; import com.habitrpg.android.habitica.ui.menu.DividerItemDecoration; @@ -37,7 +37,7 @@ public class FAQOverviewFragment extends BaseMainFragment { unbinder = ButterKnife.bind(this, view); adapter = new FAQOverviewRecyclerAdapter(); - adapter.getResetWalkthroughEvents().subscribe(aVoid -> this.userRepository.resetTutorial(user), ReactiveErrorHandler.handleEmptyError()); + adapter.getResetWalkthroughEvents().subscribe(aVoid -> this.userRepository.resetTutorial(user), RxErrorHandler.handleEmptyError()); adapter.activity = activity; recyclerView.setLayoutManager(new LinearLayoutManager(activity)); recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST)); @@ -62,7 +62,7 @@ public class FAQOverviewFragment extends BaseMainFragment { if (user == null || adapter == null) { return; } - faqRepository.getArticles().subscribe(adapter::setArticles, ReactiveErrorHandler.handleEmptyError()); + faqRepository.getArticles().subscribe(adapter::setArticles, RxErrorHandler.handleEmptyError()); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.java index bd5e66760..894aa9c7b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.java @@ -10,7 +10,7 @@ import android.view.ViewGroup; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.CustomizationRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.inventory.Customization; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.models.user.Preferences; @@ -58,13 +58,13 @@ public class AvatarCustomizationFragment extends BaseMainFragment { } return userRepository.updateUser(user, updatePath, customization.getIdentifier()); }) - .subscribe(user1 -> {}, ReactiveErrorHandler.handleEmptyError())); + .subscribe(user1 -> {}, RxErrorHandler.handleEmptyError())); compositeSubscription.add(adapter.getUnlockCustomizationEvents() .flatMap(customization -> userRepository.unlockPath(user, customization)) - .subscribe(unlockResponse -> {}, ReactiveErrorHandler.handleEmptyError())); + .subscribe(unlockResponse -> {}, RxErrorHandler.handleEmptyError())); compositeSubscription.add(adapter.getUnlockSetEvents() .flatMap(set -> userRepository.unlockPath(user, set)) - .subscribe(unlockResponse -> {}, ReactiveErrorHandler.handleEmptyError())); + .subscribe(unlockResponse -> {}, RxErrorHandler.handleEmptyError())); layoutManager = new GridLayoutManager(activity, 2); layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @@ -109,7 +109,7 @@ public class AvatarCustomizationFragment extends BaseMainFragment { if (user == null || adapter == null) { return; } - customizationRepository.getCustomizations(type, category).subscribe(adapter::setCustomizationList, ReactiveErrorHandler.handleEmptyError()); + customizationRepository.getCustomizations(type, category).subscribe(adapter::setCustomizationList, RxErrorHandler.handleEmptyError()); } private void setGridSpanCount(int width) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java index fb2ef09cd..c32340aa5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java @@ -13,7 +13,7 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.databinding.FragmentAvatarOverviewBinding; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; @@ -66,7 +66,7 @@ public class AvatarOverviewFragment extends BaseMainFragment implements AdapterV if (apiClient != null) { apiClient.getContent() - .subscribe(contentResult -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(contentResult -> {}, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.java index eb48ce57f..7aa5309e3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentDetailFragment.java @@ -10,7 +10,7 @@ import android.view.ViewGroup; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.InventoryRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.ui.adapter.inventory.EquipmentRecyclerViewAdapter; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; import com.habitrpg.android.habitica.ui.menu.DividerItemDecoration; @@ -50,14 +50,14 @@ public class EquipmentDetailFragment extends BaseMainFragment { this.adapter.type = this.type; this.adapter.getEquipEvents() .flatMap(key -> inventoryRepository.equipGear(user, key, isCostume)) - .subscribe(items -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(items -> {}, RxErrorHandler.handleEmptyError()); this.recyclerView.setAdapter(this.adapter); this.recyclerView.setLayoutManager(new LinearLayoutManager(activity)); this.recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST)); - inventoryRepository.getOwnedEquipment(type).first().subscribe(this.adapter::updateData, ReactiveErrorHandler.handleEmptyError()); + inventoryRepository.getOwnedEquipment(type).first().subscribe(this.adapter::updateData, RxErrorHandler.handleEmptyError()); return v; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java index 2eaebdb12..a80cbc297 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java @@ -11,15 +11,11 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.InventoryRepository; import com.habitrpg.android.habitica.databinding.FragmentEquipmentOverviewBinding; -import com.habitrpg.android.habitica.events.commands.UpdateUserCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.inventory.Equipment; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; -import org.greenrobot.eventbus.EventBus; - import java.util.HashMap; -import java.util.Map; import javax.inject.Inject; @@ -117,7 +113,7 @@ public class EquipmentOverviewFragment extends BaseMainFragment { costumeShieldView.setOnClickListener(v1 -> displayEquipmentDetailList("shield", user.getItems().getGear().getCostume().getShield(), true)); this.costumeSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> { - userRepository.updateUser(user, "preferences.costume", isChecked).subscribe(user1 -> {}, ReactiveErrorHandler.handleEmptyError()); + userRepository.updateUser(user, "preferences.costume", isChecked).subscribe(user1 -> {}, RxErrorHandler.handleEmptyError()); }); if (this.nameMapping == null) { @@ -129,7 +125,7 @@ public class EquipmentOverviewFragment extends BaseMainFragment { } this.viewBinding.setEquipmentNames(this.nameMapping); - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); } else { this.viewBinding.setEquipmentNames(this.nameMapping); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.java index 7ec6bda2b..9a43a420d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.java @@ -13,10 +13,9 @@ import android.widget.TextView; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.InventoryRepository; -import com.habitrpg.android.habitica.events.ContentReloadedEvent; import com.habitrpg.android.habitica.events.OpenedMysteryItemEvent; import com.habitrpg.android.habitica.events.commands.OpenMenuItemCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.inventory.Item; import com.habitrpg.android.habitica.models.inventory.Pet; import com.habitrpg.android.habitica.models.inventory.SpecialItem; @@ -32,15 +31,12 @@ import com.habitrpg.android.habitica.ui.menu.MainDrawerBuilder; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; -import java.util.HashMap; - import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import io.realm.OrderedRealmCollection; -import io.realm.RealmList; import static com.habitrpg.android.habitica.ui.helpers.UiUtils.showSnackbar; @@ -113,7 +109,7 @@ public class ItemRecyclerFragment extends BaseFragment { compositeSubscription.add(adapter.getSellItemEvents() .flatMap(item -> inventoryRepository.sellItem(user, item)) - .subscribe(item -> {}, ReactiveErrorHandler.handleEmptyError())); + .subscribe(item -> {}, RxErrorHandler.handleEmptyError())); compositeSubscription.add(adapter.getQuestInvitationEvents() .flatMap(quest -> inventoryRepository.inviteToQuest(quest)) @@ -199,9 +195,9 @@ public class ItemRecyclerFragment extends BaseFragment { if (items.size() > 0) { adapter.updateData((OrderedRealmCollection) items); } - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); - compositeSubscription.add(inventoryRepository.getOwnedPets().subscribe(adapter::setOwnedPets, ReactiveErrorHandler.handleEmptyError())); + compositeSubscription.add(inventoryRepository.getOwnedPets().subscribe(adapter::setOwnedPets, RxErrorHandler.handleEmptyError())); } @OnClick(R.id.openMarketButton) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.java index d347425a0..0e4af8bad 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.java @@ -11,14 +11,11 @@ import android.view.ViewGroup; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.InventoryRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; -import com.habitrpg.android.habitica.models.inventory.Mount; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.ui.adapter.inventory.MountDetailRecyclerAdapter; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; import com.habitrpg.android.habitica.ui.helpers.MarginDecoration; -import java.util.List; - import javax.inject.Inject; public class MountDetailRecyclerFragment extends BaseMainFragment { @@ -58,7 +55,7 @@ public class MountDetailRecyclerFragment extends BaseMainFragment { compositeSubscription.add(adapter.getEquipEvents() .flatMap(key -> inventoryRepository.equip(user, "mount", key)) - .subscribe(items -> {}, ReactiveErrorHandler.handleEmptyError())); + .subscribe(items -> {}, RxErrorHandler.handleEmptyError())); } } @@ -107,7 +104,7 @@ public class MountDetailRecyclerFragment extends BaseMainFragment { } private void loadItems() { - inventoryRepository.getMounts(animalType, animalGroup).first().subscribe(adapter::updateData, ReactiveErrorHandler.handleEmptyError()); + inventoryRepository.getMounts(animalType, animalGroup).first().subscribe(adapter::updateData, RxErrorHandler.handleEmptyError()); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.java index a9db777c2..3f0bac578 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.java @@ -12,7 +12,7 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.InventoryRepository; import com.habitrpg.android.habitica.events.commands.FeedCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.ui.adapter.inventory.PetDetailRecyclerAdapter; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; @@ -60,7 +60,7 @@ public class PetDetailRecyclerFragment extends BaseMainFragment { compositeSubscription.add(adapter.getEquipEvents() .flatMap(key -> inventoryRepository.equip(user, "pet", key)) - .subscribe(items -> {}, ReactiveErrorHandler.handleEmptyError())); + .subscribe(items -> {}, RxErrorHandler.handleEmptyError())); } } @@ -108,8 +108,8 @@ public class PetDetailRecyclerFragment extends BaseMainFragment { } private void loadItems() { - inventoryRepository.getPets(animalType, animalGroup).first().subscribe(adapter::updateData, ReactiveErrorHandler.handleEmptyError()); - inventoryRepository.getOwnedMounts(animalType, animalGroup).subscribe(adapter::setOwnedMounts, ReactiveErrorHandler.handleEmptyError()); + inventoryRepository.getPets(animalType, animalGroup).first().subscribe(adapter::updateData, RxErrorHandler.handleEmptyError()); + inventoryRepository.getOwnedMounts(animalType, animalGroup).subscribe(adapter::setOwnedMounts, RxErrorHandler.handleEmptyError()); } @Subscribe diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.java index a6438c394..edf930f55 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.java @@ -11,7 +11,7 @@ import android.widget.TextView; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.InventoryRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.inventory.Animal; import com.habitrpg.android.habitica.models.inventory.Mount; import com.habitrpg.android.habitica.models.inventory.Pet; @@ -183,6 +183,6 @@ public class StableRecyclerFragment extends BaseFragment { } } return Observable.just(items); - }).subscribe(items -> adapter.setItemList(items), ReactiveErrorHandler.handleEmptyError()); + }).subscribe(items -> adapter.setItemList(items), RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountDetailsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountDetailsFragment.java index 6fd10674a..88abb5040 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountDetailsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountDetailsFragment.java @@ -13,7 +13,7 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.events.commands.OpenGemPurchaseFragmentCommand; import com.habitrpg.android.habitica.helpers.QrCodeManager; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.models.user.SubscriptionPlan; import com.habitrpg.android.habitica.ui.views.subscriptions.SubscriptionDetailsView; @@ -42,7 +42,7 @@ public class AccountDetailsFragment extends BasePreferencesFragment { String userID = getPreferenceManager().getSharedPreferences().getString(getContext().getString(R.string.SP_userID), null); if (userID != null) { - userRepository.getUser(userID).subscribe(this::setUser, ReactiveErrorHandler.handleEmptyError()); + userRepository.getUser(userID).subscribe(this::setUser, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java index 25a4b3965..a29a69ffd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java @@ -16,7 +16,7 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.helpers.LanguageHelper; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.helpers.SoundManager; import com.habitrpg.android.habitica.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager; @@ -58,7 +58,7 @@ public class PreferencesFragment extends BasePreferencesFragment implements String userID = getPreferenceManager().getSharedPreferences().getString(context.getString(R.string.SP_userID), null); if (userID != null) { - userRepository.getUser(userID).subscribe(PreferencesFragment.this::setUser, ReactiveErrorHandler.handleEmptyError()); + userRepository.getUser(userID).subscribe(PreferencesFragment.this::setUser, RxErrorHandler.handleEmptyError()); } } @@ -133,7 +133,7 @@ public class PreferencesFragment extends BasePreferencesFragment implements } return true; } else if (preference.getKey().equals("reload_content")) { - apiClient.getContent().subscribe(contentResult -> {}, ReactiveErrorHandler.handleEmptyError()); + apiClient.getContent().subscribe(contentResult -> {}, RxErrorHandler.handleEmptyError()); } return super.onPreferenceTreeClick(preference); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java index d041aedbc..0a2eaae32 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.java @@ -15,7 +15,7 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.events.commands.UseSkillCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.Skill; import com.habitrpg.android.habitica.models.responses.SkillResponse; import com.habitrpg.android.habitica.models.user.User; @@ -98,7 +98,7 @@ public class SkillsFragment extends BaseMainFragment { Observable.concat(userRepository.getSkills(user).first().flatMap(Observable::from), userRepository.getSpecialItems(user).first().flatMap(Observable::from)) .toList() - .subscribe(skills -> adapter.setSkillList(skills), ReactiveErrorHandler.handleEmptyError()); + .subscribe(skills -> adapter.setSkillList(skills), RxErrorHandler.handleEmptyError()); } @Override @@ -147,7 +147,7 @@ public class SkillsFragment extends BaseMainFragment { if (activity != null) { UiUtils.showSnackbar(activity, activity.getFloatingMenuWrapper(), message.toString(), UiUtils.SnackbarDisplayType.NORMAL); } - userRepository.retrieveUser(false).subscribe(habitRPGUser -> {}, ReactiveErrorHandler.handleEmptyError()); + userRepository.retrieveUser(false).subscribe(habitRPGUser -> {}, RxErrorHandler.handleEmptyError()); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java index ea50a3b4f..31fc8cd9d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/ChatListFragment.java @@ -24,7 +24,7 @@ import com.habitrpg.android.habitica.events.commands.FlagChatMessageCommand; import com.habitrpg.android.habitica.events.commands.SendNewGroupMessageCommand; import com.habitrpg.android.habitica.events.commands.ToggleInnCommand; import com.habitrpg.android.habitica.events.commands.ToggleLikeMessageCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.social.ChatMessage; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.ui.activities.MainActivity; @@ -91,7 +91,7 @@ public class ChatListFragment extends BaseFragment implements SwipeRefreshLayout if (savedInstanceState.containsKey("userId")) { this.userId = savedInstanceState.getString("userId"); if (this.userId != null) { - userRepository.getUser(userId).subscribe(habitRPGUser -> this.user = habitRPGUser, ReactiveErrorHandler.handleEmptyError()); + userRepository.getUser(userId).subscribe(habitRPGUser -> this.user = habitRPGUser, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java index 04a53bfd7..a1e5d77f7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java @@ -21,7 +21,7 @@ import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.databinding.FragmentGroupInfoBinding; import com.habitrpg.android.habitica.helpers.QrCodeManager; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.inventory.QuestContent; import com.habitrpg.android.habitica.models.social.Group; import com.habitrpg.android.habitica.models.user.User; @@ -87,8 +87,9 @@ public class GroupInformationFragment extends BaseFragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - if (view == null) + if (view == null) { view = inflater.inflate(R.layout.fragment_group_info, container, false); + } questCollectViewAdapter = new QuestCollectRecyclerViewAdapter(); viewBinding = DataBindingUtil.bind(view); @@ -370,7 +371,7 @@ public class GroupInformationFragment extends BaseFragment { public void onPartyInviteRejected() { if (user != null) { apiClient.rejectGroupInvite(user.getInvitations().getParty().getId()) - .subscribe(aVoid -> viewBinding.setInvitation(null), ReactiveErrorHandler.handleEmptyError()); + .subscribe(aVoid -> viewBinding.setInvitation(null), RxErrorHandler.handleEmptyError()); } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java index f6e9ecf80..ab4f79579 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java @@ -6,6 +6,7 @@ import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; +import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -16,6 +17,7 @@ import android.view.ViewGroup; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.SocialRepository; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.social.Group; import com.habitrpg.android.habitica.ui.activities.GroupFormActivity; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; @@ -34,17 +36,10 @@ public class GuildFragment extends BaseMainFragment implements Action1 { private Group guild; private GroupInformationFragment guildInformationFragment; private ChatListFragment chatListFragment; + private String guildId; - public void setGuild(Group guild) { - this.guild = guild; - if (this.guildInformationFragment != null) { - this.guildInformationFragment.setGroup(guild); - } - if (this.guild.chat == null && this.socialRepository != null) { - socialRepository.retrieveGroup(this.guild.id) - .subscribe(this, throwable -> { - }); - } + public void setGuildId(String guildId) { + this.guildId = guildId; } @Override @@ -60,6 +55,11 @@ public class GuildFragment extends BaseMainFragment implements Action1 { setViewPagerAdapter(); + if (guildId != null && this.socialRepository != null) { + compositeSubscription.add(socialRepository.getGroup(this.guildId).subscribe(this, throwable -> {}, () -> Log.e("Party", "Completed"))); + socialRepository.retrieveGroup(this.guildId).subscribe(group -> {}, RxErrorHandler.handleEmptyError()); + } + return v; } @@ -86,7 +86,7 @@ public class GuildFragment extends BaseMainFragment implements Action1 { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { - if (this.activity != null) { + if (this.activity != null && this.guild != null) { if (this.isMember) { if (this.user != null && this.user.getId().equals(this.guild.leaderID)) { this.activity.getMenuInflater().inflate(R.menu.guild_admin, menu); @@ -145,7 +145,7 @@ public class GuildFragment extends BaseMainFragment implements Action1 { } case 1: { chatListFragment = new ChatListFragment(); - chatListFragment.configure(GuildFragment.this.guild.id, user, false); + chatListFragment.configure(GuildFragment.this.guildId, user, false); fragment = chatListFragment; break; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.java index c50987bb2..8e8706afd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildsOverviewFragment.java @@ -29,20 +29,16 @@ public class GuildsOverviewFragment extends BaseMainFragment implements View.OnC @Inject SocialRepository socialRepository; + @Inject + ChallengeRepository challengeRepository; @BindView(R.id.my_guilds_listview) LinearLayout guildsListView; - @BindView(R.id.publicGuildsButton) Button publicGuildsButton; - @BindView(R.id.chat_refresh_layout) SwipeRefreshLayout swipeRefreshLayout; - - @Inject - ChallengeRepository challengeRepository; - private List guilds; private ArrayList guildIDs; @@ -69,6 +65,7 @@ public class GuildsOverviewFragment extends BaseMainFragment implements View.OnC @Override public void onDestroy() { socialRepository.close(); + challengeRepository.close(); super.onDestroy(); } @@ -123,7 +120,7 @@ public class GuildsOverviewFragment extends BaseMainFragment implements View.OnC } else { Integer guildIndex = ((ViewGroup) v.getParent()).indexOfChild(v); GuildFragment guildFragment = new GuildFragment(); - guildFragment.setGuild(this.guilds.get(guildIndex)); + guildFragment.setGuildId(this.guilds.get(guildIndex).id); guildFragment.isMember = true; fragment = guildFragment; } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java index de17323be..f0c4b304d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxFragment.java @@ -20,7 +20,7 @@ import android.widget.TextView; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.SocialRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.social.ChatMessage; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.modules.AppModule; @@ -80,7 +80,7 @@ public class InboxFragment extends BaseMainFragment .sort("timestamp", Sort.DESCENDING) .asObservable() .first() - .subscribe(this::setInboxMessages, ReactiveErrorHandler.handleEmptyError()); + .subscribe(this::setInboxMessages, RxErrorHandler.handleEmptyError()); } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.java index a89dc10d6..0594b999f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxMessageListFragment.java @@ -13,7 +13,7 @@ import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.SocialRepository; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.events.commands.SendNewInboxMessageCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.ui.adapter.social.ChatRecyclerViewAdapter; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; @@ -75,7 +75,7 @@ public class InboxMessageListFragment extends BaseMainFragment .findAllSortedAsync("timestamp", Sort.DESCENDING) .asObservable() .filter(RealmResults::isLoaded) - .subscribe(chatMessages -> this.chatAdapter.setMessages(chatMessages), ReactiveErrorHandler.handleEmptyError()); + .subscribe(chatMessages -> this.chatAdapter.setMessages(chatMessages), RxErrorHandler.handleEmptyError()); } } @@ -94,7 +94,7 @@ public class InboxMessageListFragment extends BaseMainFragment private void refreshUserInbox () { this.swipeRefreshLayout.setRefreshing(true); this.userRepository.retrieveUser(true) - .subscribe(this::onUserReceived, ReactiveErrorHandler.handleEmptyError()); + .subscribe(this::onUserReceived, RxErrorHandler.handleEmptyError()); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java index 6f623c3a8..df6813bd7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/PublicGuildsFragment.java @@ -16,6 +16,7 @@ import android.view.ViewGroup; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.SocialRepository; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.social.Group; import com.habitrpg.android.habitica.ui.adapter.social.PublicGuildsRecyclerViewAdapter; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; @@ -35,7 +36,6 @@ public class PublicGuildsFragment extends BaseMainFragment implements SearchView SocialRepository socialRepository; List memberGuildIDs; - List guilds; @BindView(R.id.recyclerView) RecyclerView recyclerView; @@ -53,13 +53,11 @@ public class PublicGuildsFragment extends BaseMainFragment implements SearchView unbinder = ButterKnife.bind(this, view); recyclerView.setLayoutManager(new LinearLayoutManager(this.activity)); recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST)); - viewAdapter = new PublicGuildsRecyclerViewAdapter(); + viewAdapter = new PublicGuildsRecyclerViewAdapter(null, true); viewAdapter.setMemberGuildIDs(this.memberGuildIDs); viewAdapter.apiClient = this.apiClient; recyclerView.setAdapter(viewAdapter); - if (this.guilds != null) { - this.viewAdapter.setPublicGuildList(this.guilds); - } + this.fetchGuilds(); } return view; } @@ -72,7 +70,6 @@ public class PublicGuildsFragment extends BaseMainFragment implements SearchView @Override public void onCreate(Bundle savedInstance) { super.onCreate(savedInstance); - this.fetchGuilds(); } @Override @@ -83,14 +80,15 @@ public class PublicGuildsFragment extends BaseMainFragment implements SearchView private void fetchGuilds() { if (this.socialRepository != null) { - this.socialRepository.getGroups("publicGuilds") + this.socialRepository.getPublicGuilds() + .first() .subscribe(groups -> { - PublicGuildsFragment.this.guilds = groups; if (PublicGuildsFragment.this.viewAdapter != null) { - PublicGuildsFragment.this.viewAdapter.setPublicGuildList(groups); + PublicGuildsFragment.this.viewAdapter.updateData(groups); } }, throwable -> { }); + this.socialRepository.retrieveGroups("publicGuilds").subscribe(groups -> {}, RxErrorHandler.handleEmptyError()); } } @@ -104,7 +102,6 @@ public class PublicGuildsFragment extends BaseMainFragment implements SearchView theTextArea.setHintTextColor(ContextCompat.getColor(getContext(), R.color.white)); guildSearchView.setQueryHint(getString(R.string.guild_search_hint)); guildSearchView.setOnQueryTextListener(this); - } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java index 5d4c1468c..fe1720eea 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java @@ -12,7 +12,7 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.InventoryRepository; import com.habitrpg.android.habitica.data.SocialRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.social.Group; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; @@ -79,7 +79,7 @@ public class TavernFragment extends BaseMainFragment { if (questInfoFragment != null) { questInfoFragment.setQuestContent(content); } - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); } }, throwable -> { }); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailDialogHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailDialogHolder.java index 74ad1c4b4..73d14503c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailDialogHolder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeDetailDialogHolder.java @@ -11,17 +11,13 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; -import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.data.ApiClient; import com.habitrpg.android.habitica.data.ChallengeRepository; import com.habitrpg.android.habitica.events.commands.OpenFullProfileCommand; import com.habitrpg.android.habitica.models.LeaveChallengeBody; import com.habitrpg.android.habitica.models.social.Challenge; import com.habitrpg.android.habitica.models.tasks.Task; -import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.ui.activities.ChallengeDetailActivity; -import com.habitrpg.android.habitica.ui.adapter.social.ChallengesListViewAdapter; import com.habitrpg.android.habitica.ui.helpers.MarkdownParser; import net.pherth.android.emoji_library.EmojiParser; @@ -32,8 +28,6 @@ import org.greenrobot.eventbus.EventBus; import java.util.ArrayList; import java.util.Map; -import javax.inject.Inject; - import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; @@ -163,43 +157,44 @@ public class ChallengeDetailDialogHolder { } private void addHabits(ArrayList habits) { - LinearLayout taskGroup = (LinearLayout) context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_task_group, task_group_layout); + LinearLayout taskGroup = (LinearLayout) context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_task_group, task_group_layout, false); TextView groupName = (TextView) taskGroup.findViewById(R.id.task_group_name); LinearLayout tasks_layout = (LinearLayout) taskGroup.findViewById(R.id.tasks_layout); - groupName.setText(habits.size() + " " + ChallengesListViewAdapter.ChallengeViewHolder.getLabelByTypeAndCount(context, Challenge.TASK_ORDER_HABITS, habits.size())); + groupName.setText(habits.size() + " " + getLabelByTypeAndCount(Challenge.TASK_ORDER_HABITS, habits.size())); int size = habits.size(); for (int i = 0; i < size; i++) { Task task = habits.get(i); - View habitEntry = context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_habit, tasks_layout); - TextView habitTitle = (TextView) habitEntry.findViewById(R.id.habit_title); - ImageView plusImg = (ImageView) habitEntry.findViewById(task.up ? R.id.plus_img_tinted : R.id.plus_img); - ImageView minusImg = (ImageView) habitEntry.findViewById(task.down ? R.id.minus_img_tinted : R.id.minus_img); + View entry = context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_habit, tasks_layout, false); + TextView habitTitle = (TextView) entry.findViewById(R.id.habit_title); + ImageView plusImg = (ImageView) entry.findViewById(task.up ? R.id.plus_img_tinted : R.id.plus_img); + ImageView minusImg = (ImageView) entry.findViewById(task.down ? R.id.minus_img_tinted : R.id.minus_img); plusImg.setVisibility(View.VISIBLE); minusImg.setVisibility(View.VISIBLE); habitTitle.setText(EmojiParser.parseEmojis(task.text)); - + tasks_layout.addView(entry); } + task_group_layout.addView(taskGroup); } private void addDailys(ArrayList dailies) { - LinearLayout taskGroup = (LinearLayout) context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_task_group, task_group_layout); + LinearLayout taskGroup = (LinearLayout) context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_task_group, task_group_layout, false); TextView groupName = (TextView) taskGroup.findViewById(R.id.task_group_name); LinearLayout tasks_layout = (LinearLayout) taskGroup.findViewById(R.id.tasks_layout); int size = dailies.size(); - groupName.setText(dailies.size() + " " + ChallengesListViewAdapter.ChallengeViewHolder.getLabelByTypeAndCount(context, Challenge.TASK_ORDER_DAILYS, size)); + groupName.setText(dailies.size() + " " + getLabelByTypeAndCount(Challenge.TASK_ORDER_DAILYS, size)); for (int i = 0; i < size; i++) { Task task = dailies.get(i); - View entry = context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_daily, tasks_layout); + View entry = context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_daily, tasks_layout, false); TextView title = (TextView) entry.findViewById(R.id.daily_title); title.setText(EmojiParser.parseEmojis(task.text)); @@ -211,23 +206,24 @@ public class ChallengeDetailDialogHolder { TextView checkListAllTextView = (TextView) entry.findViewById(R.id.checkListAllTextView); checkListAllTextView.setText(String.valueOf(task.checklist.size())); } - + tasks_layout.addView(entry); } + task_group_layout.addView(taskGroup); } private void addTodos(ArrayList todos) { - LinearLayout taskGroup = (LinearLayout) context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_task_group, task_group_layout); + LinearLayout taskGroup = (LinearLayout) context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_task_group, task_group_layout, false); TextView groupName = (TextView) taskGroup.findViewById(R.id.task_group_name); LinearLayout tasks_layout = (LinearLayout) taskGroup.findViewById(R.id.tasks_layout); int size = todos.size(); - groupName.setText(todos.size() + " " + ChallengesListViewAdapter.ChallengeViewHolder.getLabelByTypeAndCount(context, Challenge.TASK_ORDER_TODOS, size)); + groupName.setText(todos.size() + " " + getLabelByTypeAndCount(Challenge.TASK_ORDER_TODOS, size)); for (int i = 0; i < size; i++) { Task task = todos.get(i); - View entry = context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_todo, tasks_layout); + View entry = context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_todo, tasks_layout, false); TextView title = (TextView) entry.findViewById(R.id.todo_title); title.setText(EmojiParser.parseEmojis(task.text)); @@ -239,24 +235,40 @@ public class ChallengeDetailDialogHolder { TextView checkListAllTextView = (TextView) entry.findViewById(R.id.checkListAllTextView); checkListAllTextView.setText(String.valueOf(task.checklist.size())); } + tasks_layout.addView(entry); } + task_group_layout.addView(taskGroup); } private void addRewards(ArrayList rewards) { - LinearLayout taskGroup = (LinearLayout) context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_task_group, task_group_layout); + LinearLayout taskGroup = (LinearLayout) context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_task_group, task_group_layout, false); TextView groupName = (TextView) taskGroup.findViewById(R.id.task_group_name); LinearLayout tasks_layout = (LinearLayout) taskGroup.findViewById(R.id.tasks_layout); int size = rewards.size(); - groupName.setText(rewards.size() + " " + ChallengesListViewAdapter.ChallengeViewHolder.getLabelByTypeAndCount(context, Challenge.TASK_ORDER_REWARDS, size)); + groupName.setText(rewards.size() + " " + getLabelByTypeAndCount(Challenge.TASK_ORDER_REWARDS, size)); for (int i = 0; i < size; i++) { Task task = rewards.get(i); - View entry = context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_reward, tasks_layout); + View entry = context.getLayoutInflater().inflate(R.layout.dialog_challenge_detail_reward, tasks_layout, false); TextView title = (TextView) entry.findViewById(R.id.reward_title); title.setText(EmojiParser.parseEmojis(task.text)); + tasks_layout.addView(entry); + } + task_group_layout.addView(taskGroup); + } + + private String getLabelByTypeAndCount(String type, int count) { + if (Challenge.TASK_ORDER_DAILYS.equals(type)) { + return context.getString(count == 1 ? R.string.daily : R.string.dailies); + } else if (Challenge.TASK_ORDER_HABITS.equals(type)) { + return context.getString(count == 1 ? R.string.habit : R.string.habits); + } else if (Challenge.TASK_ORDER_REWARDS.equals(type)) { + return context.getString(count == 1 ? R.string.reward : R.string.rewards); + } else { + return context.getString(count == 1 ? R.string.todo : R.string.todos); } } @@ -280,7 +292,6 @@ public class ChallengeDetailDialogHolder { Intent intent = new Intent(context, ChallengeDetailActivity.class); intent.putExtras(bundle); - //intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); context.startActivity(intent); this.dialog.dismiss(); } @@ -302,8 +313,8 @@ public class ChallengeDetailDialogHolder { challengeLeftAction.call(challenge); } this.dialog.dismiss(); - }, throwable -> { - }))).setNegativeButton(context.getString(R.string.no), (dialog, which) -> dialog.dismiss()).show(); + }, throwable -> {}))) + .setNegativeButton(context.getString(R.string.no), (dialog, which) -> dialog.dismiss()).show(); } // refactor as an UseCase later - see ChallengeDetailActivity diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java index e3795ad5c..372522f13 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeListFragment.java @@ -11,14 +11,13 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; -import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.ChallengeRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.social.Challenge; import com.habitrpg.android.habitica.ui.activities.CreateChallengeActivity; import com.habitrpg.android.habitica.ui.adapter.social.ChallengesListViewAdapter; @@ -121,7 +120,7 @@ public class ChallengeListFragment extends BaseMainFragment implements SwipeRefr } this.challenges = challenges; challengeAdapter.updateData(challenges); - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); } private void fetchOnlineChallenges() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java index c589385af..bff1cff6f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengesOverviewFragment.java @@ -14,7 +14,7 @@ import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.ChallengeRepository; import com.habitrpg.android.habitica.events.commands.ShowChallengeDetailActivityCommand; import com.habitrpg.android.habitica.events.commands.ShowChallengeDetailDialogCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.ui.activities.ChallengeDetailActivity; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; @@ -112,7 +112,7 @@ public class ChallengesOverviewFragment extends BaseMainFragment { challengeRepository.getChallenge(cmd.challengeId).first().subscribe(challenge -> ChallengeDetailDialogHolder.showDialog(getActivity(), challengeRepository, challenge, challenge1 -> { // challenge left - }), ReactiveErrorHandler.handleEmptyError()); + }), RxErrorHandler.handleEmptyError()); } @Subscribe @@ -122,7 +122,6 @@ public class ChallengesOverviewFragment extends BaseMainFragment { Intent intent = new Intent(getActivity(), ChallengeDetailActivity.class); intent.putExtras(bundle); - //intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); getActivity().startActivity(intent); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java index 8ee6471ab..de3148b83 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java @@ -19,10 +19,9 @@ import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.InventoryRepository; import com.habitrpg.android.habitica.data.SocialRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.social.Group; import com.habitrpg.android.habitica.models.social.UserParty; -import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.ui.activities.GroupFormActivity; import com.habitrpg.android.habitica.ui.activities.PartyInviteActivity; import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment; @@ -52,7 +51,6 @@ public class PartyFragment extends BaseMainFragment { private GroupInformationFragment groupInformationFragment; private ChatListFragment chatListFragment; private FragmentPagerAdapter viewPagerAdapter; - private List members; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -66,29 +64,15 @@ public class PartyFragment extends BaseMainFragment { viewPager.setCurrentItem(0); // Get the full group data - if (this.user != null && this.user.getParty() != null && this.user.getParty().id != null) { - socialRepository.getGroup("party") - .filter(group1 -> group1 != null) + if (userHasParty()) { + compositeSubscription.add(socialRepository.getGroup(user.getParty().getId()) .subscribe(group -> { - if (group == null) { - return; - } PartyFragment.this.group = group; - updateGroupUI(); - - socialRepository.getGroupMembers(group.id, true) - .subscribe(members -> { - PartyFragment.this.members = members; - updateGroupUI(); - }, - throwable -> { - }); - }, throwable -> { - }); + }, RxErrorHandler.handleEmptyError())); + socialRepository.retrieveGroup("party").subscribe(group1 -> {}, RxErrorHandler.handleEmptyError()); } - setViewPagerAdapter(); this.tutorialStepIdentifier = "party"; this.tutorialText = getString(R.string.tutorial_party); @@ -98,6 +82,10 @@ public class PartyFragment extends BaseMainFragment { return v; } + private boolean userHasParty() { + return this.user != null && this.user.getParty() != null && this.user.getParty().id != null; + } + @Override public void onDestroy() { socialRepository.close(); @@ -144,7 +132,7 @@ public class PartyFragment extends BaseMainFragment { if (groupInformationFragment != null) { groupInformationFragment.setQuestContent(content); } - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); } } @@ -162,9 +150,6 @@ public class PartyFragment extends BaseMainFragment { @Override public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); switch (id) { 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 644f1cb35..9ae3b4794 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 @@ -21,7 +21,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository; import com.habitrpg.android.habitica.data.TaskRepository; import com.habitrpg.android.habitica.data.UserRepository; import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.helpers.TaskFilterHelper; import com.habitrpg.android.habitica.models.tasks.Task; import com.habitrpg.android.habitica.models.user.User; @@ -349,7 +349,7 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli swipeRefreshLayout.setRefreshing(true); userRepository.retrieveUser(true, true) .doOnTerminate(() -> swipeRefreshLayout.setRefreshing(false)) - .subscribe(user1 -> {}, ReactiveErrorHandler.handleEmptyError()); + .subscribe(user1 -> {}, RxErrorHandler.handleEmptyError()); } public void setActiveFilter(String activeFilter) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java index 041a76821..f54b18ce6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java @@ -20,7 +20,6 @@ import android.widget.TextView; import com.github.clans.fab.FloatingActionButton; import com.github.clans.fab.FloatingActionMenu; -import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; @@ -28,7 +27,7 @@ import com.habitrpg.android.habitica.data.TagRepository; import com.habitrpg.android.habitica.events.TaskSaveEvent; import com.habitrpg.android.habitica.events.TaskTappedEvent; import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.helpers.TaskFilterHelper; import com.habitrpg.android.habitica.models.TutorialStep; import com.habitrpg.android.habitica.models.tasks.Task; @@ -348,7 +347,7 @@ public class TasksFragment extends BaseMainFragment { } } } - }, ReactiveErrorHandler.handleEmptyError()); + }, RxErrorHandler.handleEmptyError()); } // endregion 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 7ff50f5ec..cffb2e0e9 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 @@ -28,7 +28,7 @@ import android.widget.TextView; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.data.TagRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.Tag; import com.habitrpg.android.habitica.models.tasks.Task; @@ -213,9 +213,9 @@ public class TaskFilterDialog extends AlertDialog implements RadioGroup.OnChecke if (this.getWindow() != null) { this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); } - repository.updateTags(editedTags.values()).subscribe(tag -> editedTags.remove(tag.getId()), ReactiveErrorHandler.handleEmptyError()); - repository.createTags(createdTags.values()).subscribe(tag -> createdTags.remove(tag.getId()), ReactiveErrorHandler.handleEmptyError()); - repository.deleteTags(deletedTags).subscribe(tags1 -> deletedTags.clear(), ReactiveErrorHandler.handleEmptyError()); + repository.updateTags(editedTags.values()).subscribe(tag -> editedTags.remove(tag.getId()), RxErrorHandler.handleEmptyError()); + repository.createTags(createdTags.values()).subscribe(tag -> createdTags.remove(tag.getId()), RxErrorHandler.handleEmptyError()); + repository.deleteTags(deletedTags).subscribe(tags1 -> deletedTags.clear(), RxErrorHandler.handleEmptyError()); } private void createTagEditViews() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/GroupSerialization.java b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/GroupSerialization.java index 13d532fa6..ed5ede579 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/GroupSerialization.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/GroupSerialization.java @@ -17,6 +17,8 @@ import com.habitrpg.android.habitica.models.user.User; import java.lang.reflect.Type; import java.util.List; +import io.realm.RealmList; + public class GroupSerialization implements JsonDeserializer, JsonSerializer { @Override public Group deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { @@ -46,7 +48,7 @@ public class GroupSerialization implements JsonDeserializer, JsonSerializ group.type = obj.get("type").getAsString(); } if (obj.has("chat")) { - group.chat = context.deserialize(obj.get("chat"), new TypeToken>() { + group.chat = context.deserialize(obj.get("chat"), new TypeToken>() { }.getType()); } if (obj.has("members")) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java index 478198694..d52408853 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/AvatarStatsWidgetProvider.java @@ -13,7 +13,7 @@ import android.widget.RemoteViews; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.data.UserRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.user.User; import com.habitrpg.android.habitica.models.user.Stats; import com.habitrpg.android.habitica.modules.AppModule; @@ -50,7 +50,7 @@ public class AvatarStatsWidgetProvider extends BaseWidgetProvider { this.appWidgetManager = appWidgetManager; this.context = context; - userRepository.getUser(userId).subscribe(this::updateData, ReactiveErrorHandler.handleEmptyError()); + userRepository.getUser(userId).subscribe(this::updateData, RxErrorHandler.handleEmptyError()); } @Override diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.java b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.java index b9cd74740..b049eb63a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/widget/BaseWidgetProvider.java @@ -12,9 +12,7 @@ import android.widget.Toast; import com.habitrpg.android.habitica.HabiticaApplication; import com.habitrpg.android.habitica.data.UserRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; import com.habitrpg.android.habitica.interactors.NotifyUserUseCase; -import com.habitrpg.android.habitica.models.responses.TaskDirectionData; import com.habitrpg.android.habitica.models.responses.TaskScoringResult; import com.habitrpg.android.habitica.ui.helpers.UiUtils; 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 a2d3b35a6..a19f0ff44 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 @@ -16,7 +16,7 @@ import android.widget.RemoteViews; import com.habitrpg.android.habitica.HabiticaBaseApplication; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.data.TaskRepository; -import com.habitrpg.android.habitica.helpers.ReactiveErrorHandler; +import com.habitrpg.android.habitica.helpers.RxErrorHandler; import com.habitrpg.android.habitica.models.responses.TaskDirection; import com.habitrpg.android.habitica.models.tasks.Task; import com.habitrpg.android.habitica.modules.AppModule; @@ -53,7 +53,7 @@ public class HabitButtonWidgetService extends Service { makeTaskMapping(); for (String taskid : this.taskMapping.keySet()) { - taskRepository.getTask(taskid).subscribe(this::updateData, ReactiveErrorHandler.handleEmptyError()); + taskRepository.getTask(taskid).subscribe(this::updateData, RxErrorHandler.handleEmptyError()); } stopSelf();