@@ -9,9 +9,13 @@ import android.content.IntentFilter
99import androidx.localbroadcastmanager.content.LocalBroadcastManager
1010import com.flipcash.app.core.internal.Linkify
1111import com.flipcash.app.core.money.formatted
12+ import com.flipcash.core.R
13+ import com.getcode.opencode.controllers.BalanceController
1214import com.getcode.opencode.model.accounts.GiftCardAccount
1315import com.getcode.opencode.model.accounts.entropy
16+ import com.getcode.opencode.model.financial.CurrencyCode
1417import com.getcode.opencode.model.financial.LocalFiat
18+ import com.getcode.util.resources.ResourceHelper
1519import dagger.hilt.android.qualifiers.ApplicationContext
1620import kotlinx.coroutines.delay
1721import java.security.SecureRandom
@@ -29,6 +33,8 @@ class ShareSheetController @Inject constructor(
2933 @ApplicationContext
3034 private val context : Context ,
3135 private val clipboardManager : ClipboardManager ,
36+ private val resources : ResourceHelper ,
37+ private val balanceController : BalanceController ,
3238) {
3339 internal companion object {
3440 const val ACTION_SHARE_CASH_LINK = " com.flipcash.app.ACTION_SHARE_CASH_LINK"
@@ -39,6 +45,7 @@ class ShareSheetController @Inject constructor(
3945 private var sharedWithApp: String? = null
4046
4147 private var pendingEntropy = " "
48+ private var pendingAmount: LocalFiat ? = null
4249
4350 var onShared: ((ShareResult ) -> Unit )? = null
4451
@@ -53,6 +60,7 @@ class ShareSheetController @Inject constructor(
5360
5461 // if it was shared with an app, return successfully
5562 if (sharedWithApp != null ) {
63+ pendingAmount?.let { balanceController.subtract(it) }
5664 onShared?.invoke(ShareResult .SharedToApp (sharedWithApp!! ))
5765 return
5866 }
@@ -61,6 +69,7 @@ class ShareSheetController @Inject constructor(
6169 if (clipboardManager.hasPrimaryClip()) {
6270 val clippedText = clipboardManager.primaryClip?.getItemAt(0 )?.text
6371 if (clippedText?.contains(pendingEntropy) == true ) {
72+ pendingAmount?.let { balanceController.subtract(it) }
6473 onShared?.invoke(ShareResult .CopiedToClipboard )
6574 }
6675 }
@@ -80,6 +89,7 @@ class ShareSheetController @Inject constructor(
8089 amount : LocalFiat
8190 ) {
8291 pendingEntropy = giftCardAccount.entropy
92+ pendingAmount = amount
8393 shareCashLink(giftCardAccount, amount)
8494 delay(300 )
8595 isChecking = true
@@ -94,7 +104,12 @@ class ShareSheetController @Inject constructor(
94104 amount : LocalFiat ,
95105 ) {
96106 val url = Linkify .cashLink(giftCardAccount.entropy)
97- val text = " ${amount.formatted} $url "
107+ val suffix = amount.converted.currencyCode.takeIf {
108+ it != CurrencyCode .USD
109+ }?.let {
110+ resources.getString(R .string.subtitle_ofUsdSuffix)
111+ }
112+ val text = " ${amount.formatted(suffix = suffix)} $url "
98113 val intent = Intent ().apply {
99114 action = Intent .ACTION_SEND
100115 putExtra(Intent .EXTRA_TEXT , text)
0 commit comments