Fix comments (still using linearlayout for now)
This commit is contained in:
parent
f9db1543a9
commit
a90a42f033
|
@ -5,18 +5,19 @@ import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.h.pixeldroid.R
|
import com.h.pixeldroid.R
|
||||||
import com.h.pixeldroid.databinding.ActivityPostBinding
|
import com.h.pixeldroid.databinding.ActivityPostBinding
|
||||||
import com.h.pixeldroid.databinding.CommentBinding
|
import com.h.pixeldroid.databinding.CommentBinding
|
||||||
import com.h.pixeldroid.utils.api.objects.Status
|
|
||||||
import com.h.pixeldroid.utils.api.objects.Status.Companion.POST_TAG
|
|
||||||
import com.h.pixeldroid.utils.BaseActivity
|
import com.h.pixeldroid.utils.BaseActivity
|
||||||
import com.h.pixeldroid.utils.ImageConverter
|
|
||||||
import com.h.pixeldroid.utils.api.PixelfedAPI
|
import com.h.pixeldroid.utils.api.PixelfedAPI
|
||||||
import com.h.pixeldroid.utils.api.objects.Mention
|
import com.h.pixeldroid.utils.api.objects.Mention
|
||||||
|
import com.h.pixeldroid.utils.api.objects.Status
|
||||||
|
import com.h.pixeldroid.utils.api.objects.Status.Companion.POST_COMMENT_TAG
|
||||||
|
import com.h.pixeldroid.utils.api.objects.Status.Companion.POST_TAG
|
||||||
import com.h.pixeldroid.utils.api.objects.Status.Companion.VIEW_COMMENTS_TAG
|
import com.h.pixeldroid.utils.api.objects.Status.Companion.VIEW_COMMENTS_TAG
|
||||||
import com.h.pixeldroid.utils.displayDimensionsInPx
|
import com.h.pixeldroid.utils.displayDimensionsInPx
|
||||||
import retrofit2.HttpException
|
import retrofit2.HttpException
|
||||||
|
@ -38,7 +39,8 @@ class PostActivity : BaseActivity() {
|
||||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
|
||||||
status = intent.getSerializableExtra(POST_TAG) as Status
|
status = intent.getSerializableExtra(POST_TAG) as Status
|
||||||
val viewComments = intent.getSerializableExtra(VIEW_COMMENTS_TAG) as Boolean
|
val viewComments: Boolean = (intent.getSerializableExtra(VIEW_COMMENTS_TAG) ?: false) as Boolean
|
||||||
|
val postComment: Boolean = (intent.getSerializableExtra(POST_COMMENT_TAG) ?: false) as Boolean
|
||||||
|
|
||||||
val user = db.userDao().getActiveUser()
|
val user = db.userDao().getActiveUser()
|
||||||
|
|
||||||
|
@ -52,10 +54,23 @@ class PostActivity : BaseActivity() {
|
||||||
|
|
||||||
holder.bind(status, apiHolder.api!!, db, lifecycleScope, displayDimensionsInPx(), isActivity = true)
|
holder.bind(status, apiHolder.api!!, db, lifecycleScope, displayDimensionsInPx(), isActivity = true)
|
||||||
|
|
||||||
val credential: String = "Bearer $accessToken"
|
val credential = "Bearer $accessToken"
|
||||||
activateCommenter(credential)
|
activateCommenter(credential)
|
||||||
|
|
||||||
if(viewComments){
|
if(viewComments || postComment){
|
||||||
|
//Scroll already down as much as possible (since comments are not loaded yet)
|
||||||
|
binding.scrollview.requestChildFocus(binding.editComment, binding.editComment)
|
||||||
|
|
||||||
|
//Open keyboard if we want to post a comment
|
||||||
|
if(postComment && binding.editComment.requestFocus()) {
|
||||||
|
window.setSoftInputMode(SOFT_INPUT_STATE_VISIBLE)
|
||||||
|
binding.editComment.requestFocus()
|
||||||
|
}
|
||||||
|
|
||||||
|
// also retrieve comments if we're not posting the comment
|
||||||
|
if(!postComment) retrieveComments(apiHolder.api!!, credential)
|
||||||
|
}
|
||||||
|
binding.postFragmentSingle.viewComments.setOnClickListener {
|
||||||
retrieveComments(apiHolder.api!!, credential)
|
retrieveComments(apiHolder.api!!, credential)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,10 +81,7 @@ class PostActivity : BaseActivity() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun activateCommenter(credential: String) {
|
private fun activateCommenter(credential: String) {
|
||||||
//Toggle comment button
|
//Activate commenter
|
||||||
toggleCommentInput()
|
|
||||||
|
|
||||||
//Activate commenterpostPicture
|
|
||||||
binding.submitComment.setOnClickListener {
|
binding.submitComment.setOnClickListener {
|
||||||
val textIn = binding.editComment.text
|
val textIn = binding.editComment.text
|
||||||
//Open text input
|
//Open text input
|
||||||
|
@ -88,33 +100,9 @@ class PostActivity : BaseActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun toggleCommentInput() {
|
private fun addComment(context: Context, commentContainer: LinearLayout,
|
||||||
//Toggle comment button
|
commentUsername: String, commentContent: String, mentions: List<Mention>,
|
||||||
binding.postFragmentSingle.commenter.setOnClickListener {
|
credential: String) {
|
||||||
when(binding.commentIn.visibility) {
|
|
||||||
View.VISIBLE -> {
|
|
||||||
binding.commentIn.visibility = View.GONE
|
|
||||||
ImageConverter.setImageFromDrawable(
|
|
||||||
binding.root,
|
|
||||||
binding.postFragmentSingle.commenter,
|
|
||||||
R.drawable.ic_comment_empty
|
|
||||||
)
|
|
||||||
}
|
|
||||||
View.GONE -> {
|
|
||||||
binding.commentIn.visibility = View.VISIBLE
|
|
||||||
ImageConverter.setImageFromDrawable(
|
|
||||||
binding.root,
|
|
||||||
binding.postFragmentSingle.commenter,
|
|
||||||
R.drawable.ic_comment_blue
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun addComment(context: Context, commentContainer: LinearLayout,
|
|
||||||
commentUsername: String, commentContent: String, mentions: List<Mention>,
|
|
||||||
credential: String) {
|
|
||||||
|
|
||||||
|
|
||||||
val itemBinding = CommentBinding.inflate(
|
val itemBinding = CommentBinding.inflate(
|
||||||
|
@ -148,6 +136,8 @@ class PostActivity : BaseActivity() {
|
||||||
}
|
}
|
||||||
binding.commentContainer.visibility = View.VISIBLE
|
binding.commentContainer.visibility = View.VISIBLE
|
||||||
|
|
||||||
|
//Focus the comments
|
||||||
|
binding.scrollview.requestChildFocus(binding.commentContainer, binding.commentContainer)
|
||||||
} catch (exception: IOException) {
|
} catch (exception: IOException) {
|
||||||
Log.e("COMMENT FETCH ERROR", exception.toString())
|
Log.e("COMMENT FETCH ERROR", exception.toString())
|
||||||
} catch (exception: HttpException) {
|
} catch (exception: HttpException) {
|
||||||
|
|
|
@ -25,6 +25,7 @@ import com.h.pixeldroid.utils.ImageConverter
|
||||||
import com.h.pixeldroid.utils.api.PixelfedAPI
|
import com.h.pixeldroid.utils.api.PixelfedAPI
|
||||||
import com.h.pixeldroid.utils.api.objects.Attachment
|
import com.h.pixeldroid.utils.api.objects.Attachment
|
||||||
import com.h.pixeldroid.utils.api.objects.Status
|
import com.h.pixeldroid.utils.api.objects.Status
|
||||||
|
import com.h.pixeldroid.utils.api.objects.Status.Companion.POST_COMMENT_TAG
|
||||||
import com.h.pixeldroid.utils.api.objects.Status.Companion.POST_TAG
|
import com.h.pixeldroid.utils.api.objects.Status.Companion.POST_TAG
|
||||||
import com.h.pixeldroid.utils.api.objects.Status.Companion.VIEW_COMMENTS_TAG
|
import com.h.pixeldroid.utils.api.objects.Status.Companion.VIEW_COMMENTS_TAG
|
||||||
import com.h.pixeldroid.utils.db.AppDatabase
|
import com.h.pixeldroid.utils.db.AppDatabase
|
||||||
|
@ -68,8 +69,7 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
||||||
}
|
}
|
||||||
|
|
||||||
//Setup the post layout
|
//Setup the post layout
|
||||||
val picRequest = Glide.with(itemView)
|
val picRequest = Glide.with(itemView).asDrawable().fitCenter()
|
||||||
.asDrawable().fitCenter()
|
|
||||||
|
|
||||||
val user = db.userDao().getActiveUser()!!
|
val user = db.userDao().getActiveUser()!!
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//region buttons
|
||||||
private fun activateButtons(
|
private fun activateButtons(
|
||||||
api: PixelfedAPI,
|
api: PixelfedAPI,
|
||||||
db: AppDatabase,
|
db: AppDatabase,
|
||||||
|
@ -220,7 +220,22 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
||||||
lifecycleScope
|
lifecycleScope
|
||||||
)
|
)
|
||||||
|
|
||||||
showComments(api, credential, lifecycleScope, isActivity)
|
if(isActivity){
|
||||||
|
binding.commenter.visibility = View.INVISIBLE
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
binding.commenter.setOnClickListener {
|
||||||
|
lifecycleScope.launchWhenCreated {
|
||||||
|
//Open status in activity
|
||||||
|
val intent = Intent(it.context, PostActivity::class.java)
|
||||||
|
intent.putExtra(POST_TAG, status)
|
||||||
|
intent.putExtra(POST_COMMENT_TAG, true)
|
||||||
|
it.context.startActivity(intent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
showComments(lifecycleScope, isActivity)
|
||||||
|
|
||||||
activateMoreButton(api, db, lifecycleScope)
|
activateMoreButton(api, db, lifecycleScope)
|
||||||
}
|
}
|
||||||
|
@ -515,14 +530,13 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//endregion
|
||||||
|
|
||||||
private fun showComments(
|
private fun showComments(
|
||||||
api: PixelfedAPI,
|
lifecycleScope: LifecycleCoroutineScope,
|
||||||
credential: String,
|
isActivity: Boolean
|
||||||
lifecycleScope: LifecycleCoroutineScope,
|
|
||||||
isActivity: Boolean
|
|
||||||
) {
|
) {
|
||||||
//Show all comments of a post
|
//Show number of comments on the post
|
||||||
if (status?.replies_count == 0) {
|
if (status?.replies_count == 0) {
|
||||||
binding.viewComments.text = binding.root.context.getString(R.string.NoCommentsToShow)
|
binding.viewComments.text = binding.root.context.getString(R.string.NoCommentsToShow)
|
||||||
} else {
|
} else {
|
||||||
|
@ -531,14 +545,7 @@ class StatusViewHolder(val binding: PostFragmentBinding) : RecyclerView.ViewHold
|
||||||
status?.replies_count ?: 0,
|
status?.replies_count ?: 0,
|
||||||
status?.replies_count ?: 0
|
status?.replies_count ?: 0
|
||||||
)
|
)
|
||||||
if(isActivity) {
|
if(!isActivity) {
|
||||||
setOnClickListener {
|
|
||||||
lifecycleScope.launchWhenCreated {
|
|
||||||
//Retrieve the comments
|
|
||||||
//TODO retrieveComments(api, credential)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
lifecycleScope.launchWhenCreated {
|
lifecycleScope.launchWhenCreated {
|
||||||
//Open status in activity
|
//Open status in activity
|
||||||
|
|
|
@ -65,6 +65,7 @@ open class Status(
|
||||||
companion object {
|
companion object {
|
||||||
const val POST_TAG = "postTag"
|
const val POST_TAG = "postTag"
|
||||||
const val VIEW_COMMENTS_TAG = "view_comments_tag"
|
const val VIEW_COMMENTS_TAG = "view_comments_tag"
|
||||||
|
const val POST_COMMENT_TAG = "post_comment_tag"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getPostUrl() : String? = media_attachments?.firstOrNull()?.url
|
fun getPostUrl() : String? = media_attachments?.firstOrNull()?.url
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:drawable="@drawable/ic_comment_empty"
|
||||||
|
android:state_pressed="false" />
|
||||||
|
<item
|
||||||
|
android:drawable="@drawable/ic_comment_blue"
|
||||||
|
android:state_pressed="true"/>
|
||||||
|
</selector>
|
|
@ -4,7 +4,8 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".posts.PostActivity">
|
tools:context=".posts.PostActivity"
|
||||||
|
android:id="@+id/scrollview">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
android:layout_width="30dp"
|
android:layout_width="30dp"
|
||||||
android:layout_height="30dp"
|
android:layout_height="30dp"
|
||||||
android:padding="4dp"
|
android:padding="4dp"
|
||||||
android:src="@drawable/ic_comment_empty"
|
android:src="@drawable/selector_commenter"
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/liker"
|
app:layout_constraintBottom_toBottomOf="@+id/liker"
|
||||||
app:layout_constraintEnd_toStartOf="@id/reblogger"
|
app:layout_constraintEnd_toStartOf="@id/reblogger"
|
||||||
app:layout_constraintStart_toEndOf="@id/liker"
|
app:layout_constraintStart_toEndOf="@id/liker"
|
||||||
|
|
Loading…
Reference in New Issue