diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt index b955120a7..a302ba1c6 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ReactionsRow.kt @@ -72,7 +72,9 @@ import com.vitorpamplona.amethyst.ui.actions.NewPostView import com.vitorpamplona.amethyst.ui.actions.SaveButton import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.math.BigDecimal import java.math.RoundingMode @@ -99,7 +101,9 @@ fun ReactionsRow(baseNote: Note, accountViewModel: AccountViewModel) { } Row( - modifier = Modifier.padding(top = 8.dp).fillMaxWidth(), + modifier = Modifier + .padding(top = 8.dp) + .fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween ) { @@ -350,7 +354,12 @@ fun ZapReaction( .show() } } else if (account.zapAmountChoices.size == 1) { - accountViewModel.zap(baseNote, account.zapAmountChoices.first() * 1000, "", context) { + accountViewModel.zap( + baseNote, + account.zapAmountChoices.first() * 1000, + "", + context + ) { scope.launch { Toast .makeText(context, it, Toast.LENGTH_SHORT) @@ -405,8 +414,16 @@ fun ZapReaction( } } + var zapAmount by remember { mutableStateOf(null) } + + LaunchedEffect(key1 = zappedNote) { + withContext(Dispatchers.IO) { + zapAmount = zappedNote?.zappedAmount() + } + } + Text( - showAmount(zappedNote?.zappedAmount()), + showAmount(zapAmount), fontSize = 14.sp, color = MaterialTheme.colors.onSurface.copy(alpha = 0.32f), modifier = textModifier diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapNoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapNoteCompose.kt index f4497bdc5..e26caff52 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapNoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ZapNoteCompose.kt @@ -9,9 +9,13 @@ import androidx.compose.material.Divider import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext @@ -31,6 +35,8 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.UnfollowButton import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.math.BigDecimal @Composable fun ZapNoteCompose(baseNote: Pair, accountViewModel: AccountViewModel, navController: NavController) { @@ -88,15 +94,20 @@ fun ZapNoteCompose(baseNote: Pair, accountViewModel: AccountViewMode ) } - val amount = - (noteZap.event as? LnZapEvent)?.amount + var zapAmount by remember { mutableStateOf(null) } + + LaunchedEffect(key1 = noteZap) { + withContext(Dispatchers.IO) { + zapAmount = (noteZap.event as? LnZapEvent)?.amount + } + } Column( modifier = Modifier.padding(start = 10.dp), verticalArrangement = Arrangement.Center ) { Text( - "${showAmount(amount)} ${stringResource(R.string.sats)}", + "${showAmount(zapAmount)} ${stringResource(R.string.sats)}", color = BitcoinOrange, fontSize = 20.sp, fontWeight = FontWeight.W500 diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt index 387423e87..c13b232b2 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/ProfileScreen.kt @@ -89,6 +89,8 @@ import com.vitorpamplona.amethyst.ui.screen.UserFeedView import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.math.BigDecimal @OptIn(ExperimentalPagerApi::class) @Composable @@ -210,9 +212,20 @@ fun ProfileScreen(userId: String?, accountViewModel: AccountViewModel, navContro }, { val userState by baseUser.live().zaps.observeAsState() - val userZaps = userState?.user?.zappedAmount() + val userZaps = userState?.user - Text(text = "${showAmount(userZaps)} ${stringResource(id = R.string.zaps)}") + var zapAmount by remember { mutableStateOf(null) } + + LaunchedEffect(key1 = userState) { + withContext(Dispatchers.IO) { + val tempAmount = userZaps?.zappedAmount() + withContext(Dispatchers.Main) { + zapAmount = tempAmount + } + } + } + + Text(text = "${showAmount(zapAmount)} ${stringResource(id = R.string.zaps)}") }, { val userState by baseUser.live().reports.observeAsState()