diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/components/wallet/home/WalletHomeAssetRow.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/components/wallet/home/WalletHomeAssetRow.kt index c594a472..101d2365 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/components/wallet/home/WalletHomeAssetRow.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/components/wallet/home/WalletHomeAssetRow.kt @@ -44,10 +44,6 @@ import io.ton.walletkit.demo.designsystem.icons.TonIcon import io.ton.walletkit.demo.designsystem.icons.TonIconImage import io.ton.walletkit.demo.designsystem.theme.TonTheme -// Mirrors iOS WalletHomeAssetItem.Icon — keeps the icon shape behind a sealed type -// so we can swap between the bundled TON brand mark, a network image URL, and a -// last-resort coloured initials placeholder without leaking the resolution to call -// sites. @Immutable sealed interface WalletHomeAssetIcon { data object Ton : WalletHomeAssetIcon @@ -110,9 +106,8 @@ private fun AssetIcon(item: WalletHomeAssetItem) { ) { when (val icon = item.icon) { WalletHomeAssetIcon.Ton -> TonIconImage( - icon = TonIcon.Ton, + icon = TonIcon.Gram, size = IconSize, - // No tint — TON brand mark ships its blue + white fills baked into the SVG. ) is WalletHomeAssetIcon.Url -> AsyncImage( model = ImageRequest.Builder(androidx.compose.ui.platform.LocalContext.current) diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/components/wallet/home/WalletHomeBalance.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/components/wallet/home/WalletHomeBalance.kt index 6bb13fa5..050422d7 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/components/wallet/home/WalletHomeBalance.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/components/wallet/home/WalletHomeBalance.kt @@ -95,7 +95,7 @@ fun WalletHomeBalance( verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(6.dp), ) { - TonIconImage(icon = TonIcon.Ton, size = 16.dp) + TonIconImage(icon = TonIcon.Gram, size = 16.dp) TonText( text = truncatedAddress, style = TonTheme.typography.subheadline2, diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/preview/PreviewData.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/preview/PreviewData.kt index c4d232ea..df2a9272 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/preview/PreviewData.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/preview/PreviewData.kt @@ -110,8 +110,8 @@ object PreviewData { hash = "abc123def456hash789preview", timestamp = System.currentTimeMillis() - 3600000, // 1 hour ago isOutgoing = true, - amount = "1.5 TON", - fee = "0.005 TON", + amount = "1.5 GRAM", + fee = "0.005 GRAM", fromAddress = wallet.address, toAddress = "EQrecipientAddressForPreviewTest12345678", comment = "Payment for services", diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/WalletScreen.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/WalletScreen.kt index 1b612d7c..af732e99 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/WalletScreen.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/WalletScreen.kt @@ -161,9 +161,9 @@ private fun buildAssetList( val tonAmount = trimFraction(rawBalance, maxFractionDigits) val tonItem = WalletHomeAssetItem( id = "ton", - name = "Toncoin", - symbol = "TON", - formattedAmount = "$tonAmount TON", + name = "Gram", + symbol = "GRAM", + formattedAmount = "$tonAmount GRAM", amountValue = rawBalance?.toDoubleOrNull() ?: 0.0, icon = WalletHomeAssetIcon.Ton, ) @@ -541,7 +541,7 @@ fun WalletScreen( WalletHomeContent( totalBalance = totalBalance, - balanceSuffix = " TON", + balanceSuffix = " GRAM", balanceMaxFractionDigits = MAX_FRACTION_DIGITS, truncatedAddress = WalletHomeTopBar.shortAddress(homeAddress), onCopyAddress = { diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/iframesec/RealBridgeIframeCase.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/iframesec/RealBridgeIframeCase.kt index c3e1c187..c8a58f97 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/iframesec/RealBridgeIframeCase.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/iframesec/RealBridgeIframeCase.kt @@ -45,7 +45,8 @@ enum class RealBridgeIframeCase { CROSS_ORIGIN_DATA, SRCDOC, SANDBOXED, - RAW_JS_INTERFACE; + RAW_JS_INTERFACE, + ; val shortTitle: String get() = when (this) { @@ -271,8 +272,7 @@ enum class RealBridgeIframeCase { })(); """.trimIndent() - private fun frameStyle(v: String) = - "$v.style.cssText='width:100%;border:0;min-height:150px;background:#fff;border-radius:8px;margin-top:6px';" + private fun frameStyle(v: String) = "$v.style.cssText='width:100%;border:0;min-height:150px;background:#fff;border-radius:8px;margin-top:6px';" /** A script that, run inside a frame, renders an overlay and auto-fires a real signData. */ fun realSendScript(label: String, note: String): String = diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/onboarding/CreateWalletOnboardingScreen.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/onboarding/CreateWalletOnboardingScreen.kt index e23a5e3b..efadd73c 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/onboarding/CreateWalletOnboardingScreen.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/screen/onboarding/CreateWalletOnboardingScreen.kt @@ -58,9 +58,9 @@ private data class OnboardingPage( private val DefaultPages = listOf( OnboardingPage( - icon = TonIcon.Toncoin40, + icon = TonIcon.Gram40, title = "Welcome to TON", - description = "Hold and manage your Toncoin and tokens in one place.", + description = "Hold and manage your Gram and tokens in one place.", ), OnboardingPage( icon = TonIcon.Hand40, diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/StakingSheet.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/StakingSheet.kt index 765a86e9..37dc8abe 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/StakingSheet.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/StakingSheet.kt @@ -236,7 +236,7 @@ private fun StakingContent( isError = amountInvalid || belowMinimum || aboveBalance, supporting = when { amountInvalid -> "Enter a valid positive amount." - belowMinimum -> "TonStakers minimum stake is 1 TON." + belowMinimum -> "TonStakers minimum stake is 1 GRAM." aboveBalance -> "Amount is higher than the available wallet balance." else -> null }, @@ -299,7 +299,7 @@ private fun TONUnstakeMode.toDisplayLabel(): String = when (this) { } private fun TONStakingQuoteDirection.inputSymbol(): String = when (this) { - TONStakingQuoteDirection.stake -> "TON" + TONStakingQuoteDirection.stake -> "GRAM" TONStakingQuoteDirection.unstake -> "tsTON" } diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/TransferJettonSheet.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/TransferJettonSheet.kt index 09014663..57339452 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/TransferJettonSheet.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/TransferJettonSheet.kt @@ -248,7 +248,7 @@ fun TransferJettonSheet( // Info Text( - text = "A small amount of TON will be used as a network fee for this transfer.", + text = "A small amount of GRAM will be used as a network fee for this transfer.", style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSurfaceVariant, ) diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/components/TonConnectTransactionParts.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/components/TonConnectTransactionParts.kt index 018a6979..c34a4c9f 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/components/TonConnectTransactionParts.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/ui/sheet/components/TonConnectTransactionParts.kt @@ -82,7 +82,7 @@ private fun ItemEntry(item: TONStructuredItem, index: Int) { when (item) { is TONStructuredItem.Ton -> item.value.let { ton -> EntryCard( - title = "Send TON #${index + 1}", + title = "Send GRAM #${index + 1}", toAddress = ton.address, amount = tonAmount(ton.amount), extraLines = emptyList(), @@ -243,7 +243,7 @@ private fun MoneyFlowRow(transfer: TONTransactionTraceMoneyFlowItem) { val amountText = TonFormatter.formatNanoTon(transfer.amount.removePrefix("-")) val prefix = if (isPositive) "+" else "-" val unit = when (transfer.assetType) { - TONAssetType.ton -> "TON" + TONAssetType.ton -> "GRAM" TONAssetType.nft -> "NFT" TONAssetType.jetton -> "" } @@ -291,12 +291,12 @@ internal fun TransactionPreviewError(message: String) { } private fun assetName(transfer: TONTransactionTraceMoneyFlowItem): String = when (transfer.assetType) { - TONAssetType.ton -> "TON" + TONAssetType.ton -> "GRAM" TONAssetType.jetton -> transfer.tokenAddress?.value?.let(::shortAddress) ?: "Jetton" TONAssetType.nft -> transfer.tokenAddress?.value?.let(::shortAddress) ?: "NFT" } -private fun tonAmount(nano: String): String = "${TonFormatter.formatNanoTon(nano)} TON" +private fun tonAmount(nano: String): String = "${TonFormatter.formatNanoTon(nano)} GRAM" private fun shortAddress(address: String): String = if (address.length > ADDRESS_TRUNCATION * 2) { "${address.take(ADDRESS_TRUNCATION)}...${address.takeLast(ADDRESS_TRUNCATION)}" diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/SendTokensViewModel.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/SendTokensViewModel.kt index 81d1559d..a19a90c6 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/SendTokensViewModel.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/SendTokensViewModel.kt @@ -103,13 +103,13 @@ class SendTokensViewModel( runCatching { tokens += SendableToken( id = "ton", - name = "Toncoin", - symbol = "TON", + name = "Gram", + symbol = "GRAM", decimals = TON_DECIMALS, displayBalance = TonFormatter.formatNanoTon(wallet.balance().value), masterAddress = null, imageSource = null, - requiredAmountInfo = "Minimum transaction: 0.0001 TON", + requiredAmountInfo = "Minimum transaction: 0.0001 GRAM", ) }.onFailure { Log.e(TAG, "Failed to load TON balance", it) } diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/StakingViewModel.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/StakingViewModel.kt index b74b8210..28ed4e45 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/StakingViewModel.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/StakingViewModel.kt @@ -85,10 +85,10 @@ class StakingViewModel( ), ) { val inputTokenSymbol: String - get() = if (direction == TONStakingQuoteDirection.stake) "TON" else "tsTON" + get() = if (direction == TONStakingQuoteDirection.stake) "GRAM" else "tsTON" val receiveTokenSymbol: String - get() = if (direction == TONStakingQuoteDirection.stake) "tsTON" else "TON" + get() = if (direction == TONStakingQuoteDirection.stake) "tsTON" else "GRAM" val canGetQuote: Boolean get() = amount.isNotEmpty() && (amount.toDoubleOrNull() ?: 0.0) > 0 && !isLoadingQuote diff --git a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/SwapViewModel.kt b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/SwapViewModel.kt index 7d9ae6d7..43a87a98 100644 --- a/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/SwapViewModel.kt +++ b/AndroidDemo/app/src/main/java/io/ton/walletkit/demo/presentation/viewmodel/SwapViewModel.kt @@ -53,7 +53,7 @@ class SwapViewModel( } data class UiState( - val fromToken: TONSwapToken = TONSwapToken(address = "ton", decimals = 9.0, name = "TON", symbol = "TON"), + val fromToken: TONSwapToken = TONSwapToken(address = "ton", decimals = 9.0, name = "Gram", symbol = "GRAM"), val toToken: TONSwapToken = TONSwapToken( address = "EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs", decimals = 6.0, diff --git a/AndroidDemo/app/src/main/res/drawable/ic_launcher_foreground.xml b/AndroidDemo/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..40744596 --- /dev/null +++ b/AndroidDemo/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/AndroidDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/AndroidDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 9fe5d849..bcdeecdf 100644 --- a/AndroidDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/AndroidDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,6 @@ - - + + diff --git a/AndroidDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/AndroidDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 9fe5d849..bcdeecdf 100644 --- a/AndroidDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/AndroidDemo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,6 @@ - - + + diff --git a/AndroidDemo/app/src/main/res/values/strings.xml b/AndroidDemo/app/src/main/res/values/strings.xml index 7d9ec713..674c192c 100644 --- a/AndroidDemo/app/src/main/res/values/strings.xml +++ b/AndroidDemo/app/src/main/res/values/strings.xml @@ -90,7 +90,7 @@ Remove Wallet? Are you sure you want to remove this wallet? This will switch to another wallet. - %1$s TON + %1$s GRAM Active @@ -221,17 +221,17 @@ Sent Received Unknown time - -%1$s TON - +%1$s TON + -%1$s GRAM + +%1$s GRAM - Send TON + Send GRAM From - Balance: %1$s TON + Balance: %1$s GRAM Recipient Address EQ... or UQ... Invalid TON address - Amount (TON) + Amount (GRAM) 0.00 Invalid amount Insufficient balance @@ -298,7 +298,7 @@ Renamed wallet to: %1$s Wallet %1$d Unknown - 0 TON + 0 GRAM Success Failed to prepare demo wallet unknown diff --git a/AndroidDemo/designsystem/src/main/java/io/ton/walletkit/demo/designsystem/icons/TonIcon.kt b/AndroidDemo/designsystem/src/main/java/io/ton/walletkit/demo/designsystem/icons/TonIcon.kt index be624ea6..e3a09002 100644 --- a/AndroidDemo/designsystem/src/main/java/io/ton/walletkit/demo/designsystem/icons/TonIcon.kt +++ b/AndroidDemo/designsystem/src/main/java/io/ton/walletkit/demo/designsystem/icons/TonIcon.kt @@ -33,13 +33,6 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.Dp -// Mirrors iOS `Icons/TONIcon.swift` 1-for-1. -// -// Each case is backed by a vector drawable in -// `:designsystem/src/main/res/drawable/.xml`. Resource names are flat -// lowercase to match the conversion the iOS SVGs were dropped through. Two iOS -// names ("Switch", "New") collide with Kotlin/AAPT reserved or near-reserved names -// — those drawables ship as `resource_switch` / `resource_new`. enum class TonIcon(val resourceName: String, val category: Category) { // Tabbar DiscoverFilled("discoverfilled", Category.Tabbar), @@ -81,7 +74,7 @@ enum class TonIcon(val resourceName: String, val category: Category) { Star24("star24", Category.Icons24), SwitchVertical24("switchvertical24", Category.Icons24), Ton("ton", Category.Icons24), - Toncoin("toncoin", Category.Icons24), + Gram("gram", Category.Icons24), TonFill("tonfill", Category.Icons24), Trend("trend", Category.Icons24), Volume("volume", Category.Icons24), @@ -149,7 +142,7 @@ enum class TonIcon(val resourceName: String, val category: Category) { Share40("share40", Category.Icons40), Share40Alt("share40alt", Category.Icons40), TelegramWallet40("telegramwallet40", Category.Icons40), - Toncoin40("toncoin40", Category.Icons40), + Gram40("gram40", Category.Icons40), ; enum class Category { Tabbar, Icons24, Icons20, Icons16, Icons12, Icons40 } diff --git a/AndroidDemo/designsystem/src/main/res/drawable/gram.xml b/AndroidDemo/designsystem/src/main/res/drawable/gram.xml new file mode 100644 index 00000000..7a290654 --- /dev/null +++ b/AndroidDemo/designsystem/src/main/res/drawable/gram.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/AndroidDemo/designsystem/src/main/res/drawable/gram40.xml b/AndroidDemo/designsystem/src/main/res/drawable/gram40.xml new file mode 100644 index 00000000..3221ba5e --- /dev/null +++ b/AndroidDemo/designsystem/src/main/res/drawable/gram40.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/AndroidDemo/designsystem/src/main/res/drawable/toncoin.xml b/AndroidDemo/designsystem/src/main/res/drawable/toncoin.xml deleted file mode 100644 index b91484fd..00000000 --- a/AndroidDemo/designsystem/src/main/res/drawable/toncoin.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/AndroidDemo/designsystem/src/main/res/drawable/toncoin40.xml b/AndroidDemo/designsystem/src/main/res/drawable/toncoin40.xml deleted file mode 100644 index 8407326a..00000000 --- a/AndroidDemo/designsystem/src/main/res/drawable/toncoin40.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - -