package com.fastaccess.provider.timeline; import android.content.Context; import android.support.annotation.IdRes; import android.support.annotation.NonNull; import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.fastaccess.R; import com.fastaccess.data.dao.TimelineModel; import com.fastaccess.data.dao.model.Comment; import com.fastaccess.data.dao.types.ReactionTypes; import com.fastaccess.provider.tasks.git.ReactionService; import java.util.ArrayList; import java.util.List; /** * Created by Kosh on 30 Mar 2017, 6:44 PM */ public class CommentsHelper { private static final int LAUGH = 0x1F601; private static final int SAD = 0x1F615; private static final int THUMBS_UP = 0x1f44d; private static final int THUMBS_DOWN = 0x1f44e; private static final int HOORAY = 0x1f389; private static final int HEART = 0x2764; 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) { 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); } } public static String getEmojiByUnicode(int unicode) { return new String(Character.toChars(unicode)); } public static String getEmoji(@NonNull ReactionTypes reactionTypes) { switch (reactionTypes) { case HEART: return getHeart(); case HOORAY: return getHooray(); case PLUS_ONE: return getThumbsUp(); case MINUS_ONE: return getThumbsDown(); case CONFUSED: return getSad(); case LAUGH: return getLaugh(); default: return getThumbsUp(); } } public static String getLaugh() { return getEmojiByUnicode(LAUGH); } public static String getSad() { return getEmojiByUnicode(SAD); } public static String getThumbsUp() { return getEmojiByUnicode(THUMBS_UP); } public static String getThumbsDown() { return getEmojiByUnicode(THUMBS_DOWN); } public static String getHooray() { return getEmojiByUnicode(HOORAY); } public static String getHeart() { return getEmojiByUnicode(HEART); } @NonNull public static ArrayList<String> getUsers(@NonNull List<Comment> comments) { return Stream.of(comments) .map(comment -> comment.getUser().getLogin()) .distinct() .collect(Collectors.toCollection(ArrayList::new)); } @NonNull public static ArrayList<String> getUsersByTimeline(@NonNull List<TimelineModel> comments) { return Stream.of(comments) .filter(timelineModel -> timelineModel.getComment() != null && timelineModel.getComment().getUser() != null) .map(comment -> comment.getComment().getUser().getLogin()) .distinct() .collect(Collectors.toCollection(ArrayList::new)); } }