diff --git a/Habitica/res/layout/dialog_challenge_filter.xml b/Habitica/res/layout/dialog_challenge_filter.xml
index 4c98db44f..fc1e607c6 100644
--- a/Habitica/res/layout/dialog_challenge_filter.xml
+++ b/Habitica/res/layout/dialog_challenge_filter.xml
@@ -85,7 +85,8 @@
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/owned"
- android:textColor="@color/textColorLight"/>
+ android:textColor="@color/textColorLight"
+ android:paddingLeft="8dp" />
+ android:textColor="@color/textColorLight"
+ android:paddingLeft="8dp"/>
\ No newline at end of file
diff --git a/Habitica/res/layout/dialog_challenge_filter_group_item.xml b/Habitica/res/layout/dialog_challenge_filter_group_item.xml
index 6088a6a45..bd497420a 100644
--- a/Habitica/res/layout/dialog_challenge_filter_group_item.xml
+++ b/Habitica/res/layout/dialog_challenge_filter_group_item.xml
@@ -1,22 +1,10 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
+ android:checked="true"
+ android:layout_height="wrap_content"
+ android:paddingTop="8dp"
+ android:paddingBottom="8dp"
+ android:paddingLeft="8dp"/>
\ No newline at end of file
diff --git a/Habitica/res/layout/fragment_group_info.xml b/Habitica/res/layout/fragment_group_info.xml
index f6425e452..65f1bf4c8 100644
--- a/Habitica/res/layout/fragment_group_info.xml
+++ b/Habitica/res/layout/fragment_group_info.xml
@@ -282,7 +282,7 @@
android:layout_height="wrap_content"
android:orientation="vertical"
style="?android:buttonBarStyle"
- android:visibility="@{group.quest.active? View.VISIBLE : View.GONE}">
+ android:visibility="@{group.quest.active ? View.VISIBLE : View.GONE}">
getTasksOrder() {
- HashMap map = new HashMap();
+ HashMap map = new HashMap<>();
if (!dailyList.isEmpty()) {
map.put(TASK_ORDER_DAILYS, dailyList.split(","));
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.java
index f0c45d868..355f7fc6c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.java
@@ -14,6 +14,8 @@ import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.events.commands.ShowChallengeDetailActivityCommand;
import com.habitrpg.android.habitica.events.commands.ShowChallengeDetailDialogCommand;
import com.habitrpg.android.habitica.models.social.Challenge;
+import com.habitrpg.android.habitica.models.social.Group;
+import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeFilterOptions;
import net.pherth.android.emoji_library.EmojiParser;
import net.pherth.android.emoji_library.EmojiTextView;
@@ -23,15 +25,19 @@ import org.greenrobot.eventbus.EventBus;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.realm.OrderedRealmCollection;
+import io.realm.RealmQuery;
import io.realm.RealmRecyclerViewAdapter;
public class ChallengesListViewAdapter extends RealmRecyclerViewAdapter {
private boolean viewUserChallengesOnly;
+ private OrderedRealmCollection unfilteredData;
+ private final String userId;
- public ChallengesListViewAdapter(@Nullable OrderedRealmCollection data, boolean autoUpdate, boolean viewUserChallengesOnly) {
+ public ChallengesListViewAdapter(@Nullable OrderedRealmCollection data, boolean autoUpdate, boolean viewUserChallengesOnly, String userId) {
super(data, autoUpdate);
this.viewUserChallengesOnly = viewUserChallengesOnly;
+ this.userId = userId;
}
@Override
@@ -44,7 +50,42 @@ public class ChallengesListViewAdapter extends RealmRecyclerViewAdapter data) {
+ super.updateData(data);
+ unfilteredData = data;
+ }
+
+ public void filter(ChallengeFilterOptions filterOptions) {
+ if (unfilteredData == null) {
+ return;
+ }
+
+ RealmQuery query = unfilteredData.where();
+
+ if (filterOptions.showByGroups != null && filterOptions.showByGroups.size() > 0) {
+ String[] groupIds = new String[filterOptions.showByGroups.size()];
+ int index = 0;
+ for (Group group : filterOptions.showByGroups) {
+ groupIds[index] = group.id;
+ index += 1;
+ }
+ query = query.in("groupId", groupIds);
+ }
+
+ if (filterOptions.showOwned != filterOptions.notOwned) {
+ if (filterOptions.showOwned) {
+ query = query.equalTo("leaderId", userId);
+ } else {
+ query = query.notEqualTo("leaderId", userId);
+ }
+ }
+
+ this.updateData(query.findAll());
}
public static class ChallengeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.java
index 5d46d29c1..148cddd38 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengesFilterRecyclerViewAdapter.java
@@ -14,6 +14,7 @@ import com.habitrpg.android.habitica.models.social.Group;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.Objects;
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -65,7 +66,7 @@ public class ChallengesFilterRecyclerViewAdapter extends RecyclerView.Adapter groupsToCheck){
for (ChallengeViewHolder h : holderList) {
- h.checkbox.setChecked($.find(groupsToCheck, g -> h.group.id == g.id).isPresent());
+ h.checkbox.setChecked($.find(groupsToCheck, g -> h.group.id.equals(g.id)).isPresent());
}
}
public List getCheckedEntries(){
@@ -84,9 +85,6 @@ public class ChallengesFilterRecyclerViewAdapter extends RecyclerView.Adapter challengesViewed,
+ public void bind(AlertDialog.Builder builder, List challengesViewed,
ChallengeFilterOptions currentFilter,
Action1 selectedGroupsCallback) {
- this.dialog = dialog;
- this.dialog.setButton(Dialog.BUTTON_POSITIVE, context.getString(R.string.done), (dialog1, which) -> doneClicked());
+ builder = builder
+ .setPositiveButton(context.getString(R.string.done), (dialog1, which) -> doneClicked());
+ this.dialog = builder.show();
this.challengesViewed = challengesViewed;
this.currentFilter = currentFilter;
this.selectedGroupsCallback = selectedGroupsCallback;
-
fillChallengeGroups();
if(currentFilter != null ){
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 372522f13..7fd67a9f0 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
@@ -19,12 +19,14 @@ import com.habitrpg.android.habitica.components.AppComponent;
import com.habitrpg.android.habitica.data.ChallengeRepository;
import com.habitrpg.android.habitica.helpers.RxErrorHandler;
import com.habitrpg.android.habitica.models.social.Challenge;
+import com.habitrpg.android.habitica.modules.AppModule;
import com.habitrpg.android.habitica.ui.activities.CreateChallengeActivity;
import com.habitrpg.android.habitica.ui.adapter.social.ChallengesListViewAdapter;
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
import com.habitrpg.android.habitica.ui.helpers.RecyclerViewEmptySupport;
import javax.inject.Inject;
+import javax.inject.Named;
import butterknife.BindView;
import butterknife.ButterKnife;
@@ -35,6 +37,9 @@ public class ChallengeListFragment extends BaseMainFragment implements SwipeRefr
@Inject
ChallengeRepository challengeRepository;
+ @Inject
+ @Named(AppModule.NAMED_USER_ID)
+ String userId;
@BindView(R.id.refresh_layout)
SwipeRefreshLayout swipeRefreshLayout;
@@ -45,11 +50,6 @@ public class ChallengeListFragment extends BaseMainFragment implements SwipeRefr
private ChallengesListViewAdapter challengeAdapter;
private boolean viewUserChallengesOnly;
- private boolean withFilter;
-
- public void setWithFilter(boolean withFilter){
- this.withFilter = withFilter;
- }
public void setViewUserChallengesOnly(boolean only) {
this.viewUserChallengesOnly = only;
@@ -58,7 +58,7 @@ public class ChallengeListFragment extends BaseMainFragment implements SwipeRefr
private RealmResults challenges;
- private ChallengeFilterOptions lastFilterOptions;
+ private ChallengeFilterOptions filterOptions;
@Override
public void onDestroy() {
@@ -73,7 +73,7 @@ public class ChallengeListFragment extends BaseMainFragment implements SwipeRefr
View v = inflater.inflate(R.layout.fragment_challengeslist, container, false);
unbinder = ButterKnife.bind(this, v);
- challengeAdapter = new ChallengesListViewAdapter(null, true, viewUserChallengesOnly);
+ challengeAdapter = new ChallengesListViewAdapter(null, true, viewUserChallengesOnly, userId);
swipeRefreshLayout.setOnRefreshListener(this);
@@ -119,7 +119,7 @@ public class ChallengeListFragment extends BaseMainFragment implements SwipeRefr
fetchOnlineChallenges();
}
this.challenges = challenges;
- challengeAdapter.updateData(challenges);
+ challengeAdapter.updateUnfilteredData(challenges);
}, RxErrorHandler.handleEmptyError());
}
@@ -148,8 +148,14 @@ public class ChallengeListFragment extends BaseMainFragment implements SwipeRefr
private void showFilterDialog() {
ChallengeFilterDialogHolder.showDialog(getActivity(),
challenges,
- lastFilterOptions,
- filterOptions -> this.lastFilterOptions = filterOptions);
+ filterOptions, this::changeFilter);
+ }
+
+ private void changeFilter(ChallengeFilterOptions challengeFilterOptions) {
+ filterOptions = challengeFilterOptions;
+ if (challengeAdapter != null) {
+ challengeAdapter.filter(filterOptions);
+ }
}
@Override
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 bff1cff6f..a475155c5 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
@@ -46,7 +46,6 @@ public class ChallengesOverviewFragment extends BaseMainFragment {
userChallengesFragment = new ChallengeListFragment();
userChallengesFragment.setUser(this.user);
userChallengesFragment.setViewUserChallengesOnly(true);
- userChallengesFragment.setWithFilter(true);
availableChallengesFragment = new ChallengeListFragment();
availableChallengesFragment.setUser(this.user);
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 1f82e3032..e90359ee3 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
@@ -135,7 +135,7 @@ public class PartyFragment extends BaseMainFragment {
}
if (group != null && group.quest != null && group.quest.key != null && !group.quest.key.isEmpty()) {
- inventoryRepository.getQuestContent(group.quest.key).subscribe(content -> {
+ inventoryRepository.getQuestContent(group.quest.key).first().subscribe(content -> {
if (groupInformationFragment != null) {
groupInformationFragment.setQuestContent(content);
}