From 3a79f8fb50a923ed7d756de4ddb120f38dff72e7 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Mon, 11 May 2020 17:11:47 -0400 Subject: [PATCH] Updated E hentai notifications to new system --- .../data/library/LibraryUpdateNotifierEH.kt | 78 ------------------- .../main/java/exh/eh/EHentaiUpdateWorker.kt | 13 ++-- 2 files changed, 7 insertions(+), 84 deletions(-) delete mode 100644 app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifierEH.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifierEH.kt b/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifierEH.kt deleted file mode 100644 index 5bb8184be..000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateNotifierEH.kt +++ /dev/null @@ -1,78 +0,0 @@ -package eu.kanade.tachiyomi.data.library - -import android.app.Notification -import android.app.PendingIntent -import android.content.Context -import android.content.Intent -import android.graphics.BitmapFactory -import android.os.Build -import androidx.core.app.NotificationCompat -import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.notification.Notifications -import eu.kanade.tachiyomi.ui.main.MainActivity -import eu.kanade.tachiyomi.util.lang.chop -import eu.kanade.tachiyomi.util.system.notification -import eu.kanade.tachiyomi.util.system.notificationManager - -class LibraryUpdateNotifierEH(private val context: Context) { - /** - * Bitmap of the app for notifications. - */ - val notificationBitmap by lazy { - BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher) - } - - /** - * Shows the notification containing the result of the update done by the service. - * - * @param updates a list of manga with new updates. - */ - fun showResultNotification(updates: List) { - val newUpdates = updates.map { it.title.chop(45) }.toMutableSet() - - // Append new chapters from a previous, existing notification - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - val previousNotification = context.notificationManager.activeNotifications - .find { it.id == Notifications.ID_OLD_LIBRARY_RESULT } - - if (previousNotification != null) { - val oldUpdates = previousNotification.notification.extras - .getString(Notification.EXTRA_BIG_TEXT) - - if (!oldUpdates.isNullOrEmpty()) { - newUpdates += oldUpdates.split("\n") - } - } - } - - context.notificationManager.notify( - Notifications.ID_OLD_LIBRARY_RESULT, - context.notification(Notifications.CHANNEL_LIBRARY) { - setSmallIcon(R.drawable.ic_book_24dp) - setLargeIcon(notificationBitmap) - setContentTitle(context.getString(R.string.notification_new_chapters)) - if (newUpdates.size > 1) { - setContentText(context.getString(R.string.notification_new_chapters_text_old, newUpdates.size)) - setStyle(NotificationCompat.BigTextStyle().bigText(newUpdates.joinToString("\n"))) - setNumber(newUpdates.size) - } else { - setContentText(newUpdates.first()) - } - priority = NotificationCompat.PRIORITY_HIGH - setContentIntent(getNotificationIntent(context)) - setAutoCancel(true) - } - ) - } - - /** - * Returns an intent to open the main activity. - */ - private fun getNotificationIntent(context: Context): PendingIntent { - val intent = Intent(context, MainActivity::class.java) - intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP - intent.action = MainActivity.SHORTCUT_RECENTLY_UPDATED - return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT) - } -} diff --git a/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt b/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt index c073bc51b..fbf12bf79 100644 --- a/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt +++ b/app/src/main/java/exh/eh/EHentaiUpdateWorker.kt @@ -14,7 +14,7 @@ import com.kizitonwose.time.hours import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.library.LibraryUpdateNotifierEH +import eu.kanade.tachiyomi.data.library.LibraryUpdateNotifier import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.online.all.EHentai @@ -29,6 +29,7 @@ import exh.metadata.metadata.base.insertFlatMetadata import exh.util.await import exh.util.cancellable import exh.util.jobScheduler +import java.util.ArrayList import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -55,7 +56,7 @@ class EHentaiUpdateWorker : JobService(), CoroutineScope { private val updateHelper: EHentaiUpdateHelper by injectLazy() private val logger = XLog.tag("EHUpdater") - private val updateNotifier by lazy { LibraryUpdateNotifierEH(this) } + private val updateNotifier by lazy { LibraryUpdateNotifier(this) } /** * This method is called if the system has determined that you must stop execution of your job @@ -162,7 +163,7 @@ class EHentaiUpdateWorker : JobService(), CoroutineScope { var failuresThisIteration = 0 var updatedThisIteration = 0 - val updatedManga = mutableListOf() + val updatedManga = ArrayList>>() val modifiedThisIteration = mutableSetOf() try { @@ -226,9 +227,9 @@ class EHentaiUpdateWorker : JobService(), CoroutineScope { updateHelper.findAcceptedRootAndDiscardOthers(manga.source, chapters).await() if ((new.isNotEmpty() && manga.id == acceptedRoot.manga.id) || - (hasNew && updatedManga.none { it.id == acceptedRoot.manga.id }) + (hasNew && updatedManga.none { it.first.id == acceptedRoot.manga.id }) ) { - updatedManga += acceptedRoot.manga + updatedManga += Pair(acceptedRoot.manga, new.toTypedArray()) } modifiedThisIteration += acceptedRoot.manga.id!! @@ -247,7 +248,7 @@ class EHentaiUpdateWorker : JobService(), CoroutineScope { ) if (updatedManga.isNotEmpty()) { - updateNotifier.showResultNotification(updatedManga) + updateNotifier.showUpdateNotifications(updatedManga) } } }