Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • circles/circles-android
1 result
Show changes
Commits on Source (2)
...@@ -19,6 +19,17 @@ abstract class DmTextMessageViewHolder( ...@@ -19,6 +19,17 @@ abstract class DmTextMessageViewHolder(
abstract val tvMessage: TextView? abstract val tvMessage: TextView?
protected fun initListeners() {
setListeners()
tvMessage?.apply {
handleLinkClick(this)
setOnLongClickListener {
post?.let { dmOptionsListener.onShowMenuClicked(it.id) }
true
}
}
}
override fun bindHolderSpecific(post: Post) { override fun bindHolderSpecific(post: Post) {
bindTextMessage(post) bindTextMessage(post)
} }
...@@ -48,8 +59,7 @@ class DmMyTextMessageViewHolder( ...@@ -48,8 +59,7 @@ class DmMyTextMessageViewHolder(
get() = binding.tvMessage get() = binding.tvMessage
init { init {
setListeners() initListeners()
handleLinkClick(binding.tvMessage)
} }
} }
...@@ -73,8 +83,7 @@ class DmOtherTextMessageViewHolder( ...@@ -73,8 +83,7 @@ class DmOtherTextMessageViewHolder(
get() = binding.tvMessage get() = binding.tvMessage
init { init {
setListeners() initListeners()
handleLinkClick(binding.tvMessage)
} }
} }
\ No newline at end of file
...@@ -43,9 +43,12 @@ abstract class DmViewHolder( ...@@ -43,9 +43,12 @@ abstract class DmViewHolder(
} }
} }
override fun onSingleTapConfirmed(e: MotionEvent): Boolean {
return true
}
override fun onDoubleTapEvent(e: MotionEvent) = true override fun onDoubleTapEvent(e: MotionEvent) = true
override fun onDown(e: MotionEvent) = true override fun onDown(e: MotionEvent) = true
}).apply { }).apply {
setIsLongpressEnabled(true) setIsLongpressEnabled(true)
} }
......
...@@ -3,11 +3,9 @@ package org.futo.circles.feature.timeline ...@@ -3,11 +3,9 @@ package org.futo.circles.feature.timeline
import android.text.Spannable import android.text.Spannable
import android.text.method.LinkMovementMethod import android.text.method.LinkMovementMethod
import android.text.style.URLSpan import android.text.style.URLSpan
import android.util.Patterns
import android.view.MotionEvent import android.view.MotionEvent
import android.widget.TextView import android.widget.TextView
import org.futo.circles.feature.timeline.list.OnLinkClickedListener import org.futo.circles.feature.timeline.list.OnLinkClickedListener
import org.matrix.android.sdk.api.extensions.tryOrNull
class InternalLinkMovementMethod(private val onLinkClickedListener: OnLinkClickedListener) : class InternalLinkMovementMethod(private val onLinkClickedListener: OnLinkClickedListener) :
LinkMovementMethod() { LinkMovementMethod() {
...@@ -27,15 +25,12 @@ class InternalLinkMovementMethod(private val onLinkClickedListener: OnLinkClicke ...@@ -27,15 +25,12 @@ class InternalLinkMovementMethod(private val onLinkClickedListener: OnLinkClicke
val link = buffer.getSpans(off, off, URLSpan::class.java) val link = buffer.getSpans(off, off, URLSpan::class.java)
link.getOrNull(0)?.let { span -> link.getOrNull(0)?.let { span ->
val spanStart = buffer.getSpanStart(span)
val spanEnd = buffer.getSpanEnd(span)
val message = tryOrNull { buffer.subSequence(spanStart, spanEnd).toString() }
val url = span.url val url = span.url
return if (message != url && !url.startsWith("tel")) { return if (url.contains("circles.futo.org")) {
super.onTouchEvent(widget, buffer, event)
} else {
onLinkClickedListener.onLinkClicked(url) onLinkClickedListener.onLinkClicked(url)
true true
} else {
super.onTouchEvent(widget, buffer, event)
} }
} }
......
...@@ -21,8 +21,8 @@ abstract class TimelineListItemViewHolder(view: View) : RecyclerView.ViewHolder( ...@@ -21,8 +21,8 @@ abstract class TimelineListItemViewHolder(view: View) : RecyclerView.ViewHolder(
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
protected fun handleLinkClick(textView: TextView?) { protected fun handleLinkClick(textView: TextView) {
textView?.apply { textView.apply {
movementMethod = InternalLinkMovementMethod(object : OnLinkClickedListener { movementMethod = InternalLinkMovementMethod(object : OnLinkClickedListener {
override fun onLinkClicked(url: String) { override fun onLinkClicked(url: String) {
showLinkConfirmation(context, url) showLinkConfirmation(context, url)
......
...@@ -77,8 +77,8 @@ abstract class PostViewHolder( ...@@ -77,8 +77,8 @@ abstract class PostViewHolder(
} }
postFooter?.setListener(optionsListener) postFooter?.setListener(optionsListener)
postHeader.setListener(optionsListener) postHeader.setListener(optionsListener)
readMoreTextView?.let { handleLinkClick(it) }
readMoreTextView?.apply { readMoreTextView?.apply {
handleLinkClick(this)
setNotCollapsableClickAction { openReplies() } setNotCollapsableClickAction { openReplies() }
setOnLongClickListener { setOnLongClickListener {
postHeader.showMenu() postHeader.showMenu()
......
...@@ -14,6 +14,9 @@ ...@@ -14,6 +14,9 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@color/chip_selected_color" android:background="@color/chip_selected_color"
android:clickable="true"
android:focusable="true"
android:foreground="?selectableItemBackground"
app:layout_constraintBottom_toBottomOf="@id/dmFooter" app:layout_constraintBottom_toBottomOf="@id/dmFooter"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@id/messageBarrier" app:layout_constraintStart_toStartOf="@id/messageBarrier"
...@@ -25,7 +28,6 @@ ...@@ -25,7 +28,6 @@
style="@style/body" style="@style/body"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:autoLink="web"
android:paddingHorizontal="12dp" android:paddingHorizontal="12dp"
android:paddingVertical="8dp" android:paddingVertical="8dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
......
...@@ -14,6 +14,9 @@ ...@@ -14,6 +14,9 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@color/post_card_background_color" android:background="@color/post_card_background_color"
android:clickable="true"
android:focusable="true"
android:foreground="?selectableItemBackground"
app:layout_constraintBottom_toBottomOf="@id/dmFooter" app:layout_constraintBottom_toBottomOf="@id/dmFooter"
app:layout_constraintEnd_toEndOf="@id/messageBarrier" app:layout_constraintEnd_toEndOf="@id/messageBarrier"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
...@@ -25,7 +28,6 @@ ...@@ -25,7 +28,6 @@
style="@style/body" style="@style/body"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:autoLink="web"
android:padding="12dp" android:padding="12dp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
android:id="@+id/lCreatePost" android:id="@+id/lCreatePost"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:animateLayoutChanges="true"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"> tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
......