mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 12:49:02 +00:00
handle urls in notifications. Fixes #1589
This commit is contained in:
parent
bbe5bb005c
commit
de0a6ec7c4
2 changed files with 37 additions and 4 deletions
|
|
@ -1,8 +1,12 @@
|
|||
package com.habitrpg.android.habitica.helpers
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.NavDeepLink
|
||||
import androidx.navigation.NavDeepLinkRequest
|
||||
import androidx.navigation.NavDirections
|
||||
import java.lang.ref.WeakReference
|
||||
import java.util.*
|
||||
|
|
@ -11,17 +15,20 @@ import kotlin.math.abs
|
|||
object MainNavigationController {
|
||||
var lastNavigation: Date? = null
|
||||
|
||||
var navController: WeakReference<NavController>? = null
|
||||
private var controllerReference: WeakReference<NavController>? = null
|
||||
|
||||
private val navController: NavController?
|
||||
get() { return controllerReference?.get() }
|
||||
|
||||
fun setup(navController: NavController) {
|
||||
this.navController = WeakReference(navController)
|
||||
this.controllerReference = WeakReference(navController)
|
||||
}
|
||||
|
||||
fun navigate(transactionId: Int, args: Bundle? = null) {
|
||||
if (abs((lastNavigation?.time ?: 0) - Date().time) > 500) {
|
||||
lastNavigation = Date()
|
||||
try {
|
||||
navController?.get()?.navigate(transactionId, args)
|
||||
navController?.navigate(transactionId, args)
|
||||
} catch (e: IllegalArgumentException) {
|
||||
Log.e("Main Navigation", e.localizedMessage ?: "")
|
||||
} catch (error: Exception) {
|
||||
|
|
@ -34,8 +41,29 @@ object MainNavigationController {
|
|||
if (abs((lastNavigation?.time ?: 0) - Date().time) > 500) {
|
||||
lastNavigation = Date()
|
||||
try {
|
||||
navController?.get()?.navigate(directions)
|
||||
navController?.navigate(directions)
|
||||
} catch (_: IllegalArgumentException) {}
|
||||
}
|
||||
}
|
||||
|
||||
fun navigate(uriString: String) {
|
||||
val uri = Uri.parse(uriString)
|
||||
navigate(uri)
|
||||
}
|
||||
|
||||
fun navigate(uri: Uri) {
|
||||
if (navController?.graph?.hasDeepLink(uri) == true) {
|
||||
navController?.navigate(uri)
|
||||
}
|
||||
}
|
||||
|
||||
fun navigate(request: NavDeepLinkRequest) {
|
||||
if (navController?.graph?.hasDeepLink(request) == true) {
|
||||
navController?.navigate(request)
|
||||
}
|
||||
}
|
||||
|
||||
fun handle(deeplink: Intent) {
|
||||
navController?.handleDeepLink(deeplink)
|
||||
}
|
||||
}
|
||||
|
|
@ -26,6 +26,11 @@ class NotificationOpenHandler {
|
|||
PushNotificationManager.CHAT_MENTION_NOTIFICATION_KEY -> handleChatMessage(intent.getStringExtra("type"), intent.getStringExtra("groupID"))
|
||||
PushNotificationManager.GROUP_ACTIVITY_NOTIFICATION_KEY -> handleChatMessage(intent.getStringExtra("type"), intent.getStringExtra("groupID"))
|
||||
PushNotificationManager.G1G1_PROMO_KEY -> openGiftOneGetOneInfoScreen()
|
||||
else -> {
|
||||
if (intent.hasExtra("openURL")) {
|
||||
MainNavigationController.navigate(intent.getStringExtra("openURL"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue