Refactor "trending hashtags" code (#3595)
- Fix codeformatting - Add new refreshing state - Disable LogConditional lint rule - Update lint-baseline
This commit is contained in:
parent
071e00774e
commit
f23c0cc634
13 changed files with 335 additions and 480 deletions
|
|
@ -1,41 +0,0 @@
|
|||
/* Copyright 2023 Tusky Contributors
|
||||
*
|
||||
* This file is a part of Tusky.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
package com.keylesspalace.tusky.adapter
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.keylesspalace.tusky.R
|
||||
import com.keylesspalace.tusky.databinding.ItemTrendingDateBinding
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
import java.util.TimeZone
|
||||
|
||||
class TrendingDateViewHolder(
|
||||
private val binding: ItemTrendingDateBinding
|
||||
) : RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
private val dateFormat = SimpleDateFormat("EEE dd MMM yyyy", Locale.getDefault()).apply {
|
||||
this.timeZone = TimeZone.getDefault()
|
||||
}
|
||||
|
||||
fun setup(start: Date, end: Date) {
|
||||
binding.dates.text = itemView.context.getString(
|
||||
R.string.date_range,
|
||||
dateFormat.format(start),
|
||||
dateFormat.format(end)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
/* Copyright 2023 Tusky Contributors
|
||||
*
|
||||
* This file is a part of Tusky.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
||||
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||
* Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
package com.keylesspalace.tusky.adapter
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.keylesspalace.tusky.R
|
||||
import com.keylesspalace.tusky.databinding.ItemTrendingCellBinding
|
||||
import com.keylesspalace.tusky.entity.TrendingTagHistory
|
||||
import com.keylesspalace.tusky.interfaces.LinkListener
|
||||
import com.keylesspalace.tusky.util.formatNumber
|
||||
import com.keylesspalace.tusky.viewdata.TrendingViewData
|
||||
|
||||
class TrendingTagViewHolder(
|
||||
private val binding: ItemTrendingCellBinding
|
||||
) : RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
fun setup(
|
||||
tagViewData: TrendingViewData.Tag,
|
||||
maxTrendingValue: Long,
|
||||
trendingListener: LinkListener
|
||||
) {
|
||||
val reversedHistory = tagViewData.tag.history.reversed()
|
||||
setGraph(reversedHistory, maxTrendingValue)
|
||||
setTag(tagViewData.tag.name)
|
||||
|
||||
val totalUsage = tagViewData.tag.history.sumOf { it.uses.toLongOrNull() ?: 0 }
|
||||
binding.totalUsage.text = formatNumber(totalUsage)
|
||||
|
||||
val totalAccounts = tagViewData.tag.history.sumOf { it.accounts.toLongOrNull() ?: 0 }
|
||||
binding.totalAccounts.text = formatNumber(totalAccounts)
|
||||
|
||||
binding.currentUsage.text = reversedHistory.last().uses
|
||||
binding.currentAccounts.text = reversedHistory.last().accounts
|
||||
|
||||
itemView.setOnClickListener {
|
||||
trendingListener.onViewTag(tagViewData.tag.name)
|
||||
}
|
||||
|
||||
setAccessibility(totalAccounts, tagViewData.tag.name)
|
||||
}
|
||||
|
||||
private fun setGraph(history: List<TrendingTagHistory>, maxTrendingValue: Long) {
|
||||
binding.graph.maxTrendingValue = maxTrendingValue
|
||||
binding.graph.primaryLineData = history
|
||||
.mapNotNull { it.uses.toLongOrNull() }
|
||||
binding.graph.secondaryLineData = history
|
||||
.mapNotNull { it.accounts.toLongOrNull() }
|
||||
}
|
||||
|
||||
private fun setTag(tag: String) {
|
||||
binding.tag.text = binding.root.context.getString(R.string.title_tag, tag)
|
||||
}
|
||||
|
||||
private fun setAccessibility(totalAccounts: Long, tag: String) {
|
||||
itemView.contentDescription =
|
||||
itemView.context.getString(R.string.accessibility_talking_about_tag, totalAccounts, tag)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue