diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8429ca4e..d2dc3f96 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -197,9 +197,9 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/fastaccess/data/dao/PostReactionModel.java b/app/src/main/java/com/fastaccess/data/dao/PostReactionModel.java
new file mode 100644
index 00000000..0a513f9a
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/data/dao/PostReactionModel.java
@@ -0,0 +1,30 @@
+package com.fastaccess.data.dao;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+/**
+ * Created by Kosh on 29 Mar 2017, 9:50 PM
+ */
+
+@Getter @Setter @NoArgsConstructor @AllArgsConstructor public class PostReactionModel implements Parcelable {
+
+ private String content;
+
+ @Override public int describeContents() { return 0; }
+
+ @Override public void writeToParcel(Parcel dest, int flags) {dest.writeString(this.content);}
+
+ protected PostReactionModel(Parcel in) {this.content = in.readString();}
+
+ public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
+ @Override public PostReactionModel createFromParcel(Parcel source) {return new PostReactionModel(source);}
+
+ @Override public PostReactionModel[] newArray(int size) {return new PostReactionModel[size];}
+ };
+}
diff --git a/app/src/main/java/com/fastaccess/data/dao/model/ReactionsModel.java b/app/src/main/java/com/fastaccess/data/dao/model/ReactionsModel.java
index 396fa156..9240422b 100644
--- a/app/src/main/java/com/fastaccess/data/dao/model/ReactionsModel.java
+++ b/app/src/main/java/com/fastaccess/data/dao/model/ReactionsModel.java
@@ -14,6 +14,7 @@ import lombok.Setter;
@Getter @Setter public class ReactionsModel implements Parcelable {
+ private long id;
private String url;
private int total_count;
@SerializedName("+1") private int plusOne; // FIXME check this code
@@ -23,9 +24,12 @@ import lombok.Setter;
private int confused;
private int heart;
+ public ReactionsModel() {}
+
@Override public int describeContents() { return 0; }
@Override public void writeToParcel(Parcel dest, int flags) {
+ dest.writeLong(this.id);
dest.writeString(this.url);
dest.writeInt(this.total_count);
dest.writeInt(this.plusOne);
@@ -36,9 +40,8 @@ import lombok.Setter;
dest.writeInt(this.heart);
}
- public ReactionsModel() {}
-
protected ReactionsModel(Parcel in) {
+ this.id = in.readLong();
this.url = in.readString();
this.total_count = in.readInt();
this.plusOne = in.readInt();
@@ -49,7 +52,7 @@ import lombok.Setter;
this.heart = in.readInt();
}
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
+ public static final Creator CREATOR = new Creator() {
@Override public ReactionsModel createFromParcel(Parcel source) {return new ReactionsModel(source);}
@Override public ReactionsModel[] newArray(int size) {return new ReactionsModel[size];}
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
new file mode 100644
index 00000000..8108de23
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/data/dao/types/ReactionTypes.java
@@ -0,0 +1,23 @@
+package com.fastaccess.data.dao.types;
+
+/**
+ * Created by Kosh on 29 Mar 2017, 10:11 PM
+ */
+
+public enum ReactionTypes {
+
+ HEART("heart"),
+ HOORAY("hooray"),
+ PLUS_ONE("+1"),
+ MINUS_ONE("-1"),
+ CONFUSED("confused"),
+ LAUGH("laugh");
+
+ private String content;
+
+ ReactionTypes(String content) {this.content = content;}
+
+ public String getContent() {
+ return content;
+ }
+}
diff --git a/app/src/main/java/com/fastaccess/data/service/ReactionsService.java b/app/src/main/java/com/fastaccess/data/service/ReactionsService.java
new file mode 100644
index 00000000..30ffe2e6
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/data/service/ReactionsService.java
@@ -0,0 +1,32 @@
+package com.fastaccess.data.service;
+
+import android.support.annotation.NonNull;
+
+import com.fastaccess.data.dao.PostReactionModel;
+
+import retrofit2.http.Body;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+import retrofit2.http.Path;
+import rx.Observable;
+
+/**
+ * Created by Kosh on 29 Mar 2017, 9:48 PM
+ */
+public interface ReactionsService {
+
+ @POST("/repos/{owner}/{repo}/issues/comments/{id}/reactions")
+ @Headers("Accept: application/vnd.github.squirrel-girl-preview")
+ Observable postIssueReaction(@NonNull @Body PostReactionModel body,
+ @NonNull @Path("owner") String owner,
+ @Path("repo") @NonNull String repo,
+ @Path("id") long id);
+
+ @POST("/repos/{owner}/{repo}/comments/{id}/reactions")
+ @Headers("Accept: application/vnd.github.squirrel-girl-preview")
+ Observable postCommitReaction(@NonNull @Body PostReactionModel body,
+ @NonNull @Path("owner") String owner,
+ @Path("repo") @NonNull String repo,
+ @Path("id") long id);
+}
+
diff --git a/app/src/main/java/com/fastaccess/helper/RxHelper.java b/app/src/main/java/com/fastaccess/helper/RxHelper.java
index b3ed821f..9b52fe78 100644
--- a/app/src/main/java/com/fastaccess/helper/RxHelper.java
+++ b/app/src/main/java/com/fastaccess/helper/RxHelper.java
@@ -23,7 +23,7 @@ public class RxHelper {
.observeOn(AndroidSchedulers.mainThread());
}
- public static Observable saveObserable(@NonNull Observable observable) {
+ public static Observable safeObservable(@NonNull Observable observable) {
return getObserver(observable).onErrorReturn(throwable -> null);
}
}
diff --git a/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java b/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java
index c0d85a4e..fb5fc62c 100644
--- a/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java
+++ b/app/src/main/java/com/fastaccess/provider/rest/RestProvider.java
@@ -16,6 +16,7 @@ import com.fastaccess.data.service.GistService;
import com.fastaccess.data.service.IssueService;
import com.fastaccess.data.service.NotificationService;
import com.fastaccess.data.service.PullRequestService;
+import com.fastaccess.data.service.ReactionsService;
import com.fastaccess.data.service.RepoService;
import com.fastaccess.data.service.SearchService;
import com.fastaccess.data.service.UserRestService;
@@ -157,6 +158,10 @@ public class RestProvider {
return provideRetrofit().create(NotificationService.class);
}
+ @NonNull public static ReactionsService getReactionsService() {
+ return provideRetrofit().create(ReactionsService.class);
+ }
+
@Nullable public static GitHubErrorResponse getErrorResponse(@NonNull Throwable throwable) {
ResponseBody body = null;
if (throwable instanceof HttpException) {
diff --git a/app/src/main/java/com/fastaccess/provider/tasks/git/ReactionService.java b/app/src/main/java/com/fastaccess/provider/tasks/git/ReactionService.java
new file mode 100644
index 00000000..c90a1457
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/provider/tasks/git/ReactionService.java
@@ -0,0 +1,105 @@
+package com.fastaccess.provider.tasks.git;
+
+import android.app.IntentService;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.NotificationCompat;
+
+import com.fastaccess.R;
+import com.fastaccess.data.dao.PostReactionModel;
+import com.fastaccess.data.dao.types.ReactionTypes;
+import com.fastaccess.helper.BundleConstant;
+import com.fastaccess.helper.Bundler;
+import com.fastaccess.helper.InputHelper;
+import com.fastaccess.helper.RxHelper;
+import com.fastaccess.provider.rest.RestProvider;
+
+/**
+ * Created by Kosh on 29 Mar 2017, 9:59 PM
+ */
+
+public class ReactionService extends IntentService {
+
+ private NotificationCompat.Builder notification;
+ private NotificationManager notificationManager;
+
+ public static void start(@NonNull Context context, @NonNull String login, @NonNull String repo,
+ long commentId, ReactionTypes reactionType, boolean isCommit) {
+ Intent intent = new Intent(context, ReactionService.class);
+ intent.putExtras(Bundler.start()
+ .put(BundleConstant.EXTRA, isCommit)
+ .put(BundleConstant.EXTRA_TWO, login)
+ .put(BundleConstant.EXTRA_THREE, repo)
+ .put(BundleConstant.ID, commentId)
+ .put(BundleConstant.EXTRA_TYPE, reactionType)
+ .end());
+ context.startService(intent);
+ }
+
+ public ReactionService() {
+ super(ReactionService.class.getSimpleName());
+ }
+
+ @Override protected void onHandleIntent(@Nullable Intent intent) {
+ if (intent != null && intent.getExtras() != null) {
+ Bundle bundle = intent.getExtras();
+ ReactionTypes reactionType = (ReactionTypes) bundle.getSerializable(BundleConstant.EXTRA_TYPE);
+ boolean isCommit = bundle.getBoolean(BundleConstant.EXTRA);
+ String login = bundle.getString(BundleConstant.EXTRA_TWO);
+ String repo = bundle.getString(BundleConstant.EXTRA_THREE);
+ long commentId = bundle.getLong(BundleConstant.ID);
+ if (InputHelper.isEmpty(login) || InputHelper.isEmpty(repo) || reactionType == null) {
+ stopSelf();
+ return;
+ }
+ if (isCommit) {
+ postCommit(reactionType, login, repo, commentId);
+ } else {
+ post(reactionType, login, repo, commentId);
+ }
+ }
+ }
+
+ private void post(@NonNull ReactionTypes reactionType, @NonNull String login, @NonNull String repo, long commentId) {
+ RxHelper.safeObservable(RestProvider.getReactionsService()
+ .postIssueReaction(new PostReactionModel(reactionType.getContent()), login, repo, commentId))
+ .doOnSubscribe(() -> showNotificatin(getNotification(reactionType), (int) commentId))
+ .subscribe(response -> hideNotificat((int) commentId), throwable -> hideNotificat((int) commentId));
+ }
+
+ private void postCommit(@NonNull ReactionTypes reactionType, @NonNull String login, @NonNull String repo, long commentId) {
+ RxHelper.safeObservable(RestProvider.getReactionsService()
+ .postCommitReaction(new PostReactionModel(reactionType.getContent()), login, repo, commentId))
+ .doOnSubscribe(() -> showNotificatin(getNotification(reactionType), (int) commentId))
+ .subscribe(response -> hideNotificat((int) commentId), throwable -> hideNotificat((int) commentId));
+ }
+
+ public NotificationCompat.Builder getNotification(@NonNull ReactionTypes reactionTypes) {
+ if (notification == null) {
+ notification = new NotificationCompat.Builder(this)
+ .setSmallIcon(R.drawable.ic_sync)
+ .setProgress(0, 100, true);
+ }
+ notification.setContentTitle(getString(R.string.posting_reaction, reactionTypes.getContent()));
+ return notification;
+ }
+
+ public NotificationManager getNotificationManager() {
+ if (notificationManager == null) {
+ notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+ }
+ return notificationManager;
+ }
+
+ private void showNotificatin(@NonNull NotificationCompat.Builder builder, int id) {
+ getNotificationManager().notify(id, builder.build());
+ }
+
+ private void hideNotificat(int id) {
+ getNotificationManager().cancel(id);
+ }
+}
diff --git a/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java b/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java
index 5ff9e49b..b936b5eb 100644
--- a/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java
+++ b/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java
@@ -91,7 +91,7 @@ public class NotificationSchedulerJobTask extends JobService {
private void onSave(@Nullable List notificationThreadModels) {
if (notificationThreadModels != null) {
- RxHelper.saveObserable(Notification.save(notificationThreadModels)).subscribe();
+ RxHelper.safeObservable(Notification.save(notificationThreadModels)).subscribe();
onNotifyUser(notificationThreadModels);
}
}
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/CommentsAdapter.java b/app/src/main/java/com/fastaccess/ui/adapter/CommentsAdapter.java
index c51c0645..a077925c 100644
--- a/app/src/main/java/com/fastaccess/ui/adapter/CommentsAdapter.java
+++ b/app/src/main/java/com/fastaccess/ui/adapter/CommentsAdapter.java
@@ -4,6 +4,8 @@ import android.support.annotation.NonNull;
import android.view.ViewGroup;
import com.fastaccess.data.dao.model.Comment;
+import com.fastaccess.data.dao.model.Login;
+import com.fastaccess.ui.adapter.callback.OnToggleView;
import com.fastaccess.ui.adapter.viewholder.CommentsViewHolder;
import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter;
import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder;
@@ -16,12 +18,17 @@ import java.util.ArrayList;
public class CommentsAdapter extends BaseRecyclerAdapter> {
- public CommentsAdapter(@NonNull ArrayList eventsModels) {
+ private final OnToggleView onToggleView;
+ private final String login;
+
+ public CommentsAdapter(@NonNull ArrayList eventsModels, @NonNull OnToggleView onToggleView) {
super(eventsModels);
+ this.onToggleView = onToggleView;
+ this.login = Login.getUser().getLogin();
}
@Override protected CommentsViewHolder viewHolder(ViewGroup parent, int viewType) {
- return CommentsViewHolder.newInstance(parent, this);
+ return CommentsViewHolder.newInstance(parent, this, login, onToggleView);
}
@Override protected void onBindView(CommentsViewHolder holder, int position) {
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/CommitFilesAdapter.java b/app/src/main/java/com/fastaccess/ui/adapter/CommitFilesAdapter.java
index 43fc1ffb..fe1f8e16 100644
--- a/app/src/main/java/com/fastaccess/ui/adapter/CommitFilesAdapter.java
+++ b/app/src/main/java/com/fastaccess/ui/adapter/CommitFilesAdapter.java
@@ -4,6 +4,7 @@ import android.support.annotation.NonNull;
import android.view.ViewGroup;
import com.fastaccess.data.dao.CommitFileModel;
+import com.fastaccess.ui.adapter.callback.OnToggleView;
import com.fastaccess.ui.adapter.viewholder.CommitFilesViewHolder;
import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter;
import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder;
@@ -17,21 +18,16 @@ import java.util.ArrayList;
public class CommitFilesAdapter extends BaseRecyclerAdapter> {
- public interface OnTogglePatch {
- void onToggle(int position, boolean isCollapsed);
- boolean isCollapsed(int position);
- }
+ @NonNull private OnToggleView onToggleView;
- @NonNull private OnTogglePatch onTogglePatch;
-
- public CommitFilesAdapter(@NonNull ArrayList eventsModels, @NonNull OnTogglePatch onTogglePatch) {
+ public CommitFilesAdapter(@NonNull ArrayList eventsModels, @NonNull OnToggleView onToggleView) {
super(eventsModels);
- this.onTogglePatch = onTogglePatch;
+ this.onToggleView = onToggleView;
}
@Override protected CommitFilesViewHolder viewHolder(ViewGroup parent, int viewType) {
- return CommitFilesViewHolder.newInstance(parent, this, onTogglePatch);
+ return CommitFilesViewHolder.newInstance(parent, this, onToggleView);
}
@Override protected void onBindView(CommitFilesViewHolder holder, int position) {
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/callback/OnToggleView.java b/app/src/main/java/com/fastaccess/ui/adapter/callback/OnToggleView.java
new file mode 100644
index 00000000..eb92df92
--- /dev/null
+++ b/app/src/main/java/com/fastaccess/ui/adapter/callback/OnToggleView.java
@@ -0,0 +1,7 @@
+package com.fastaccess.ui.adapter.callback;
+
+public interface OnToggleView {
+ void onToggle(int position, boolean isCollapsed);
+
+ boolean isCollapsed(int position);
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommentsViewHolder.java
index 6f31bb01..9ebccbc3 100644
--- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommentsViewHolder.java
+++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommentsViewHolder.java
@@ -2,6 +2,8 @@ package com.fastaccess.ui.adapter.viewholder;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.v7.widget.AppCompatImageView;
+import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
@@ -10,6 +12,7 @@ import com.fastaccess.data.dao.model.Comment;
import com.fastaccess.data.dao.model.ReactionsModel;
import com.fastaccess.helper.InputHelper;
import com.fastaccess.helper.ParseDateFormat;
+import com.fastaccess.ui.adapter.callback.OnToggleView;
import com.fastaccess.ui.widgets.AvatarLayout;
import com.fastaccess.ui.widgets.FontTextView;
import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter;
@@ -32,24 +35,71 @@ public class CommentsViewHolder extends BaseViewHolder {
@BindView(R.id.thumbsDown) FontTextView thumbsDown;
@BindView(R.id.laugh) FontTextView laugh;
@BindView(R.id.sad) FontTextView sad;
- @BindView(R.id.hurray) FontTextView hurray;
+ @BindView(R.id.hurray) FontTextView hooray;
@BindView(R.id.heart) FontTextView heart;
+ @BindView(R.id.toggle) View toggle;
+ @BindView(R.id.delete) AppCompatImageView delete;
+ @BindView(R.id.reply) AppCompatImageView reply;
+ @BindView(R.id.edit) AppCompatImageView edit;
+ @BindView(R.id.commentOptions) View commentOptions;
+ @BindView(R.id.toggleHolder) View toggleHolder;
+ private String login;
+ private OnToggleView onToggleView;
@Override public void onClick(View v) {
- super.onClick(v);
+ if (v.getId() == R.id.toggle || v.getId() == R.id.toggleHolder) {
+ if (onToggleView != null) {
+ int position = getAdapterPosition();
+ onToggleView.onToggle(position, !onToggleView.isCollapsed(position));
+ }
+ } else {
+ switch (v.getId()) {
+ case R.id.heart:
+ break;
+ case R.id.sad:
+ break;
+ case R.id.thumbsDown:
+ break;
+ case R.id.thumbsUp:
+ break;
+ case R.id.laugh:
+ break;
+ case R.id.hurray:
+ break;
+ }
+ super.onClick(v);
+ }
}
- private CommentsViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter) {
+ private CommentsViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter,
+ @NonNull String login, @NonNull OnToggleView onToggleView) {
super(itemView, adapter);
+ this.login = login;
+ this.onToggleView = onToggleView;
+ itemView.setOnClickListener(null);
+ itemView.setOnLongClickListener(null);
+ reply.setOnClickListener(this);
+ edit.setOnClickListener(this);
+ delete.setOnClickListener(this);
+ toggleHolder.setOnClickListener(this);
+ laugh.setOnClickListener(this);
+ sad.setOnClickListener(this);
+ thumbsDown.setOnClickListener(this);
+ thumbsUp.setOnClickListener(this);
+ hooray.setOnClickListener(this);
+ heart.setOnClickListener(this);
}
- public static CommentsViewHolder newInstance(@NonNull ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter) {
- return new CommentsViewHolder(getView(viewGroup, R.layout.comments_row_item), adapter);
+ public static CommentsViewHolder newInstance(@NonNull ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter,
+ @NonNull String login, @NonNull OnToggleView onToggleView) {
+ return new CommentsViewHolder(getView(viewGroup, R.layout.comments_row_item), adapter, login, onToggleView);
}
@Override public void bind(@NonNull Comment commentsModel) {
if (commentsModel.getUser() != null) {
avatar.setUrl(commentsModel.getUser().getAvatarUrl(), commentsModel.getUser().getLogin());
+ delete.setVisibility(TextUtils.equals(commentsModel.getUser().getLogin(), login) ? View.VISIBLE : View.GONE);
+ edit.setVisibility(TextUtils.equals(commentsModel.getUser().getLogin(), login) ? View.VISIBLE : View.GONE);
} else {
avatar.setUrl(null, null);
}
@@ -65,8 +115,15 @@ public class CommentsViewHolder extends BaseViewHolder {
thumbsDown.setText(String.valueOf(reaction.getMinusOne()));
sad.setText(String.valueOf(reaction.getConfused()));
laugh.setText(String.valueOf(reaction.getLaugh()));
- hurray.setText(String.valueOf(reaction.getHooray()));
+ hooray.setText(String.valueOf(reaction.getHooray()));
heart.setText(String.valueOf(reaction.getHeart()));
}
+ if (onToggleView != null) onToggle(onToggleView.isCollapsed(getAdapterPosition()));
}
+
+ private void onToggle(boolean expanded) {
+ toggle.setRotation(!expanded ? 0.0F : 180F);
+ commentOptions.setVisibility(!expanded ? View.GONE : View.VISIBLE);
+ }
+
}
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitFilesViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitFilesViewHolder.java
index 96e14a79..80de51ca 100644
--- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitFilesViewHolder.java
+++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitFilesViewHolder.java
@@ -12,7 +12,7 @@ import android.view.ViewGroup;
import com.fastaccess.R;
import com.fastaccess.data.dao.CommitFileModel;
-import com.fastaccess.ui.adapter.CommitFilesAdapter;
+import com.fastaccess.ui.adapter.callback.OnToggleView;
import com.fastaccess.ui.widgets.DiffLineSpan;
import com.fastaccess.ui.widgets.FontTextView;
import com.fastaccess.ui.widgets.SpannableBuilder;
@@ -44,11 +44,11 @@ public class CommitFilesViewHolder extends BaseViewHolder {
@BindColor(R.color.patch_ref_color) int patchRefColor;
private String pathText;
- private CommitFilesAdapter.OnTogglePatch onTogglePatch;
+ private OnToggleView onToggleView;
@Override public void onClick(View v) {
int position = getAdapterPosition();
- onTogglePatch.onToggle(position, !onTogglePatch.isCollapsed(position));
+ onToggleView.onToggle(position, !onToggleView.isCollapsed(position));
}
private void onToggle(boolean expanded) {
@@ -64,14 +64,14 @@ public class CommitFilesViewHolder extends BaseViewHolder {
}
private CommitFilesViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter,
- @NonNull CommitFilesAdapter.OnTogglePatch onTogglePatch) {
+ @NonNull OnToggleView onToggleView) {
super(itemView, adapter);
- this.onTogglePatch = onTogglePatch;
+ this.onToggleView = onToggleView;
}
public static CommitFilesViewHolder newInstance(ViewGroup viewGroup, BaseRecyclerAdapter adapter,
- @NonNull CommitFilesAdapter.OnTogglePatch onTogglePatch) {
- return new CommitFilesViewHolder(getView(viewGroup, R.layout.commit_file_row_item), adapter, onTogglePatch);
+ @NonNull OnToggleView onToggleView) {
+ return new CommitFilesViewHolder(getView(viewGroup, R.layout.commit_file_row_item), adapter, onToggleView);
}
@Override public void bind(@NonNull CommitFileModel commit) {
@@ -94,7 +94,7 @@ public class CommitFilesViewHolder extends BaseViewHolder {
.append("\n")
.bold(String.valueOf(commit.getStatus())));
- onToggle(onTogglePatch.isCollapsed(getAdapterPosition()));
+ onToggle(onToggleView.isCollapsed(getAdapterPosition()));
}
private void setPatchText(@NonNull String text) {
diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsMvp.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsMvp.java
index e28c3e3d..d419941f 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsMvp.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsMvp.java
@@ -8,6 +8,7 @@ import android.support.v4.widget.SwipeRefreshLayout;
import com.fastaccess.data.dao.model.Comment;
import com.fastaccess.data.dao.model.User;
import com.fastaccess.provider.rest.loadmore.OnLoadMore;
+import com.fastaccess.ui.adapter.callback.OnToggleView;
import com.fastaccess.ui.base.mvp.BaseMvp;
import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder;
@@ -20,7 +21,7 @@ import java.util.ArrayList;
interface GistCommentsMvp {
interface View extends BaseMvp.FAView, SwipeRefreshLayout.OnRefreshListener,
- android.view.View.OnClickListener {
+ android.view.View.OnClickListener, OnToggleView {
void onNotifyAdapter();
diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsPresenter.java
index b726222c..a2182513 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsPresenter.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsPresenter.java
@@ -76,7 +76,6 @@ class GistCommentsPresenter extends BasePresenter implemen
return comments;
}
-
@Override public void onHandleDeletion(@Nullable Bundle bundle) {
if (bundle != null) {
long commId = bundle.getLong(BundleConstant.EXTRA, 0);
diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsView.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsView.java
index 5fb83456..1f96b729 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsView.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsView.java
@@ -10,6 +10,7 @@ import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import com.fastaccess.R;
+import com.fastaccess.data.dao.SparseBooleanArrayParcelable;
import com.fastaccess.data.dao.model.Comment;
import com.fastaccess.data.dao.model.User;
import com.fastaccess.helper.BundleConstant;
@@ -23,6 +24,7 @@ import com.fastaccess.ui.widgets.dialog.MessageDialogView;
import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView;
import butterknife.BindView;
+import icepick.State;
import static com.fastaccess.helper.BundleConstant.ExtraTYpe.EDIT_GIST_COMMENT_EXTRA;
import static com.fastaccess.helper.BundleConstant.ExtraTYpe.NEW_GIST_COMMENT_EXTRA;
@@ -36,7 +38,7 @@ public class GistCommentsView extends BaseFragment onLoadMore;
@@ -59,13 +61,14 @@ public class GistCommentsView extends BaseFragment impl
}
@Override public void onItemClick(int position, View v, Comment item) {
+ Login login = Login.getUser();
if (getView() != null) {
- if (item.getUser() != null) {
- Login login = Login.getUser();
+ if (v.getId() == R.id.delete) {
+ if (login != null && item.getUser().getLogin().equals(login.getLogin())) {
+ if (getView() != null) getView().onShowDeleteMsg(item.getId());
+ }
+ } else if (v.getId() == R.id.reply) {
+ getView().onTagUser(item.getUser());
+ } else if (v.getId() == R.id.edit) {
if (login != null && item.getUser().getLogin().equals(login.getLogin())) {
getView().onEditComment(item);
- } else {
- getView().onTagUser(item.getUser());
}
} else {
- getView().onTagUser(item.getUser());
+ handleReactions(v.getId(), item.getId(), v.getContext());
}
}
}
- @Override public void onItemLongClick(int position, View v, Comment item) {
- if (item.getUser() != null && TextUtils.equals(item.getUser().getLogin(), Login.getUser().getLogin())) {
- if (getView() != null) getView().onShowDeleteMsg(item.getId());
- } else {
- onItemClick(position, v, item);
+ private void handleReactions(@IdRes int id, long commentId, @NonNull Context context) {
+ 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.PLUS_ONE;
+ break;
+ case R.id.thumbsUp:
+ type = ReactionTypes.MINUS_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, true);
}
}
+
+ @Override public void onItemLongClick(int position, View v, Comment item) {
+ onItemClick(position, v, item);
+ }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsView.java
index d4107579..696dd2ca 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsView.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsView.java
@@ -10,6 +10,7 @@ import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import com.fastaccess.R;
+import com.fastaccess.data.dao.SparseBooleanArrayParcelable;
import com.fastaccess.data.dao.model.Comment;
import com.fastaccess.data.dao.model.User;
import com.fastaccess.helper.BundleConstant;
@@ -23,6 +24,7 @@ import com.fastaccess.ui.widgets.dialog.MessageDialogView;
import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView;
import butterknife.BindView;
+import icepick.State;
/**
* Created by Kosh on 11 Nov 2016, 12:36 PM
@@ -33,6 +35,8 @@ public class CommitCommentsView extends BaseFragment implem
}
@Override public void onItemClick(int position, View v, Comment item) {
+ Login login = Login.getUser();
if (getView() != null) {
- if (item.getUser() != null) {
- Login userModel = Login.getUser();
- if (userModel != null && item.getUser().getLogin().equals(userModel.getLogin())) {
+ if (v.getId() == R.id.delete) {
+ if (login != null && item.getUser().getLogin().equals(login.getLogin())) {
+ if (getView() != null) getView().onShowDeleteMsg(item.getId());
+ }
+ } else if (v.getId() == R.id.reply) {
+ getView().onTagUser(item.getUser());
+ } else if (v.getId() == R.id.edit) {
+ if (login != null && item.getUser().getLogin().equals(login.getLogin())) {
getView().onEditComment(item);
- } else {
- getView().onTagUser(item.getUser());
}
} else {
- getView().onTagUser(item.getUser());
+ handleReactions(v.getId(), item.getId(), v.getContext());
}
}
}
- @Override public void onItemLongClick(int position, View v, Comment item) {
- if (item.getUser() != null && TextUtils.equals(item.getUser().getLogin(), Login.getUser().getLogin())) {
- if (getView() != null) getView().onShowDeleteMsg(item.getId());
- } else {
- onItemClick(position, v, item);
+ private void handleReactions(@IdRes int id, long commentId, @NonNull Context context) {
+ 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.PLUS_ONE;
+ break;
+ case R.id.thumbsUp:
+ type = ReactionTypes.MINUS_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, false);
}
}
+
+ @Override public void onItemLongClick(int position, View v, Comment item) {
+ onItemClick(position, v, item);
+ }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/comments/IssueCommentsView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/comments/IssueCommentsView.java
index e43aa58d..fa00e03b 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/comments/IssueCommentsView.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/comments/IssueCommentsView.java
@@ -10,6 +10,7 @@ import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import com.fastaccess.R;
+import com.fastaccess.data.dao.SparseBooleanArrayParcelable;
import com.fastaccess.data.dao.model.Comment;
import com.fastaccess.data.dao.model.User;
import com.fastaccess.helper.BundleConstant;
@@ -24,6 +25,7 @@ import com.fastaccess.ui.widgets.dialog.MessageDialogView;
import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView;
import butterknife.BindView;
+import icepick.State;
import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt;
/**
@@ -35,6 +37,7 @@ public class IssueCommentsView extends BaseFragment
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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 f1c055a0..bcd24988 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
@@ -7,7 +7,6 @@
android:layout_height="wrap_content"
android:layout_margin="@dimen/grid_spacing"
android:background="@color/card_background"
- android:foreground="?android:selectableItemBackground"
android:paddingBottom="@dimen/spacing_normal"
android:paddingEnd="@dimen/spacing_xs_large"
android:paddingTop="@dimen/spacing_normal"
@@ -19,6 +18,7 @@
android:orientation="vertical">
@@ -39,7 +39,7 @@
android:layout_marginEnd="@dimen/spacing_normal"
android:layout_weight="1"
android:ellipsize="end"
- android:maxLines="1"
+ android:maxLines="2"
android:textColor="?android:textColorPrimary"
tools:text="When one acquires"/>
@@ -51,7 +51,17 @@
android:layout_gravity="center"
android:maxLines="1"
android:textColor="?android:attr/textColorSecondary"
- tools:text="50 minutes ago"/>
+ tools:text="50 minutes"/>
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d8733b95..ddf034c6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -321,4 +321,5 @@
My Gists
Changelog
Click to open notifications list or swipe to dismiss
+ Posting reaction %s
\ No newline at end of file