Change chapter update notification to show chapter numbers
Cette révision appartient à :
Parent
79bc1290ae
révision
a1fadce7c6
2 fichiers modifiés avec 38 ajouts et 10 suppressions
|
@ -45,6 +45,8 @@ import rx.schedulers.Schedulers
|
|||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.text.DecimalFormat
|
||||
import java.text.DecimalFormatSymbols
|
||||
import java.util.ArrayList
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
|
||||
|
@ -123,6 +125,8 @@ class LibraryUpdateService(
|
|||
*/
|
||||
const val KEY_TARGET = "target"
|
||||
|
||||
private const val NOTIF_MAX_CHAPTERS = 5
|
||||
private const val NOTIF_TITLE_MAX_LEN = 45
|
||||
private const val NOTIF_ICON_SIZE = 192
|
||||
|
||||
/**
|
||||
|
@ -466,11 +470,11 @@ class LibraryUpdateService(
|
|||
notify(Notifications.ID_NEW_CHAPTERS, notification(Notifications.CHANNEL_NEW_CHAPTERS) {
|
||||
setContentTitle(getString(R.string.notification_new_chapters))
|
||||
if (updates.size == 1) {
|
||||
setContentText(updates.first().first.title)
|
||||
setContentText(updates.first().first.title.chop(NOTIF_TITLE_MAX_LEN))
|
||||
} else {
|
||||
setContentText(resources.getQuantityString(R.plurals.notification_new_chapters_text, updates.size, updates.size))
|
||||
setStyle(NotificationCompat.BigTextStyle().bigText(updates.joinToString("\n") {
|
||||
it.first.title
|
||||
it.first.title.chop(NOTIF_TITLE_MAX_LEN)
|
||||
}))
|
||||
}
|
||||
|
||||
|
@ -495,16 +499,12 @@ class LibraryUpdateService(
|
|||
}
|
||||
|
||||
private fun createNewChaptersNotification(manga: Manga, chapters: Array<Chapter>): Notification {
|
||||
val chapterNames = chapters.map { chapter -> chapter.name }.toSet()
|
||||
|
||||
return notification(Notifications.CHANNEL_NEW_CHAPTERS) {
|
||||
setContentTitle(manga.title)
|
||||
val chaptersNames = if (chapterNames.size > 5) {
|
||||
"${chapterNames.take(4).joinToString(", ")}, " +
|
||||
resources.getString(R.string.notification_and_n_more, (chapterNames.size - 4))
|
||||
} else chapterNames.joinToString(", ")
|
||||
setContentText(chaptersNames)
|
||||
setStyle(NotificationCompat.BigTextStyle().bigText(chaptersNames))
|
||||
|
||||
val description = getChaptersDescriptionString(chapters)
|
||||
setContentText(description)
|
||||
setStyle(NotificationCompat.BigTextStyle().bigText(description))
|
||||
|
||||
setSmallIcon(R.drawable.ic_tachi)
|
||||
|
||||
|
@ -555,6 +555,30 @@ class LibraryUpdateService(
|
|||
}
|
||||
}
|
||||
|
||||
private fun getChaptersDescriptionString(chapters: Array<Chapter>): String {
|
||||
val formatter = DecimalFormat("#.###", DecimalFormatSymbols()
|
||||
.apply { decimalSeparator = '.' })
|
||||
|
||||
val chapterNumbers = chapters
|
||||
.sortedBy { it.chapter_number }
|
||||
.map { formatter.format(it.chapter_number) }
|
||||
.toSet()
|
||||
|
||||
val shouldTruncate = chapterNumbers.size > NOTIF_MAX_CHAPTERS
|
||||
val chaptersDescription = if (shouldTruncate) {
|
||||
chapterNumbers.take(NOTIF_MAX_CHAPTERS - 1).joinToString(", ")
|
||||
} else {
|
||||
chapterNumbers.joinToString(", ")
|
||||
}
|
||||
|
||||
var description = resources.getQuantityString(R.plurals.notification_chapters, chapters.size, chaptersDescription)
|
||||
if (shouldTruncate) {
|
||||
description += " ${resources.getString(R.string.notification_and_n_more, (chapterNumbers.size - (NOTIF_MAX_CHAPTERS - 1)))}"
|
||||
}
|
||||
|
||||
return description
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an intent to open the main activity.
|
||||
*/
|
||||
|
|
|
@ -490,6 +490,10 @@
|
|||
<item quantity="one">For %d title</item>
|
||||
<item quantity="other">For %d titles</item>
|
||||
</plurals>
|
||||
<plurals name="notification_chapters">
|
||||
<item quantity="one">Chapter %1$s</item>
|
||||
<item quantity="other">Chapters %1$s</item>
|
||||
</plurals>
|
||||
<string name="notification_and_n_more">and %1$d more</string>
|
||||
<string name="notification_cover_update_failed">Failed to update cover</string>
|
||||
<string name="notification_first_add_to_library">Please add the manga to your library before doing this</string>
|
||||
|
|
Référencer dans un nouveau ticket