mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-24 06:35:46 +00:00
Show Participating-Label right after join (w/o reload) + Emoji / Markdown in Challenge Name / Description + change Challenge-Dialog to "joined" mode without closing
This commit is contained in:
parent
98554a7a8b
commit
44d2486e8d
9 changed files with 71 additions and 42 deletions
|
|
@ -61,7 +61,7 @@
|
|||
android:orientation="vertical"
|
||||
app:layout_collapseMode="parallax">
|
||||
|
||||
<TextView
|
||||
<net.pherth.android.emoji_library.EmojiTextView
|
||||
android:id="@+id/challenge_name"
|
||||
style="@style/Headline"
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -69,7 +69,7 @@
|
|||
android:maxLines="2"
|
||||
android:textColor="@color/textColorDark" />
|
||||
|
||||
<TextView
|
||||
<net.pherth.android.emoji_library.EmojiTextView
|
||||
android:id="@+id/challenge_description"
|
||||
style="@style/Body2"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -63,16 +63,16 @@
|
|||
android:orientation="vertical">
|
||||
|
||||
|
||||
<TextView
|
||||
<net.pherth.android.emoji_library.EmojiTextView
|
||||
android:id="@+id/challenge_name"
|
||||
style="@style/ChallengeName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="2"
|
||||
tools:text="Example Challenge Name" />
|
||||
tools:text="Example Challenge Name"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/challenge_description"
|
||||
android:id="@+id/challenge_group_name"
|
||||
style="@style/ChallengeByGroup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="20dp"
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
android:scrollbars="vertical">
|
||||
|
||||
|
||||
<TextView
|
||||
<net.pherth.android.emoji_library.EmojiTextView
|
||||
android:id="@+id/challenge_name"
|
||||
style="@style/Title2"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
android:layout_marginTop="9dp"
|
||||
tools:text="Read a book by or about a person in your field of study" />
|
||||
|
||||
<TextView
|
||||
<net.pherth.android.emoji_library.EmojiTextView
|
||||
android:id="@+id/challenge_description"
|
||||
style="@style/Body2"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
|
|||
|
|
@ -14,8 +14,12 @@ import com.habitrpg.android.habitica.HabiticaApplication;
|
|||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeTasksFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
|
||||
|
||||
import net.pherth.android.emoji_library.EmojiParser;
|
||||
import net.pherth.android.emoji_library.EmojiTextView;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
|
@ -81,10 +85,10 @@ public class ChallengeDetailActivity extends BaseActivity {
|
|||
|
||||
public static class ChallengeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
||||
@BindView(R.id.challenge_name)
|
||||
TextView challengeName;
|
||||
EmojiTextView challengeName;
|
||||
|
||||
@BindView(R.id.challenge_description)
|
||||
TextView challengeDescription;
|
||||
EmojiTextView challengeDescription;
|
||||
|
||||
@BindView(R.id.challenge_member_count)
|
||||
TextView memberCountTextView;
|
||||
|
|
@ -106,8 +110,8 @@ public class ChallengeDetailActivity extends BaseActivity {
|
|||
public void bind(Challenge challenge) {
|
||||
this.challenge = challenge;
|
||||
|
||||
challengeName.setText(challenge.name);
|
||||
challengeDescription.setText(challenge.description);
|
||||
challengeName.setText(EmojiParser.parseEmojis(challenge.name));
|
||||
challengeDescription.setText(MarkdownParser.parseMarkdown(challenge.description));
|
||||
|
||||
memberCountTextView.setText(challenge.memberCount + "");
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import com.habitrpg.android.habitica.HabiticaApplication;
|
|||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.components.AppComponent;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengesOverviewFragment;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ import com.habitrpg.android.habitica.events.commands.OpenFullProfileCommand;
|
|||
import com.habitrpg.android.habitica.events.commands.ShowChallengeTasksCommand;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
|
||||
|
||||
import net.pherth.android.emoji_library.EmojiParser;
|
||||
import net.pherth.android.emoji_library.EmojiTextView;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -68,16 +71,35 @@ public class ChallengesListViewAdapter extends RecyclerView.Adapter<ChallengesLi
|
|||
return challenges.size();
|
||||
}
|
||||
|
||||
public void addChallange(Challenge challenge) {
|
||||
public void addChallenge(Challenge challenge) {
|
||||
challenges.add(challenge);
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void replaceChallenge(Challenge challenge) {
|
||||
int index = challenges.indexOf(challenge);
|
||||
|
||||
if(index == -1){
|
||||
for (int i = 0; i < challenges.size(); i++) {
|
||||
if(challenges.get(i).id.equals(challenge.id)){
|
||||
index = i;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(index != -1) {
|
||||
challenges.set(index, challenge);
|
||||
notifyItemChanged(index);
|
||||
}
|
||||
}
|
||||
|
||||
public static class ChallengeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
||||
@BindView(R.id.challenge_name)
|
||||
TextView challengeName;
|
||||
EmojiTextView challengeName;
|
||||
|
||||
@BindView(R.id.challenge_description)
|
||||
@BindView(R.id.challenge_group_name)
|
||||
TextView challengeDescription;
|
||||
|
||||
@BindView(R.id.challenge_task_summary)
|
||||
|
|
@ -118,11 +140,9 @@ public class ChallengesListViewAdapter extends RecyclerView.Adapter<ChallengesLi
|
|||
public void bind(Challenge challenge) {
|
||||
this.challenge = challenge;
|
||||
|
||||
challengeName.setText(challenge.name);
|
||||
|
||||
challengeName.setText(EmojiParser.parseEmojis(challenge.name.trim()));
|
||||
challengeDescription.setText(challenge.groupName);
|
||||
|
||||
|
||||
officialChallengeLayout.setVisibility(challenge.official ? View.VISIBLE : View.GONE);
|
||||
boolean userIdExists = challenge.user_id != null && !challenge.user_id.isEmpty();
|
||||
|
||||
|
|
@ -153,13 +173,6 @@ public class ChallengesListViewAdapter extends RecyclerView.Adapter<ChallengesLi
|
|||
//gem_prize_layout.setVisibility(View.VISIBLE);
|
||||
gemPrizeTextView.setText(challenge.prize + "");
|
||||
}
|
||||
|
||||
/*if (leaveButton != null && joinButton != null) {
|
||||
|
||||
|
||||
leaveButton.setVisibility(userIdExists ? View.VISIBLE : View.INVISIBLE);
|
||||
joinButton.setVisibility(userIdExists ? View.INVISIBLE : View.VISIBLE);
|
||||
}*/
|
||||
}
|
||||
|
||||
private String getLabelByTypeAndCount(String type, int count) {
|
||||
|
|
|
|||
|
|
@ -14,10 +14,7 @@ import com.habitrpg.android.habitica.components.AppComponent;
|
|||
import com.habitrpg.android.habitica.ui.adapter.social.ChallengesListViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.BaseTransaction;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.TransactionListener;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.BaseModelQueriable;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
import com.raizlabs.android.dbflow.sql.language.Where;
|
||||
|
||||
|
|
@ -152,6 +149,10 @@ public class ChallengeListFragment extends BaseMainFragment implements View.OnCl
|
|||
}
|
||||
|
||||
public void addItem(Challenge challenge) {
|
||||
challengeAdapter.addChallange(challenge);
|
||||
challengeAdapter.addChallenge(challenge);
|
||||
}
|
||||
|
||||
public void updateItem(Challenge challenge) {
|
||||
challengeAdapter.replaceChallenge(challenge);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ public class ChallengeTaskRecyclerViewFragment extends BaseFragment {
|
|||
fragment.user = user;
|
||||
fragment.classType = classType;
|
||||
|
||||
if(tasks.size() != 0){
|
||||
if(tasks.size() != 0 && fragment.recyclerAdapter != null){
|
||||
fragment.recyclerAdapter.setTasks(tasks);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,11 +26,15 @@ import com.habitrpg.android.habitica.events.commands.OpenFullProfileCommand;
|
|||
import com.habitrpg.android.habitica.events.commands.ShowChallengeTasksCommand;
|
||||
import com.habitrpg.android.habitica.ui.activities.ChallengeDetailActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Challenge;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import net.pherth.android.emoji_library.EmojiParser;
|
||||
import net.pherth.android.emoji_library.EmojiTextView;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
|
|
@ -183,10 +187,10 @@ public class ChallengesOverviewFragment extends BaseMainFragment {
|
|||
Button leaveButton;
|
||||
|
||||
@BindView(R.id.challenge_name)
|
||||
TextView challengeName;
|
||||
EmojiTextView challengeName;
|
||||
|
||||
@BindView(R.id.challenge_description)
|
||||
TextView challengeDescription;
|
||||
EmojiTextView challengeDescription;
|
||||
|
||||
@BindView(R.id.challenge_leader)
|
||||
TextView challengeLeader;
|
||||
|
|
@ -216,22 +220,28 @@ public class ChallengesOverviewFragment extends BaseMainFragment {
|
|||
this.user = user;
|
||||
this.challenge = challenge;
|
||||
|
||||
if (challenge.user_id == null || challenge.user_id.isEmpty()) {
|
||||
notJoinedHeader.setVisibility(View.VISIBLE);
|
||||
joinButton.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
joinedHeader.setVisibility(View.VISIBLE);
|
||||
leaveButton.setVisibility(View.VISIBLE);
|
||||
}
|
||||
changeViewsByChallenge(challenge);
|
||||
}
|
||||
|
||||
challengeName.setText(challenge.name);
|
||||
challengeDescription.setText(challenge.description);
|
||||
public void changeViewsByChallenge(Challenge challenge){
|
||||
setJoined(challenge.user_id != null && !challenge.user_id.isEmpty());
|
||||
|
||||
challengeName.setText(EmojiParser.parseEmojis(challenge.name));
|
||||
challengeDescription.setText( MarkdownParser.parseMarkdown(challenge.description));
|
||||
challengeLeader.setText(challenge.leaderName);
|
||||
|
||||
gem_amount.setText(challenge.prize + "");
|
||||
member_count.setText(challenge.memberCount + "");
|
||||
}
|
||||
|
||||
public void setJoined(boolean joined){
|
||||
joinedHeader.setVisibility(joined ? View.VISIBLE : View.GONE);
|
||||
leaveButton.setVisibility(joined ? View.VISIBLE : View.GONE);
|
||||
|
||||
notJoinedHeader.setVisibility(joined ? View.GONE : View.VISIBLE);
|
||||
joinButton.setVisibility(joined ? View.GONE : View.VISIBLE);
|
||||
}
|
||||
|
||||
@OnClick(R.id.challenge_leader)
|
||||
public void openLeaderProfile() {
|
||||
EventBus.getDefault().post(new OpenFullProfileCommand(challenge.leaderId));
|
||||
|
|
@ -258,7 +268,9 @@ public class ChallengesOverviewFragment extends BaseMainFragment {
|
|||
challenge.async().save();
|
||||
|
||||
userChallengesFragment.addItem(challenge);
|
||||
this.dialog.dismiss();
|
||||
availableChallengesFragment.updateItem(challenge);
|
||||
|
||||
changeViewsByChallenge(challenge);
|
||||
}, throwable -> {
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue