mirror of
https://github.com/tuskyapp/Tusky
synced 2025-02-10 13:00:50 +01:00
Don't repeat inline tags in the trailing hashtag bar (#4811)
This commit is contained in:
parent
02da325e37
commit
8937d0abf0
@ -86,13 +86,14 @@ fun setClickableText(
|
|||||||
trailingHashtagView == null || tags.isNullOrEmpty() -> Pair(spannableContent.length, emptyList())
|
trailingHashtagView == null || tags.isNullOrEmpty() -> Pair(spannableContent.length, emptyList())
|
||||||
else -> getTrailingHashtags(spannableContent)
|
else -> getTrailingHashtags(spannableContent)
|
||||||
}
|
}
|
||||||
var inlineHashtagSpanCount = 0
|
val inlineHashtags = mutableListOf<CharSequence>()
|
||||||
|
|
||||||
view.text = spannableContent.apply {
|
view.text = spannableContent.apply {
|
||||||
styleQuoteSpans(view)
|
styleQuoteSpans(view)
|
||||||
getSpans(0, endOfContent, URLSpan::class.java).forEach { span ->
|
getSpans(0, endOfContent, URLSpan::class.java).forEach { span ->
|
||||||
if (get(getSpanStart(span)) == '#') {
|
val start = getSpanStart(span)
|
||||||
inlineHashtagSpanCount += 1
|
if (get(start) == '#') {
|
||||||
|
inlineHashtags.add(subSequence(start + 1, getSpanEnd(span)))
|
||||||
}
|
}
|
||||||
setClickableText(span, this, mentions, tags, listener)
|
setClickableText(span, this, mentions, tags, listener)
|
||||||
}
|
}
|
||||||
@ -100,12 +101,18 @@ fun setClickableText(
|
|||||||
|
|
||||||
view.movementMethod = NoTrailingSpaceLinkMovementMethod
|
view.movementMethod = NoTrailingSpaceLinkMovementMethod
|
||||||
|
|
||||||
val showHashtagBar = (trailingHashtags.isNotEmpty() || inlineHashtagSpanCount != tags?.size)
|
val showHashtagBar = (trailingHashtags.isNotEmpty() || inlineHashtags.size != tags?.size)
|
||||||
// I don't _love_ setting the visibility here, but the alternative is to duplicate the logic in other places
|
// I don't _love_ setting the visibility here, but the alternative is to duplicate the logic in other places
|
||||||
trailingHashtagView?.visible(showHashtagBar)
|
trailingHashtagView?.visible(showHashtagBar)
|
||||||
|
|
||||||
if (showHashtagBar) {
|
if (showHashtagBar) {
|
||||||
trailingHashtagView?.apply { text = buildTrailingHashtagText(tags, trailingHashtags, listener) }
|
trailingHashtagView?.apply {
|
||||||
|
text = buildTrailingHashtagText(
|
||||||
|
tags?.filterNot { tag -> inlineHashtags.any { it.contentEquals(tag.name, ignoreCase = true) } },
|
||||||
|
trailingHashtags,
|
||||||
|
listener,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user