From e00bbb2d8e7d96519eb90709c3387f9a32abd48d Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Fri, 15 Mar 2024 17:38:02 -0500 Subject: [PATCH] fix: notification list blank on click --- .../main/java/ani/dantotsu/MainActivity.kt | 3 ++ .../dantotsu/connections/anilist/Anilist.kt | 3 +- .../anilist/AnilistNotificationWorker.kt | 7 ++-- .../profile/activity/NotificationActivity.kt | 35 +++++++++++++++---- app/src/main/java/ani/dantotsu/util/Logger.kt | 3 +- 5 files changed, 38 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt index 2a70eb8b..517a9d0b 100644 --- a/app/src/main/java/ani/dantotsu/MainActivity.kt +++ b/app/src/main/java/ani/dantotsu/MainActivity.kt @@ -51,6 +51,7 @@ import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.settings.saving.SharedPreferenceBooleanLiveData import ani.dantotsu.subcriptions.Subscription.Companion.startSubscription import ani.dantotsu.themes.ThemeManager +import ani.dantotsu.util.Logger import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.Snackbar import eu.kanade.domain.source.service.SourcePreferences @@ -224,6 +225,7 @@ class MainActivity : AppCompatActivity() { bottomMargin = navBarHeight } } + intent.extras?.let { extras -> val fragmentToLoad = extras.getString("FRAGMENT_TO_LOAD") val mediaId = extras.getInt("mediaId", -1) @@ -245,6 +247,7 @@ class MainActivity : AppCompatActivity() { } startActivity(feedIntent) } else if (fragmentToLoad == "NOTIFICATIONS" && activityId != -1) { + Logger.log("MainActivity, onCreate: $activityId") val notificationIntent = Intent(this, NotificationActivity::class.java).apply { putExtra("FRAGMENT_TO_LOAD", "NOTIFICATIONS") putExtra("activityId", activityId) diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt b/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt index 18321cba..804343f6 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt @@ -128,6 +128,7 @@ object Anilist { cache: Int? = null ): T? { return try { + if (show) Logger.log("Anilist Query: $query") if (rateLimitReset > System.currentTimeMillis() / 1000) { toast("Rate limited. Try after ${rateLimitReset - (System.currentTimeMillis() / 1000)} seconds") throw Exception("Rate limited after ${rateLimitReset - (System.currentTimeMillis() / 1000)} seconds") @@ -163,7 +164,7 @@ object Anilist { throw Exception("Rate limited after $retry seconds") } if (!json.text.startsWith("{")) {throw Exception(currContext()?.getString(R.string.anilist_down))} - if (show) Logger.log("Anilist Query: ${json.text}") + if (show) Logger.log("Anilist Response: ${json.text}") json.parsed() } else null } catch (e: Exception) { diff --git a/app/src/main/java/ani/dantotsu/notifications/anilist/AnilistNotificationWorker.kt b/app/src/main/java/ani/dantotsu/notifications/anilist/AnilistNotificationWorker.kt index e8ed3904..eb7d776c 100644 --- a/app/src/main/java/ani/dantotsu/notifications/anilist/AnilistNotificationWorker.kt +++ b/app/src/main/java/ani/dantotsu/notifications/anilist/AnilistNotificationWorker.kt @@ -14,7 +14,6 @@ import ani.dantotsu.MainActivity import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.profile.activity.ActivityItemBuilder -import ani.dantotsu.profile.activity.FeedActivity import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefName import eu.kanade.tachiyomi.data.notification.Notifications @@ -72,14 +71,14 @@ class AnilistNotificationWorker(appContext: Context, workerParams: WorkerParamet private fun createNotification( context: Context, content: String, - activityId: Int? = null + notificationId: Int? = null ): android.app.Notification { val title = "New Anilist Notification" val intent = Intent(applicationContext, MainActivity::class.java).apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK putExtra("FRAGMENT_TO_LOAD", "NOTIFICATIONS") - if (activityId != null) { - putExtra("activityId", activityId) + if (notificationId != null) { + putExtra("activityId", notificationId) } } val pendingIntent = PendingIntent.getActivity( diff --git a/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt b/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt index 6ccd9a77..f655c5b8 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/NotificationActivity.kt @@ -19,9 +19,12 @@ import ani.dantotsu.initActivity import ani.dantotsu.media.MediaDetailsActivity import ani.dantotsu.navBarHeight import ani.dantotsu.profile.ProfileActivity +import ani.dantotsu.settings.saving.PrefManager +import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.snackString import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager +import ani.dantotsu.util.Logger import com.xwray.groupie.GroupieAdapter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -41,10 +44,15 @@ class NotificationActivity : AppCompatActivity() { binding = ActivityFollowBinding.inflate(layoutInflater) setContentView(binding.root) binding.listTitle.text = "Notifications" - binding.listToolbar.updateLayoutParams { topMargin = statusBarHeight } - binding.listFrameLayout.updateLayoutParams { bottomMargin = navBarHeight } + binding.listToolbar.updateLayoutParams { + topMargin = statusBarHeight + } + binding.listFrameLayout.updateLayoutParams { + bottomMargin = navBarHeight + } binding.listRecyclerView.adapter = adapter - binding.listRecyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) + binding.listRecyclerView.layoutManager = + LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) binding.followerGrid.visibility = ViewGroup.GONE binding.followerList.visibility = ViewGroup.GONE binding.listBack.setOnClickListener { @@ -54,8 +62,13 @@ class NotificationActivity : AppCompatActivity() { val activityId = intent.getIntExtra("activityId", -1) lifecycleScope.launch { val resetNotification = activityId == -1 - val res = Anilist.query.getNotifications(Anilist.userid?:0, resetNotification = resetNotification) + val res = Anilist.query.getNotifications( + Anilist.userid ?: PrefManager.getVal(PrefName.AnilistUserId).toIntOrNull() + ?: 0, + resetNotification = resetNotification + ) res?.data?.page?.notifications?.let { notifications -> + Logger.log("Notifications: $notifications") notificationList = if (activityId != -1) { notifications.filter { it.id == activityId } } else { @@ -63,7 +76,7 @@ class NotificationActivity : AppCompatActivity() { } adapter.update(notificationList.map { NotificationItem(it, ::onNotificationClick) }) } - withContext(Dispatchers.Main){ + withContext(Dispatchers.Main) { binding.listProgressBar.visibility = ViewGroup.GONE binding.listRecyclerView.setOnTouchListener { _, event -> if (event?.action == MotionEvent.ACTION_UP) { @@ -76,11 +89,16 @@ class NotificationActivity : AppCompatActivity() { page++ binding.followRefresh.visibility = ViewGroup.VISIBLE lifecycleScope.launch(Dispatchers.IO) { - val res = Anilist.query.getNotifications(Anilist.userid?:0, page) + val res = Anilist.query.getNotifications(Anilist.userid ?: 0, page) withContext(Dispatchers.Main) { res?.data?.page?.notifications?.let { notifications -> notificationList += notifications - adapter.addAll(notifications.map { NotificationItem(it, ::onNotificationClick) }) + adapter.addAll(notifications.map { + NotificationItem( + it, + ::onNotificationClick + ) + }) } binding.followRefresh.visibility = ViewGroup.GONE } @@ -101,18 +119,21 @@ class NotificationActivity : AppCompatActivity() { .putExtra("userId", id), null ) } + NotificationClickType.MEDIA -> { ContextCompat.startActivity( this, Intent(this, MediaDetailsActivity::class.java) .putExtra("mediaId", id), null ) } + NotificationClickType.ACTIVITY -> { ContextCompat.startActivity( this, Intent(this, FeedActivity::class.java) .putExtra("activityId", id), null ) } + NotificationClickType.UNDEFINED -> { // Do nothing } diff --git a/app/src/main/java/ani/dantotsu/util/Logger.kt b/app/src/main/java/ani/dantotsu/util/Logger.kt index ed8fdc42..a6780748 100644 --- a/app/src/main/java/ani/dantotsu/util/Logger.kt +++ b/app/src/main/java/ani/dantotsu/util/Logger.kt @@ -2,6 +2,7 @@ package ani.dantotsu.util import android.content.Context import android.content.Intent +import android.util.Log import androidx.core.content.FileProvider import ani.dantotsu.BuildConfig import ani.dantotsu.connections.crashlytics.CrashlyticsInterface @@ -78,7 +79,7 @@ object Logger { fun log(message: String) { val trace = Thread.currentThread().stackTrace[3] loggerExecutor.execute { - if (file == null) println(message) + if (file == null) Log.d("Internal Logger", "$message)") else { val className = trace.className val methodName = trace.methodName