mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
Task ViewHolder binding Markdown parsing check & DiffUtil
- Check if text contains markdown before setting title/notes - Override getDiffCallback to enable RecyclerView DiffUtil updates
This commit is contained in:
parent
86edc4ac7e
commit
0981e78e23
2 changed files with 23 additions and 21 deletions
|
|
@ -13,6 +13,7 @@ import com.habitrpg.android.habitica.models.tasks.ChecklistItem
|
|||
import com.habitrpg.android.habitica.models.tasks.Task
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.adapter.BaseRecyclerViewAdapter
|
||||
import com.habitrpg.android.habitica.ui.adapter.DiffCallback
|
||||
import com.habitrpg.android.habitica.ui.viewHolders.tasks.BaseTaskViewHolder
|
||||
import com.habitrpg.android.habitica.ui.viewmodels.TasksViewModel
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
|
|
@ -88,6 +89,13 @@ abstract class RealmBaseTasksRecyclerViewAdapter(
|
|||
}
|
||||
}
|
||||
|
||||
override fun getDiffCallback(
|
||||
oldList: List<Task>,
|
||||
newList: List<Task>
|
||||
): DiffCallback<Task>? {
|
||||
return object : DiffCallback<Task>(oldList, newList) {}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return data.size + if (showAdventureGuide) 1 else 0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -169,29 +169,23 @@ abstract class BaseTaskViewHolder(
|
|||
notesTextView?.visibility = View.GONE
|
||||
}
|
||||
|
||||
titleTextView.text = data.text
|
||||
scope.launch(Dispatchers.IO) {
|
||||
if (data.text.isNotEmpty() && MarkdownParser.containsMarkdown(data.text)) {
|
||||
val parsedText = MarkdownParser.parseMarkdown(data.text)
|
||||
withContext(Dispatchers.Main) {
|
||||
data.parsedText = parsedText
|
||||
titleTextView.setParsedMarkdown(parsedText)
|
||||
}
|
||||
}
|
||||
val titleText = data.text ?: ""
|
||||
if (!MarkdownParser.containsMarkdown(titleText)) {
|
||||
titleTextView.text = titleText
|
||||
} else {
|
||||
val parsedText = MarkdownParser.parseMarkdown(titleText)
|
||||
data.parsedText = parsedText
|
||||
titleTextView.setParsedMarkdown(parsedText)
|
||||
}
|
||||
|
||||
if (displayMode != "minimal") {
|
||||
notesTextView?.text = data.notes
|
||||
data.notes?.let { notes ->
|
||||
scope.launch(Dispatchers.IO) {
|
||||
if (notes.isEmpty() || !MarkdownParser.containsMarkdown(notes)) {
|
||||
return@launch
|
||||
}
|
||||
val parsedNotes = MarkdownParser.parseMarkdown(notes)
|
||||
withContext(Dispatchers.Main) {
|
||||
data.parsedNotes = parsedNotes
|
||||
notesTextView?.setParsedMarkdown(parsedNotes)
|
||||
}
|
||||
}
|
||||
val notes = data.notes ?: ""
|
||||
if (!MarkdownParser.containsMarkdown(notes)) {
|
||||
notesTextView?.text = notes
|
||||
} else {
|
||||
val parsedNotes = MarkdownParser.parseMarkdown(notes)
|
||||
data.parsedNotes = parsedNotes
|
||||
notesTextView?.setParsedMarkdown(parsedNotes)
|
||||
}
|
||||
} else {
|
||||
notesTextView?.visibility = View.GONE
|
||||
|
|
|
|||
Loading…
Reference in a new issue