fix: notification list blank on click

This commit is contained in:
rebelonion 2024-03-15 17:38:02 -05:00
parent 12c77604f1
commit e00bbb2d8e
5 changed files with 38 additions and 13 deletions

View file

@ -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)

View file

@ -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) {

View file

@ -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(

View file

@ -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<ViewGroup.MarginLayoutParams> { topMargin = statusBarHeight }
binding.listFrameLayout.updateLayoutParams<ViewGroup.MarginLayoutParams> { bottomMargin = navBarHeight }
binding.listToolbar.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = statusBarHeight
}
binding.listFrameLayout.updateLayoutParams<ViewGroup.MarginLayoutParams> {
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<String>(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 {
@ -80,7 +93,12 @@ class NotificationActivity : AppCompatActivity() {
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
}

View file

@ -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