aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java146
1 files changed, 146 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java
new file mode 100644
index 000000000..9272c2e4f
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderUserListActivity.java
@@ -0,0 +1,146 @@
+package org.wordpress.android.ui.reader;
+
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.Toolbar;
+import android.view.View;
+
+import org.wordpress.android.R;
+import org.wordpress.android.datasets.ReaderCommentTable;
+import org.wordpress.android.datasets.ReaderPostTable;
+import org.wordpress.android.datasets.ReaderUserTable;
+import org.wordpress.android.models.ReaderUserList;
+import org.wordpress.android.ui.reader.adapters.ReaderUserAdapter;
+import org.wordpress.android.ui.reader.utils.ReaderUtils;
+import org.wordpress.android.ui.reader.views.ReaderRecyclerView;
+import org.wordpress.android.util.DisplayUtils;
+import org.wordpress.android.widgets.RecyclerItemDecoration;
+
+/*
+ * displays a list of users who like a specific reader post
+ */
+public class ReaderUserListActivity extends AppCompatActivity {
+
+ private ReaderRecyclerView mRecyclerView;
+ private ReaderUserAdapter mAdapter;
+ private int mRestorePosition;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.reader_activity_userlist);
+ setTitle(null);
+
+ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ if (toolbar != null) {
+ setSupportActionBar(toolbar);
+ toolbar.setNavigationOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ onBackPressed();
+ }
+ });
+ }
+
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ getSupportActionBar().setDisplayShowTitleEnabled(true);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
+ if (savedInstanceState != null) {
+ mRestorePosition = savedInstanceState.getInt(ReaderConstants.KEY_RESTORE_POSITION);
+ }
+
+ int spacingHorizontal = 0;
+ int spacingVertical = DisplayUtils.dpToPx(this, 1);
+ mRecyclerView = (ReaderRecyclerView) findViewById(R.id.recycler_view);
+ mRecyclerView.addItemDecoration(new RecyclerItemDecoration(spacingHorizontal, spacingVertical));
+
+ long blogId = getIntent().getLongExtra(ReaderConstants.ARG_BLOG_ID, 0);
+ long postId = getIntent().getLongExtra(ReaderConstants.ARG_POST_ID, 0);
+ long commentId = getIntent().getLongExtra(ReaderConstants.ARG_COMMENT_ID, 0);
+ loadUsers(blogId, postId, commentId);
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ int position = ((LinearLayoutManager) mRecyclerView.getLayoutManager()).findFirstVisibleItemPosition();
+ if (position > 0) {
+ outState.putInt(ReaderConstants.KEY_RESTORE_POSITION, position);
+ }
+ super.onSaveInstanceState(outState);
+ }
+
+ private ReaderUserAdapter getAdapter() {
+ if (mAdapter == null) {
+ mAdapter = new ReaderUserAdapter(this);
+ mAdapter.setDataLoadedListener(new ReaderInterfaces.DataLoadedListener() {
+ @Override
+ public void onDataLoaded(boolean isEmpty) {
+ if (!isEmpty && mRestorePosition > 0) {
+ mRecyclerView.scrollToPosition(mRestorePosition);
+ }
+ mRestorePosition = 0;
+ }
+ });
+ mRecyclerView.setAdapter(mAdapter);
+ }
+ return mAdapter;
+ }
+
+ private void loadUsers(final long blogId,
+ final long postId,
+ final long commentId) {
+ new Thread() {
+ @Override
+ public void run() {
+ final String title = getTitleString(blogId, postId, commentId);
+
+ final ReaderUserList users;
+ if (commentId == 0) {
+ // commentId is empty (not passed), so we're showing users who like a post
+ users = ReaderUserTable.getUsersWhoLikePost(
+ blogId,
+ postId,
+ ReaderConstants.READER_MAX_USERS_TO_DISPLAY);
+ } else {
+ // commentId is non-empty, so we're showing users who like a comment
+ users = ReaderUserTable.getUsersWhoLikeComment(
+ blogId,
+ commentId,
+ ReaderConstants.READER_MAX_USERS_TO_DISPLAY);
+ }
+
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ if (!isFinishing()) {
+ setTitle(title);
+ getAdapter().setUsers(users);
+ }
+ }
+ });
+ }
+ }.start();
+ }
+
+ private String getTitleString(final long blogId,
+ final long postId,
+ final long commentId) {
+ final int numLikes;
+ final boolean isLikedByCurrentUser;
+ if (commentId == 0) {
+ numLikes = ReaderPostTable.getNumLikesForPost(blogId, postId);
+ isLikedByCurrentUser = ReaderPostTable.isPostLikedByCurrentUser(blogId, postId);
+ } else {
+ numLikes = ReaderCommentTable.getNumLikesForComment(blogId, postId, commentId);
+ isLikedByCurrentUser = ReaderCommentTable.isCommentLikedByCurrentUser(blogId, postId, commentId);
+ }
+ return ReaderUtils.getLongLikeLabelText(this, numLikes, isLikedByCurrentUser);
+ }
+
+}