diff options
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/Utils.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/Utils.kt | 65 |
1 files changed, 55 insertions, 10 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/Utils.kt b/wallet/src/main/java/net/taler/wallet/Utils.kt index 388bf61..8b34531 100644 --- a/wallet/src/main/java/net/taler/wallet/Utils.kt +++ b/wallet/src/main/java/net/taler/wallet/Utils.kt @@ -16,29 +16,33 @@ package net.taler.wallet -import android.app.Activity import android.content.Context import android.net.ConnectivityManager import android.net.ConnectivityManager.NetworkCallback import android.net.NetworkCapabilities import android.net.NetworkRequest +import android.net.Uri import android.net.wifi.WifiConfiguration import android.net.wifi.WifiManager import android.net.wifi.WifiNetworkSpecifier import android.os.Build.VERSION.SDK_INT +import android.util.TypedValue import android.widget.Toast import android.widget.Toast.LENGTH_LONG import androidx.annotation.RequiresApi +import androidx.browser.customtabs.CustomTabsIntent import androidx.core.content.getSystemService -import com.google.zxing.integration.android.IntentIntegrator +import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import net.taler.common.Amount +import net.taler.common.AmountParserException +import net.taler.common.showError +import net.taler.common.startActivitySafe +import net.taler.wallet.backend.TalerErrorInfo -fun scanQrCode(activity: Activity) { - IntentIntegrator(activity).apply { - setPrompt("") - setBeepEnabled(true) - setOrientationLocked(false) - }.initiateScan(listOf(IntentIntegrator.QR_CODE)) -} +const val CURRENCY_BTC = "BITCOINBTC" fun connectToWifi(context: Context, ssid: String) { if (SDK_INT >= 29) { @@ -92,5 +96,46 @@ private fun connectToWifiDeprecated(context: Context, ssid: String) { } fun cleanExchange(exchange: String) = exchange.let { - if (it.startsWith("https://")) it.substring(8) else it + if (it.startsWith("https://", ignoreCase = true)) it.substring(8) else it }.trimEnd('/') + +fun getAmount(currency: String, text: String): Amount? { + return try { + Amount.fromString(currency, text) + } catch (e: AmountParserException) { + null + } +} + +fun Context.getAttrColor(attr: Int): Int { + val value = TypedValue() + theme.resolveAttribute(attr, value, true) + return value.data +} + +fun launchInAppBrowser(context: Context, url: String) { + val builder = CustomTabsIntent.Builder() + val intent = builder.build().intent + intent.data = Uri.parse(url) + context.startActivitySafe(intent) +} + +fun Fragment.showError(error: TalerErrorInfo) { + @Suppress("OPT_IN_USAGE") + val json = Json { + prettyPrint = true + prettyPrintIndent = " " + } + val message = json.encodeToString(error) + showError(message) +} + +fun FragmentActivity.showError(error: TalerErrorInfo) { + @Suppress("OPT_IN_USAGE") + val json = Json { + prettyPrint = true + prettyPrintIndent = " " + } + val message = json.encodeToString(error) + showError(message) +} |