Merge branch 'vitorpamplona:main' into main

This commit is contained in:
greenart7c3
2023-06-28 15:40:36 -03:00
committed by GitHub
3 changed files with 92 additions and 21 deletions

View File

@@ -14,6 +14,7 @@ import java.util.Base64
@Immutable @Immutable
data class CashuToken( data class CashuToken(
val token: String,
val mint: String, val mint: String,
val totalAmount: Long, val totalAmount: Long,
val fees: Int, val fees: Int,
@@ -37,7 +38,7 @@ class CashuProcessor {
val fees = Math.max(((totalAmount * 0.02).toInt()), 2) val fees = Math.max(((totalAmount * 0.02).toInt()), 2)
val redeemInvoiceAmount = totalAmount - fees val redeemInvoiceAmount = totalAmount - fees
return GenericLoadable.Loaded(CashuToken(mint, totalAmount, fees, redeemInvoiceAmount, proofs)) return GenericLoadable.Loaded(CashuToken(cashuToken, mint, totalAmount, fees, redeemInvoiceAmount, proofs))
} catch (e: Exception) { } catch (e: Exception) {
return GenericLoadable.Error<CashuToken>("Could not parse this cashu token") return GenericLoadable.Error<CashuToken>("Could not parse this cashu token")
} }
@@ -84,7 +85,7 @@ class CashuProcessor {
if (successful) { if (successful) {
onSuccess("Redeemed ${token.totalAmount} Sats" + " (Fees: ${token.fees} Sats)") onSuccess("Redeemed ${token.totalAmount} Sats" + " (Fees: ${token.fees} Sats)")
} else { } else {
onError(tree?.get("detail")?.asText()?.split('.')?.getOrNull(0) ?: "Error") onError(tree?.get("detail")?.asText()?.split('.')?.getOrNull(0) ?: "Cashu: Tokens already spent.")
} }
} catch (e: Exception) { } catch (e: Exception) {
onError("Token melt failure: " + e.message) onError("Token melt failure: " + e.message)

View File

@@ -16,9 +16,11 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextDirection import androidx.compose.ui.text.style.TextDirection
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -67,6 +69,7 @@ fun CashuPreview(token: CashuToken, accountViewModel: AccountViewModel) {
val useWebService = false val useWebService = false
val context = LocalContext.current val context = LocalContext.current
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
val clipboardManager = LocalClipboardManager.current
Column( Column(
modifier = Modifier modifier = Modifier
@@ -114,17 +117,17 @@ fun CashuPreview(token: CashuToken, accountViewModel: AccountViewModel) {
) )
} }
Button( Row(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(vertical = 10.dp), .padding(bottom = 10.dp)
onClick = { ) {
// Just in case we want to use a webservice instead of directly contacting the mint Button(
if (useWebService) {
val url = "https://redeem.cashu.me?token=$token&lightning=$lud16&autopay=true" modifier = Modifier
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) .padding(vertical = 10.dp).padding(horizontal = 2.dp),
startActivity(context, intent, null) onClick = {
} else {
if (lud16 != null) { if (lud16 != null) {
CashuProcessor().melt( CashuProcessor().melt(
token, token,
@@ -142,17 +145,50 @@ fun CashuPreview(token: CashuToken, accountViewModel: AccountViewModel) {
) )
} else { } else {
scope.launch { scope.launch {
Toast.makeText(context, "No Lightning Address set", Toast.LENGTH_SHORT).show() Toast.makeText(
context,
"No Lightning Address set",
Toast.LENGTH_SHORT
).show()
} }
} }
} },
}, shape = QuoteBorder,
shape = QuoteBorder, colors = ButtonDefaults.buttonColors(
colors = ButtonDefaults.buttonColors( backgroundColor = MaterialTheme.colors.primary
backgroundColor = MaterialTheme.colors.primary )
) ) {
) { Text(
Text(stringResource(R.string.cashu_redeem), color = Color.White, fontSize = 20.sp) stringResource(R.string.cashu_redeem),
color = Color.White,
fontSize = 18.sp
)
}
Button(
modifier = Modifier
.padding(vertical = 10.dp).padding(horizontal = 1.dp),
onClick = {
if (useWebService) {
// In case we want to use the cashu.me webservice
val url = "https://redeem.cashu.me?token=$token&lightning=$lud16&autopay=false"
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(context, intent, null)
} else {
// Copying the token to clipboard for now
var orignaltoken = token.token
clipboardManager.setText(AnnotatedString("$orignaltoken"))
scope.launch {
Toast.makeText(context, "Copied token to clipboard", Toast.LENGTH_SHORT).show()
}
}
},
shape = QuoteBorder,
colors = ButtonDefaults.buttonColors(
backgroundColor = MaterialTheme.colors.primary
)
) {
Text("", color = Color.White, fontSize = 18.sp)
}
} }
} }
} }

View File

@@ -391,7 +391,7 @@
<string name="content_warning_hide_all_sensitive_content">Az érzékeny tartalmat mindig rejtse el</string> <string name="content_warning_hide_all_sensitive_content">Az érzékeny tartalmat mindig rejtse el</string>
<string name="content_warning_show_all_sensitive_content">Az érzékeny tartalmat mindig jelenítse meg</string> <string name="content_warning_show_all_sensitive_content">Az érzékeny tartalmat mindig jelenítse meg</string>
<string name="content_warning_see_warnings">A tartalomra vonatkozó figyelmeztetéseket mindig jelenítse meg</string> <string name="content_warning_see_warnings">A tartalomra vonatkozó figyelmeztetéseket mindig jelenítse meg</string>
<string name="recommended_apps">Ajánlottak: </string> <string name="recommended_apps">Ajánlottak: </string>
<string name="filter_spam_from_strangers">Idegenektől SPAM szűrése</string> <string name="filter_spam_from_strangers">Idegenektől SPAM szűrése</string>
<string name="warn_when_posts_have_reports_from_your_follows">Figyelmeztessen ha a bejegyzések azok által akiket követek jelentve vannak</string> <string name="warn_when_posts_have_reports_from_your_follows">Figyelmeztessen ha a bejegyzések azok által akiket követek jelentve vannak</string>
@@ -406,4 +406,38 @@
<string name="sats_to_complete">A ZapGyűjtés %1$s-nál. %2$s sats kell a célig</string> <string name="sats_to_complete">A ZapGyűjtés %1$s-nál. %2$s sats kell a célig</string>
<string name="read_from_relay">Olvassás a csomópontból</string> <string name="read_from_relay">Olvassás a csomópontból</string>
<string name="write_to_relay">Írás a csomópontra</string> <string name="write_to_relay">Írás a csomópontra</string>
<string name="an_error_ocurred_trying_to_get_relay_information">Hiba történt a csomópont információ szerzés közben a %1$s -tól</string>
<string name="owner">Tulajdonos</string>
<string name="version">Verzió</string>
<string name="software">Szoftver</string>
<string name="contact">Kapcsolat</string>
<string name="supports">Támogatott NIP-ek</string>
<string name="admission_fees">Csatlakozás díja</string>
<string name="payments_url">Fizetési cím</string>
<string name="limitations">Korlátok</string>
<string name="countries">Országok</string>
<string name="languages">Nyelvek</string>
<string name="tags">Címkék</string>
<string name="posting_policy">Szabályzat</string>
<string name="message_length">Üzenet hossza</string>
<string name="subscriptions">Feliratkozások</string>
<string name="filters">Filterek</string>
<string name="subscription_id_length">Feliratkozás azonosítójának hossza</string>
<string name="minimum_prefix">Minimális előtag</string>
<string name="maximum_event_tags">Maximális eseménycímkék</string>
<string name="content_length">Tartalom hossza</string>
<string name="minimum_pow">Minimális PoW</string>
<string name="auth">Azonosítás</string>
<string name="payment">Fizetés</string>
<string name="cashu">Cashu Token</string>
<string name="cashu_redeem">Beváltás</string>
<string name="live_stream_live_tag">ÉLŐ</string>
<string name="live_stream_offline_tag">OFFLINE</string>
<string name="live_stream_ended_tag">VÉGE</string>
<string name="live_stream_planned_tag">ÜTEMEZETT</string>
<string name="live_stream_is_offline">Az élő közvetítés offline</string>
<string name="live_stream_has_ended">Az élő közvetítésnek vége</string>
<string name="are_you_sure_you_want_to_log_out">A Kijelentkezés minden helyben tárolt információt töröl. Bizonyosodj meg róla, hogy a privát kulcsod le van mentve, ezzel elkerülve a fiókod elvesztését. Folytatni akarod?</string>
</resources> </resources>