Skip to content

Commit 2864873

Browse files
committed
(android) Remove splash payment navigation for offers
Incoming payment for offers display a "payment received" system notification.
1 parent 9f04fab commit 2864873

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/AppView.kt

+13-4
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi
5757
import com.google.accompanist.permissions.isGranted
5858
import com.google.accompanist.permissions.rememberPermissionState
5959
import com.google.firebase.messaging.FirebaseMessaging
60+
import fr.acinq.lightning.db.IncomingPayment
6061
import fr.acinq.lightning.utils.currentTimestampMillis
6162
import fr.acinq.phoenix.PhoenixBusiness
6263
import fr.acinq.phoenix.android.components.Button
@@ -89,6 +90,7 @@ import fr.acinq.phoenix.android.settings.walletinfo.SwapInWallet
8990
import fr.acinq.phoenix.android.settings.walletinfo.WalletInfoView
9091
import fr.acinq.phoenix.android.startup.LegacySwitcherView
9192
import fr.acinq.phoenix.android.startup.StartupView
93+
import fr.acinq.phoenix.android.utils.SystemNotificationHelper
9294
import fr.acinq.phoenix.android.utils.appBackground
9395
import fr.acinq.phoenix.android.utils.logger
9496
import fr.acinq.phoenix.data.BitcoinUnit
@@ -479,11 +481,18 @@ fun AppView(
479481

480482
val isDataMigrationExpected by LegacyPrefsDatastore.getDataMigrationExpected(context).collectAsState(initial = null)
481483
val lastCompletedPayment by business.paymentsManager.lastCompletedPayment.collectAsState()
482-
lastCompletedPayment?.let {
483-
// log.debug { "completed payment=${lastCompletedPayment?.id()} with data-migration=$isDataMigrationExpected" }
484-
LaunchedEffect(key1 = it.walletPaymentId()) {
484+
val userPrefs = userPrefs
485+
val exchangeRates = fiatRates
486+
lastCompletedPayment?.let { payment ->
487+
LaunchedEffect(key1 = payment.walletPaymentId()) {
485488
if (isDataMigrationExpected == false) {
486-
navigateToPaymentDetails(navController, id = it.walletPaymentId(), isFromEvent = true)
489+
if (payment is IncomingPayment && payment.origin is IncomingPayment.Origin.Offer) {
490+
SystemNotificationHelper.notifyPaymentsReceived(
491+
context, userPrefs, paymentHash = payment.paymentHash, amount = payment.amount, rates = exchangeRates, isHeadless = false
492+
)
493+
} else {
494+
navigateToPaymentDetails(navController, id = payment.walletPaymentId(), isFromEvent = true)
495+
}
487496
}
488497
}
489498
}

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/utils/SystemNotificationHelper.kt

+4-11
Original file line numberDiff line numberDiff line change
@@ -277,17 +277,10 @@ object SystemNotificationHelper {
277277
return NotificationCompat.Builder(context, PAYMENT_RECEIVED_NOTIF_CHANNEL).apply {
278278
setContentTitle(context.getString(R.string.notif_headless_received, amount.toPrettyString(unit, rate, withUnit = true)))
279279
setSmallIcon(R.drawable.ic_phoenix_outline)
280-
setContentIntent(TaskStackBuilder.create(context).run {
281-
addNextIntentWithParentStack(
282-
Intent(
283-
Intent.ACTION_VIEW,
284-
"phoenix:payments/${WalletPaymentId.DbType.INCOMING.value}/${paymentHash.toHex()}".toUri(),
285-
context,
286-
MainActivity::class.java
287-
)
288-
)
289-
getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
290-
})
280+
val intent = Intent(Intent.ACTION_VIEW,"phoenix:payments/${WalletPaymentId.DbType.INCOMING.value}/${paymentHash.toHex()}".toUri(), context, MainActivity::class.java).apply {
281+
Intent.FLAG_ACTIVITY_SINGLE_TOP
282+
}
283+
setContentIntent(PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT))
291284
setAutoCancel(true)
292285
}.build().also {
293286
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {

phoenix-shared/src/commonMain/kotlin/fr.acinq.phoenix/managers/PaymentsManager.kt

+7-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package fr.acinq.phoenix.managers
33
import fr.acinq.bitcoin.TxId
44
import fr.acinq.lightning.blockchain.electrum.ElectrumClient
55
import fr.acinq.lightning.db.InboundLiquidityOutgoingPayment
6+
import fr.acinq.lightning.db.IncomingPayment
7+
import fr.acinq.lightning.db.LightningOutgoingPayment
68
import fr.acinq.lightning.db.SpliceCpfpOutgoingPayment
79
import fr.acinq.lightning.db.WalletPayment
810
import fr.acinq.lightning.logging.LoggerFactory
@@ -87,8 +89,11 @@ class PaymentsManager(
8789
if (index > 0) {
8890
for (row in list) {
8991
val paymentInfo = fetcher.getPayment(row, WalletPaymentFetchOptions.None)
90-
if (paymentInfo?.payment is InboundLiquidityOutgoingPayment || paymentInfo?.payment is SpliceCpfpOutgoingPayment) {
91-
// ignore cpfp/inbound
92+
val payment = paymentInfo?.payment
93+
if (payment is InboundLiquidityOutgoingPayment || payment is SpliceCpfpOutgoingPayment
94+
|| (payment is LightningOutgoingPayment && payment.details is LightningOutgoingPayment.Details.Blinded)
95+
) {
96+
// ignore cpfp/inbound/blinded
9297
} else {
9398
val completedAt = paymentInfo?.payment?.completedAt
9499
if (completedAt != null && completedAt > appLaunchTimestamp) {

0 commit comments

Comments
 (0)