From cbbcbdc92d861e7d317fd592a88dca2aa7a4a1a2 Mon Sep 17 00:00:00 2001 From: k0shk0sh Date: Fri, 27 Dec 2019 22:03:23 +0100 Subject: [PATCH] add rocket and eyes reaction --- .../fastaccess/data/dao/ReactionsModel.java | 59 +++---------- .../data/dao/types/ReactionTypes.java | 4 +- .../provider/timeline/CommentsHelper.java | 86 ++++++++++--------- .../viewholder/IssueDetailsViewHolder.java | 14 ++- .../viewholder/ReviewCommentsViewHolder.java | 14 ++- .../TimelineCommentsViewHolder.java | 14 ++- .../layout/comments_dropdown_layout.xml | 46 +++++++--- .../row_layouts/layout/comments_row_item.xml | 23 +++++ .../layout/issue_detail_header_row_item.xml | 82 +++++++++++------- .../layout/review_comments_row_item.xml | 69 ++++++++++----- 10 files changed, 258 insertions(+), 153 deletions(-) diff --git a/app/src/main/java/com/fastaccess/data/dao/ReactionsModel.java b/app/src/main/java/com/fastaccess/data/dao/ReactionsModel.java index 16edfeca..ffcddd07 100644 --- a/app/src/main/java/com/fastaccess/data/dao/ReactionsModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/ReactionsModel.java @@ -2,11 +2,14 @@ package com.fastaccess.data.dao; import android.os.Parcel; import android.os.Parcelable; + import androidx.annotation.Nullable; import com.fastaccess.data.dao.model.User; import com.google.gson.annotations.SerializedName; +import org.jetbrains.annotations.NotNull; + import java.util.ArrayList; import java.util.List; @@ -24,12 +27,14 @@ import github.PullRequestTimelineQuery; public long id; public String url; public int total_count; - @SerializedName("+1") public int plusOne; - @SerializedName("-1") public int minusOne; + @SerializedName(value = "+1", alternate = "thumbs_up") public int plusOne; + @SerializedName(value = "-1", alternate = "thumbs_down") public int minusOne; public int laugh; public int hooray; public int confused; public int heart; + public int rocket; + public int eyes; public String content; public User user; public boolean viewerHasReacted; @@ -37,7 +42,7 @@ import github.PullRequestTimelineQuery; public ReactionsModel() {} - @Override public String toString() { + @NotNull @Override public String toString() { return "ReactionsModel{" + "id=" + id + ", url='" + url + '\'' + @@ -48,6 +53,8 @@ import github.PullRequestTimelineQuery; ", hooray=" + hooray + ", confused=" + confused + ", heart=" + heart + + ", rocket=" + rocket + + ", eyes=" + eyes + '}'; } @@ -63,6 +70,8 @@ import github.PullRequestTimelineQuery; dest.writeInt(this.hooray); dest.writeInt(this.confused); dest.writeInt(this.heart); + dest.writeInt(this.rocket); + dest.writeInt(this.eyes); dest.writeString(this.content); dest.writeParcelable(this.user, flags); dest.writeByte(this.isCallingApi ? (byte) 1 : (byte) 0); @@ -78,6 +87,8 @@ import github.PullRequestTimelineQuery; this.hooray = in.readInt(); this.confused = in.readInt(); this.heart = in.readInt(); + this.rocket = in.readInt(); + this.eyes = in.readInt(); this.content = in.readString(); this.user = in.readParcelable(User.class.getClassLoader()); this.isCallingApi = in.readByte() != 0; @@ -88,46 +99,4 @@ import github.PullRequestTimelineQuery; @Override public ReactionsModel[] newArray(int size) {return new ReactionsModel[size];} }; - - @NonNull public static List getReactionGroup(@Nullable List reactions) { - List models = new ArrayList<>(); - if (reactions != null && !reactions.isEmpty()) { - for (PullRequestTimelineQuery.ReactionGroup reaction : reactions) { - ReactionsModel model = new ReactionsModel(); - model.setContent(reaction.content().name()); - model.setViewerHasReacted(reaction.viewerHasReacted()); - model.setTotal_count(reaction.users().totalCount()); - models.add(model); - } - } - return models; - } - - @NonNull public static List getReaction(@Nullable List reactions) { - List models = new ArrayList<>(); - if (reactions != null && !reactions.isEmpty()) { - for (PullRequestTimelineQuery.ReactionGroup1 reaction : reactions) { - ReactionsModel model = new ReactionsModel(); - model.setContent(reaction.content().name()); - model.setViewerHasReacted(reaction.viewerHasReacted()); - model.setTotal_count(reaction.users().totalCount()); - models.add(model); - } - } - return models; - } - - @NonNull public static List getReaction2(@Nullable List reactions) { - List models = new ArrayList<>(); - if (reactions != null && !reactions.isEmpty()) { - for (PullRequestTimelineQuery.ReactionGroup2 reaction : reactions) { - ReactionsModel model = new ReactionsModel(); - model.setContent(reaction.content().name()); - model.setViewerHasReacted(reaction.viewerHasReacted()); - model.setTotal_count(reaction.users().totalCount()); - models.add(model); - } - } - return models; - } } diff --git a/app/src/main/java/com/fastaccess/data/dao/types/ReactionTypes.java b/app/src/main/java/com/fastaccess/data/dao/types/ReactionTypes.java index df19ec64..2f21fd4b 100644 --- a/app/src/main/java/com/fastaccess/data/dao/types/ReactionTypes.java +++ b/app/src/main/java/com/fastaccess/data/dao/types/ReactionTypes.java @@ -17,7 +17,9 @@ public enum ReactionTypes { PLUS_ONE("thumbs_up", R.id.thumbsUp, R.id.thumbsUpReaction), MINUS_ONE("thumbs_down", R.id.thumbsDown, R.id.thumbsDownReaction), CONFUSED("confused", R.id.sad, R.id.sadReaction), - LAUGH("laugh", R.id.laugh, R.id.laughReaction); + LAUGH("laugh", R.id.laugh, R.id.laughReaction), + ROCKET("rocket", R.id.rocket, R.id.rocketReaction), + EYES("eyes", R.id.eyes, R.id.eyeReaction); private String content; private int vId; diff --git a/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java b/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java index 1dde1391..727f3f49 100644 --- a/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java +++ b/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java @@ -1,8 +1,10 @@ package com.fastaccess.provider.timeline; import android.content.Context; + import androidx.annotation.IdRes; import androidx.annotation.NonNull; + import android.view.View; import android.widget.TextView; @@ -16,6 +18,8 @@ import com.fastaccess.data.dao.types.ReactionTypes; import com.fastaccess.provider.tasks.git.ReactionService; import com.fastaccess.ui.widgets.SpannableBuilder; +import org.w3c.dom.Text; + import java.util.ArrayList; import java.util.List; @@ -31,41 +35,14 @@ public class CommentsHelper { private static final int THUMBS_DOWN = 0x1f44e; private static final int HOORAY = 0x1f389; private static final int HEART = 0x2764; + private static final int ROCKET = 0x1f680; + private static final int EYES = 0x1f440; public static boolean isOwner(@NonNull String currentLogin, @NonNull String repoOwner, @NonNull String commentUser) { return currentLogin.equalsIgnoreCase(repoOwner) || currentLogin.equalsIgnoreCase(commentUser); } - public static void handleReactions(@NonNull Context context, @NonNull String login, @NonNull String repoId, - @IdRes int id, long commentId, boolean commit, boolean isDelete, - boolean isEnterprise) { - ReactionTypes type = null; - switch (id) { - case R.id.heart: - type = ReactionTypes.HEART; - break; - case R.id.sad: - type = ReactionTypes.CONFUSED; - break; - case R.id.thumbsDown: - type = ReactionTypes.MINUS_ONE; - break; - case R.id.thumbsUp: - type = ReactionTypes.PLUS_ONE; - break; - case R.id.laugh: - type = ReactionTypes.LAUGH; - break; - case R.id.hurray: - type = ReactionTypes.HOORAY; - break; - } - if (type != null) { - ReactionService.start(context, login, repoId, commentId, type, commit, isDelete, isEnterprise); - } - } - private static String getEmojiByUnicode(int unicode) { return new String(Character.toChars(unicode)); } @@ -76,14 +53,16 @@ public class CommentsHelper { return getHeart(); case HOORAY: return getHooray(); - case PLUS_ONE: - return getThumbsUp(); case MINUS_ONE: return getThumbsDown(); case CONFUSED: return getSad(); case LAUGH: return getLaugh(); + case ROCKET: + return getRocket(); + case EYES: + return getEyes(); default: return getThumbsUp(); } @@ -113,6 +92,14 @@ public class CommentsHelper { return getEmojiByUnicode(HEART); } + public static String getRocket() { + return getEmojiByUnicode(ROCKET); + } + + public static String getEyes() { + return getEmojiByUnicode(EYES); + } + @NonNull public static ArrayList getUsers(@NonNull List comments) { return Stream.of(comments) .filter(comment -> comment.getUser() != null) @@ -129,13 +116,17 @@ public class CommentsHelper { .collect(Collectors.toCollection(ArrayList::new)); } - public static void appendEmojies(@NonNull ReactionsModel reaction, @NonNull TextView thumbsUp, - @NonNull TextView thumbsUpReaction, @NonNull TextView thumbsDown, - @NonNull TextView thumbsDownReaction, @NonNull TextView hurray, - @NonNull TextView hurrayReaction, @NonNull TextView sad, - @NonNull TextView sadReaction, @NonNull TextView laugh, - @NonNull TextView laughReaction, @NonNull TextView heart, - @NonNull TextView heartReaction, @NonNull View reactionsList) { + public static void appendEmojies( + @NonNull ReactionsModel reaction, @NonNull TextView thumbsUp, + @NonNull TextView thumbsUpReaction, @NonNull TextView thumbsDown, + @NonNull TextView thumbsDownReaction, @NonNull TextView hurray, + @NonNull TextView hurrayReaction, @NonNull TextView sad, + @NonNull TextView sadReaction, @NonNull TextView laugh, + @NonNull TextView laughReaction, @NonNull TextView heart, + @NonNull TextView heartReaction, @NonNull TextView rocket, + @NonNull TextView rocketReaction, @NonNull TextView eye, + @NonNull TextView eyeReaction, @NonNull View reactionsList + ) { SpannableBuilder spannableBuilder = SpannableBuilder.builder() .append(CommentsHelper.getThumbsUp()).append(" ") .append(String.valueOf(reaction.getPlusOne())) @@ -173,10 +164,27 @@ public class CommentsHelper { laughReaction.setVisibility(reaction.getLaugh() > 0 ? View.VISIBLE : View.GONE); spannableBuilder = SpannableBuilder.builder() .append(CommentsHelper.getHeart()).append(" ") - .append(String.valueOf(reaction.getHeart())); + .append(String.valueOf(reaction.getHeart())) + .append(" "); heart.setText(spannableBuilder); heartReaction.setText(spannableBuilder); heartReaction.setVisibility(reaction.getHeart() > 0 ? View.VISIBLE : View.GONE); + + spannableBuilder = SpannableBuilder.builder() + .append(CommentsHelper.getRocket()).append(" ") + .append(String.valueOf(reaction.getRocket())) + .append(" "); + rocket.setText(spannableBuilder); + rocketReaction.setText(spannableBuilder); + rocketReaction.setVisibility(reaction.getRocket() > 0 ? View.VISIBLE : View.GONE); + + spannableBuilder = SpannableBuilder.builder() + .append(CommentsHelper.getEyes()).append(" ") + .append(String.valueOf(reaction.getEyes())); + eye.setText(spannableBuilder); + eyeReaction.setText(spannableBuilder); + eyeReaction.setVisibility(reaction.getEyes() > 0 ? View.VISIBLE : View.GONE); + if (reaction.getPlusOne() > 0 || reaction.getMinusOne() > 0 || reaction.getLaugh() > 0 || reaction.getHooray() > 0 || reaction.getConfused() > 0 || reaction.getHeart() > 0) { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java index 18251cc1..579b6903 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java @@ -69,6 +69,10 @@ public class IssueDetailsViewHolder extends BaseViewHolder { @BindView(R.id.hurrayReaction) FontTextView hurrayReaction; @BindView(R.id.sadReaction) FontTextView sadReaction; @BindView(R.id.heartReaction) FontTextView heartReaction; + @BindView(R.id.rocketReaction) FontTextView rocketReaction; + @BindView(R.id.eyeReaction) FontTextView eyeReaction; + @BindView(R.id.rocket) FontTextView rocket; + @BindView(R.id.eyes) FontTextView eyes; private OnToggleView onToggleView; private ReactionsCallback reactionsCallback; private ViewGroup viewGroup; @@ -187,6 +191,14 @@ public class IssueDetailsViewHolder extends BaseViewHolder { case R.id.hurrayReaction: reactionsModel.setHooray(!isReacted ? reactionsModel.getHooray() + 1 : reactionsModel.getHooray() - 1); break; + case R.id.rocket: + case R.id.rocketReaction: + reactionsModel.setRocket(!isReacted ? reactionsModel.getRocket() + 1 : reactionsModel.getRocket() - 1); + break; + case R.id.eyes: + case R.id.eyeReaction: + reactionsModel.setEyes(!isReacted ? reactionsModel.getEyes() + 1 : reactionsModel.getEyes() - 1); + break; } if (pullRequest != null) { pullRequest.setReactions(reactionsModel); @@ -254,7 +266,7 @@ public class IssueDetailsViewHolder extends BaseViewHolder { private void appendEmojies(ReactionsModel reaction) { CommentsHelper.appendEmojies(reaction, thumbsUp, thumbsUpReaction, thumbsDown, thumbsDownReaction, hooray, hurrayReaction, sad, - sadReaction, laugh, laughReaction, heart, heartReaction, reactionsList); + sadReaction, laugh, laughReaction, heart, heartReaction, rocket, rocketReaction, eyes, eyeReaction, reactionsList); } private void onToggle(boolean expanded, boolean animate) { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java index a4859ed5..da843e10 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java @@ -56,6 +56,10 @@ public class ReviewCommentsViewHolder extends BaseViewHolder @BindView(R.id.hurrayReaction) FontTextView hurrayReaction; @BindView(R.id.sadReaction) FontTextView sadReaction; @BindView(R.id.heartReaction) FontTextView heartReaction; + @BindView(R.id.rocketReaction) FontTextView rocketReaction; + @BindView(R.id.eyeReaction) FontTextView eyeReaction; + @BindView(R.id.rocket) FontTextView rocket; + @BindView(R.id.eyes) FontTextView eyes; private OnToggleView onToggleView; private ReactionsCallback reactionsCallback; private ViewGroup viewGroup; @@ -201,6 +205,14 @@ public class ReviewCommentsViewHolder extends BaseViewHolder case R.id.hurrayReaction: reactionsModel.setHooray(!isReacted ? reactionsModel.getHooray() + 1 : reactionsModel.getHooray() - 1); break; + case R.id.rocket: + case R.id.rocketReaction: + reactionsModel.setRocket(!isReacted ? reactionsModel.getRocket() + 1 : reactionsModel.getRocket() - 1); + break; + case R.id.eyes: + case R.id.eyeReaction: + reactionsModel.setEyes(!isReacted ? reactionsModel.getEyes() + 1 : reactionsModel.getEyes() - 1); + break; } comment.setReactions(reactionsModel); appendEmojies(reactionsModel); @@ -210,7 +222,7 @@ public class ReviewCommentsViewHolder extends BaseViewHolder private void appendEmojies(ReactionsModel reaction) { CommentsHelper.appendEmojies(reaction, thumbsUp, thumbsUpReaction, thumbsDown, thumbsDownReaction, hurray, hurrayReaction, sad, - sadReaction, laugh, laughReaction, heart, heartReaction, reactionsList); + sadReaction, laugh, laughReaction, heart, heartReaction, rocket, rocketReaction, eyes, eyeReaction, reactionsList); } private long getId() { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java index 5ee5a0a4..993a8498 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java @@ -64,6 +64,10 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { @BindView(R.id.hurrayReaction) FontTextView hurrayReaction; @BindView(R.id.sadReaction) FontTextView sadReaction; @BindView(R.id.heartReaction) FontTextView heartReaction; + @BindView(R.id.rocketReaction) FontTextView rocketReaction; + @BindView(R.id.eyeReaction) FontTextView eyeReaction; + @BindView(R.id.rocket) FontTextView rocket; + @BindView(R.id.eyes) FontTextView eyes; private OnToggleView onToggleView; private boolean showEmojies; private ReactionsCallback reactionsCallback; @@ -237,6 +241,14 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { case R.id.hurrayReaction: reactionsModel.setHooray(!isReacted ? reactionsModel.getHooray() + 1 : reactionsModel.getHooray() - 1); break; + case R.id.rocket: + case R.id.rocketReaction: + reactionsModel.setRocket(!isReacted ? reactionsModel.getRocket() + 1 : reactionsModel.getRocket() - 1); + break; + case R.id.eyes: + case R.id.eyeReaction: + reactionsModel.setEyes(!isReacted ? reactionsModel.getEyes() + 1 : reactionsModel.getEyes() - 1); + break; } comment.setReactions(reactionsModel); appendEmojies(reactionsModel); @@ -247,7 +259,7 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { private void appendEmojies(ReactionsModel reaction) { CommentsHelper.appendEmojies(reaction, thumbsUp, thumbsUpReaction, thumbsDown, thumbsDownReaction, hurray, hurrayReaction, sad, - sadReaction, laugh, laughReaction, heart, heartReaction, reactionsList); + sadReaction, laugh, laughReaction, heart, heartReaction, rocket, rocketReaction, eyes, eyeReaction, reactionsList); } private void onToggle(boolean expanded, boolean animate) { diff --git a/app/src/main/res/layouts/row_layouts/layout/comments_dropdown_layout.xml b/app/src/main/res/layouts/row_layouts/layout/comments_dropdown_layout.xml index f34974ef..2c50457e 100644 --- a/app/src/main/res/layouts/row_layouts/layout/comments_dropdown_layout.xml +++ b/app/src/main/res/layouts/row_layouts/layout/comments_dropdown_layout.xml @@ -1,18 +1,17 @@ - @@ -21,8 +20,8 @@ android:id="@+id/emojiesList" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_centerVertical="true" android:layout_centerHorizontal="true" + android:layout_centerVertical="true" android:scrollbarStyle="insideOverlay"> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + + + + diff --git a/app/src/main/res/layouts/row_layouts/layout/comments_row_item.xml b/app/src/main/res/layouts/row_layouts/layout/comments_row_item.xml index 04708ca3..9cccb9dc 100644 --- a/app/src/main/res/layouts/row_layouts/layout/comments_row_item.xml +++ b/app/src/main/res/layouts/row_layouts/layout/comments_row_item.xml @@ -203,6 +203,29 @@ style="@style/TextAppearance.AppCompat.Medium" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="@dimen/spacing_micro" + android:layout_gravity="center" + android:background="?android:selectableItemBackgroundBorderless" + android:gravity="center" + tools:text="100"/> + + + + - + android:layout_marginStart="@dimen/avatar_margin" + android:layout_marginEnd="@dimen/avatar_margin_end" /> + tools:text="When one acquires" /> + tools:text="50 minutes" /> @@ -85,7 +84,7 @@ android:textColor="?android:attr/textColorSecondary" android:visibility="gone" tools:text="@string/owner" - tools:visibility="visible"/> + tools:visibility="visible" /> + android:src="@drawable/ic_add_emoji" /> + android:src="@drawable/ic_overflow" /> - + + android:layout_marginEnd="@dimen/spacing_xs_large" + android:layout_marginBottom="@dimen/spacing_micro" + android:textIsSelectable="true" /> + android:visibility="gone" + tools:visibility="visible"> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + + + + @@ -214,13 +236,13 @@ android:id="@+id/labelsHolder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="@dimen/spacing_normal" - android:layout_marginEnd="@dimen/grid_spacing" android:layout_marginStart="@dimen/grid_spacing" android:layout_marginTop="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/grid_spacing" + android:layout_marginBottom="@dimen/spacing_normal" android:background="?card_background" - android:paddingBottom="@dimen/spacing_normal" android:paddingTop="@dimen/spacing_normal" + android:paddingBottom="@dimen/spacing_normal" android:visibility="gone" tools:visibility="visible"> @@ -229,7 +251,7 @@ style="@style/TextAppearance.AppCompat.Caption" android:layout_width="match_parent" android:layout_height="wrap_content" - android:gravity="center"/> + android:gravity="center" /> \ No newline at end of file diff --git a/app/src/main/res/layouts/row_layouts/layout/review_comments_row_item.xml b/app/src/main/res/layouts/row_layouts/layout/review_comments_row_item.xml index da5229bd..143ccda3 100644 --- a/app/src/main/res/layouts/row_layouts/layout/review_comments_row_item.xml +++ b/app/src/main/res/layouts/row_layouts/layout/review_comments_row_item.xml @@ -1,12 +1,11 @@ - + android:layout_marginStart="@dimen/avatar_margin" + android:layout_marginEnd="@dimen/avatar_margin_end" /> + tools:text="When one acquires" /> + tools:text="50 minutes" /> @@ -76,7 +75,7 @@ android:textColor="?android:attr/textColorSecondary" android:visibility="gone" tools:text="@string/owner" - tools:visibility="visible"/> + tools:visibility="visible" /> + android:src="@drawable/ic_add_emoji" /> + android:src="@drawable/ic_overflow" /> - + + tools:text="Hello World" /> + android:visibility="gone" + tools:visibility="visible"> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + tools:text="100" /> + + + +