diff --git a/app/src/main/java/com/example/umlandowallet/DispatchActivity.kt b/app/src/main/java/com/example/umlandowallet/DispatchActivity.kt index f872447..84768f2 100644 --- a/app/src/main/java/com/example/umlandowallet/DispatchActivity.kt +++ b/app/src/main/java/com/example/umlandowallet/DispatchActivity.kt @@ -4,7 +4,6 @@ import android.content.Intent import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity -import com.example.umlandowallet.data.OnchainWallet import com.example.umlandowallet.utils.LDKTAG import java.io.File diff --git a/app/src/main/java/com/example/umlandowallet/HandleEvent.kt b/app/src/main/java/com/example/umlandowallet/HandleEvent.kt index b9d7d54..e74c9d2 100644 --- a/app/src/main/java/com/example/umlandowallet/HandleEvent.kt +++ b/app/src/main/java/com/example/umlandowallet/HandleEvent.kt @@ -1,8 +1,10 @@ package com.example.umlandowallet import android.util.Log -import com.example.umlandowallet.data.OnchainWallet +import com.example.umlandowallet.Global.channelManager import com.example.umlandowallet.utils.LDKTAG +import com.example.umlandowallet.utils.storeEvent +import com.example.umlandowallet.utils.toHex import org.ldk.structs.* import org.ldk.util.UInt128 import kotlin.random.Random @@ -50,7 +52,7 @@ fun handleEvent(event: Event) { storeEvent("${Global.homeDir}/events_open_channel_request", params) Global.eventsFundingGenerationReady = Global.eventsFundingGenerationReady.plus(params.toString()) - Global.channelManager!!.accept_inbound_channel( + channelManager!!.accept_inbound_channel( event.temporary_channel_id, event.counterparty_node_id, userChannelId @@ -98,4 +100,15 @@ fun handleEvent(event: Event) { if(event is Event.PaymentFailed) { Log.i(LDKTAG, "Payment Failed") } + + if(event is Event.PaymentClaimable) { + Log.i(LDKTAG, "Event.PaymentClaimable") + if (event.payment_hash != null) { + channelManager?.claim_funds(event.payment_hash) + } + } + + if(event is Event.PaymentClaimed) { + Log.i(LDKTAG, "Claimed Payment: ${event.payment_hash}") + } } diff --git a/app/src/main/java/com/example/umlandowallet/data/OnchainWallet.kt b/app/src/main/java/com/example/umlandowallet/OnchainWallet.kt similarity index 97% rename from app/src/main/java/com/example/umlandowallet/data/OnchainWallet.kt rename to app/src/main/java/com/example/umlandowallet/OnchainWallet.kt index 178e4d0..eb05789 100644 --- a/app/src/main/java/com/example/umlandowallet/data/OnchainWallet.kt +++ b/app/src/main/java/com/example/umlandowallet/OnchainWallet.kt @@ -1,9 +1,8 @@ -package com.example.umlandowallet.data +package com.example.umlandowallet import android.util.Log -import com.example.umlandowallet.Global -import com.example.umlandowallet.toHex import com.example.umlandowallet.utils.LDKTAG +import com.example.umlandowallet.utils.toHex import org.bitcoindevkit.* import java.io.File diff --git a/app/src/main/java/com/example/umlandowallet/Start.kt b/app/src/main/java/com/example/umlandowallet/Start.kt index bfa7c27..74cee1a 100644 --- a/app/src/main/java/com/example/umlandowallet/Start.kt +++ b/app/src/main/java/com/example/umlandowallet/Start.kt @@ -2,8 +2,10 @@ package com.example.umlandowallet import android.util.Log import com.example.umlandowallet.data.WatchedTransaction +import com.example.umlandowallet.data.remote.AccessImpl import com.example.umlandowallet.data.remote.Service -import com.example.umlandowallet.utils.LDKTAG +import com.example.umlandowallet.ui.settings.ListItem +import com.example.umlandowallet.utils.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -80,7 +82,6 @@ fun start( val channelHandshakeLimits = ChannelHandshakeLimits.with_default() channelHandshakeLimits._max_minimum_depth = 1 - channelHandshakeLimits._force_announced_channel_preference = false userConfig._channel_handshake_limits = channelHandshakeLimits val params = ProbabilisticScoringParameters.with_default() @@ -99,7 +100,7 @@ fun start( try { if (serializedChannelManager != null) { // loading from disk (restarting) - Global.channelManagerConstructor = ChannelManagerConstructor( + val channelManagerConstructor = ChannelManagerConstructor( serializedChannelManager, serializedChannelMonitors, userConfig, @@ -112,15 +113,29 @@ fun start( logger ) - Global.channelManager = Global.channelManagerConstructor!!.channel_manager - Global.peerManager = Global.channelManagerConstructor!!.peer_manager - Global.nioPeerHandler = Global.channelManagerConstructor!!.nio_peer_handler - Global.router = Global.channelManagerConstructor!!.net_graph - Global.invoicePayer = Global.channelManagerConstructor!!.payer + + Global.channelManagerConstructor = channelManagerConstructor + Global.channelManager = channelManagerConstructor.channel_manager + Global.nioPeerHandler = channelManagerConstructor.nio_peer_handler + Global.peerManager = channelManagerConstructor.peer_manager + Global.router = channelManagerConstructor.net_graph + Global.invoicePayer = channelManagerConstructor.payer Global.scorer = scorer + + channelManagerConstructor.chain_sync_completed( + ChannelManagerEventHandler, + scorer + ) + + // If you want to communicate from your computer to your emulator, + // the IP address to use is 127.0.0.1 and you need to do some port forwarding + // using ADB in command line e.g adb forward tcp:9777 tcp:9777 + // If you want to do the reverse use 10.0.2.2 instead of localhost + + channelManagerConstructor.nio_peer_handler.bind_listener(InetSocketAddress("127.0.0.1", 9777)) } else { // fresh start - Global.channelManagerConstructor = ChannelManagerConstructor( + val channelManagerConstructor = ChannelManagerConstructor( Network.LDKNetwork_Regtest, userConfig, latestBlockHash.toByteArray(), @@ -133,23 +148,20 @@ fun start( logger ) - Global.channelManager = Global.channelManagerConstructor!!.channel_manager - Global.peerManager = Global.channelManagerConstructor!!.peer_manager - Global.nioPeerHandler = Global.channelManagerConstructor!!.nio_peer_handler - Global.router = Global.channelManagerConstructor!!.net_graph + Global.channelManagerConstructor = channelManagerConstructor + Global.channelManager = channelManagerConstructor.channel_manager + Global.peerManager = channelManagerConstructor.peer_manager + Global.nioPeerHandler = channelManagerConstructor.nio_peer_handler + Global.router = channelManagerConstructor.net_graph Global.scorer = scorer - Global.invoicePayer = Global.channelManagerConstructor!!.payer - Global.channelManagerConstructor!!.chain_sync_completed( + Global.invoicePayer = channelManagerConstructor.payer + channelManagerConstructor.chain_sync_completed( ChannelManagerEventHandler, scorer ) - } - // If you want to communicate from your computer to your emulator, - // the IP address to use is 127.0.0.1 and you need to do some port forwarding - // using ADB in command line e.g adb forward tcp:9777 tcp:9777 - // If you want to do the reverse use 10.0.2.2 instead of localhost - Global.nioPeerHandler!!.bind_listener(InetSocketAddress("127.0.0.1", 9777)) + channelManagerConstructor.nio_peer_handler.bind_listener(InetSocketAddress("127.0.0.1", 9777)) + } } catch (e: Exception) { Log.i(LDKTAG, "LDK: can't start, ${e.message}") } diff --git a/app/src/main/java/com/example/umlandowallet/data/remote/Access.kt b/app/src/main/java/com/example/umlandowallet/data/remote/Access.kt index 4a793b5..19cf29f 100644 --- a/app/src/main/java/com/example/umlandowallet/data/remote/Access.kt +++ b/app/src/main/java/com/example/umlandowallet/data/remote/Access.kt @@ -1,36 +1,29 @@ package com.example.umlandowallet.data.remote -import com.example.umlandowallet.data.OnchainWallet -import org.bitcoindevkit.* +import com.example.umlandowallet.OnchainWallet import org.ldk.structs.ChainMonitor import org.ldk.structs.ChannelManager import org.ldk.structs.TwoTuple_TxidBlockHashZ interface Access { - suspend fun sync(): Unit + suspend fun sync() - suspend fun syncWallet(onchainWallet: OnchainWallet): Unit + suspend fun syncWallet(onchainWallet: OnchainWallet) suspend fun syncBestBlockConnected( channelManager: ChannelManager, chainMonitor: ChainMonitor - ): Unit + ) suspend fun syncTransactionConfirmed( relevantTxIds: Array, channelManager: ChannelManager, chainMonitor: ChainMonitor - ): Unit + ) suspend fun syncTransactionsUnconfirmed( relevantTxIds: Array, channelManager: ChannelManager, chainMonitor: ChainMonitor - ): Unit - - companion object { - fun create(): Access { - return AccessImpl() - } - } + ) } \ No newline at end of file diff --git a/app/src/main/java/com/example/umlandowallet/data/remote/AccessImpl.kt b/app/src/main/java/com/example/umlandowallet/data/remote/AccessImpl.kt index 4d48586..cf9d741 100644 --- a/app/src/main/java/com/example/umlandowallet/data/remote/AccessImpl.kt +++ b/app/src/main/java/com/example/umlandowallet/data/remote/AccessImpl.kt @@ -1,10 +1,9 @@ package com.example.umlandowallet.data.remote -import com.example.umlandowallet.ChannelManagerEventHandler -import com.example.umlandowallet.Global +import com.example.umlandowallet.* import com.example.umlandowallet.data.* -import com.example.umlandowallet.toByteArray -import com.example.umlandowallet.toHex +import com.example.umlandowallet.utils.toByteArray +import com.example.umlandowallet.utils.toHex import org.ldk.structs.ChainMonitor import org.ldk.structs.ChannelManager import org.ldk.structs.TwoTuple_TxidBlockHashZ @@ -86,7 +85,7 @@ class AccessImpl: Access { cTx.block_header.toByteArray(), arrayOf( TwoTuple_usizeTransactionZ.of( - cTx.block_height.toLong(), + cTx.merkle_proof_pos.toLong(), cTx.tx ) ), @@ -97,7 +96,7 @@ class AccessImpl: Access { cTx.block_header.toByteArray(), arrayOf( TwoTuple_usizeTransactionZ.of( - cTx.block_height.toLong(), + cTx.merkle_proof_pos.toLong(), cTx.tx ) ), diff --git a/app/src/main/java/com/example/umlandowallet/data/remote/Service.kt b/app/src/main/java/com/example/umlandowallet/data/remote/Service.kt index 42cffeb..0c7f1d4 100644 --- a/app/src/main/java/com/example/umlandowallet/data/remote/Service.kt +++ b/app/src/main/java/com/example/umlandowallet/data/remote/Service.kt @@ -21,8 +21,6 @@ interface Service { suspend fun getTxHex(txid: String): String -// suspend fun getTxStatus(txid: String) : TxStatus - suspend fun getHeader(hash: String) : String suspend fun getMerkleProof(txid: String) : MerkleProof diff --git a/app/src/main/java/com/example/umlandowallet/data/remote/ServiceImpl.kt b/app/src/main/java/com/example/umlandowallet/data/remote/ServiceImpl.kt index 07c6753..5a98f6a 100644 --- a/app/src/main/java/com/example/umlandowallet/data/remote/ServiceImpl.kt +++ b/app/src/main/java/com/example/umlandowallet/data/remote/ServiceImpl.kt @@ -4,9 +4,8 @@ import android.util.Log import com.example.umlandowallet.Global import com.example.umlandowallet.data.MerkleProof import com.example.umlandowallet.data.Tx -import com.example.umlandowallet.data.TxStatus -import com.example.umlandowallet.toByteArray -import com.example.umlandowallet.toHex +import com.example.umlandowallet.utils.toByteArray +import com.example.umlandowallet.utils.toHex import com.example.umlandowallet.utils.LDKTAG import io.ktor.client.* import io.ktor.client.call.* diff --git a/app/src/main/java/com/example/umlandowallet/ui/Navigation.kt b/app/src/main/java/com/example/umlandowallet/ui/Navigation.kt index 8baa901..1af6bc0 100644 --- a/app/src/main/java/com/example/umlandowallet/ui/Navigation.kt +++ b/app/src/main/java/com/example/umlandowallet/ui/Navigation.kt @@ -171,6 +171,23 @@ fun Navigation( } ) { SendPaymentScreen() } + // Receive Payment + composable( + route = Screen.ReceivePaymentScreen.route, + enterTransition = { + slideIntoContainer(AnimatedContentScope.SlideDirection.Up, animationSpec = tween(animationDuration)) + }, + popEnterTransition = { + slideIntoContainer(AnimatedContentScope.SlideDirection.Up, animationSpec = tween(animationDuration)) + }, + exitTransition = { + slideOutOfContainer(AnimatedContentScope.SlideDirection.Down, animationSpec = tween(animationDuration)) + }, + popExitTransition = { + slideOutOfContainer(AnimatedContentScope.SlideDirection.Down, animationSpec = tween(animationDuration)) + } + ) { ReceivePaymentScreen() } + // Recovery phrase composable( route = Screen.RecoveryPhraseScreen.route, diff --git a/app/src/main/java/com/example/umlandowallet/ui/Screen.kt b/app/src/main/java/com/example/umlandowallet/ui/Screen.kt index 31b7e3f..3105e66 100644 --- a/app/src/main/java/com/example/umlandowallet/ui/Screen.kt +++ b/app/src/main/java/com/example/umlandowallet/ui/Screen.kt @@ -9,5 +9,6 @@ sealed class Screen(val route: String) { object OpenChannelScreen : Screen("open_channel") object ListChannelsScreen : Screen("list_channels") object SendPaymentScreen : Screen("send_payment") + object ReceivePaymentScreen: Screen("receive_payment") object RecoveryPhraseScreen : Screen("recovery_phrase") } diff --git a/app/src/main/java/com/example/umlandowallet/ui/SettingsScreen.kt b/app/src/main/java/com/example/umlandowallet/ui/SettingsScreen.kt index 02bf35e..c9a0b0e 100644 --- a/app/src/main/java/com/example/umlandowallet/ui/SettingsScreen.kt +++ b/app/src/main/java/com/example/umlandowallet/ui/SettingsScreen.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController import com.example.umlandowallet.R -import com.example.umlandowallet.data.OnchainWallet +import com.example.umlandowallet.OnchainWallet import com.example.umlandowallet.utils.LDKTAG @Composable @@ -128,6 +128,19 @@ fun SettingsScreen(navController: NavController) { } ) + // Receive payment + SettingButton( + label = "Receive payment", + onClick = { + navController.navigate(Screen.ReceivePaymentScreen.route) { + navController.graph.startDestinationRoute?.let { route -> + popUpTo(route) + } + launchSingleTop = true + } + } + ) + Text( text = "Onchain Wallet", fontSize = 18.sp, diff --git a/app/src/main/java/com/example/umlandowallet/ui/settings/ListChannelsScreen.kt b/app/src/main/java/com/example/umlandowallet/ui/settings/ListChannelsScreen.kt index 12f6439..d72a7c6 100644 --- a/app/src/main/java/com/example/umlandowallet/ui/settings/ListChannelsScreen.kt +++ b/app/src/main/java/com/example/umlandowallet/ui/settings/ListChannelsScreen.kt @@ -1,25 +1,19 @@ package com.example.umlandowallet.ui.settings -import androidx.compose.foundation.background +import android.util.Log import androidx.compose.foundation.layout.* -import androidx.compose.foundation.lazy.LazyRow -import androidx.compose.foundation.lazy.items import androidx.compose.material3.* import androidx.compose.runtime.* -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.umlandowallet.Global -import com.example.umlandowallet.toByteArray -import com.example.umlandowallet.toHex -import com.example.umlandowallet.ui.Screen +import com.example.umlandowallet.utils.LDKTAG +import com.example.umlandowallet.utils.toHex import org.ldk.structs.* -import java.time.temporal.TemporalAmount @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -55,20 +49,16 @@ fun ListChannelsScreen() { usableChannels.forEach { channel -> val status = channel._is_channel_ready - var balance = 0L - balance = if (channel._outbound_capacity_msat == 0L) { - 0L - } else { - channel._outbound_capacity_msat / channel._balance_msat - } val nodeId = channel._counterparty._node_id.toHex() val sendAmount = channel._outbound_capacity_msat / 1000 val receiveAmount = channel._inbound_capacity_msat / 1000 + val progress: Double = receiveAmount.toDouble() / (sendAmount.toDouble() + receiveAmount.toDouble()) + Log.i(LDKTAG, "Progress update: $progress with $sendAmount and $receiveAmount") ListItem( status, nodeId, - balance.toFloat(), + progress.toFloat(), sendAmount.toString(), receiveAmount.toString() ) diff --git a/app/src/main/java/com/example/umlandowallet/ui/settings/ListPeersScreen.kt b/app/src/main/java/com/example/umlandowallet/ui/settings/ListPeersScreen.kt index a9c9d70..90535dd 100644 --- a/app/src/main/java/com/example/umlandowallet/ui/settings/ListPeersScreen.kt +++ b/app/src/main/java/com/example/umlandowallet/ui/settings/ListPeersScreen.kt @@ -8,8 +8,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.example.umlandowallet.Global -import com.example.umlandowallet.toHex +import com.example.umlandowallet.Global.peerManager +import com.example.umlandowallet.utils.toHex @Composable fun ListPeersScreen() { @@ -27,7 +27,7 @@ fun ListPeersScreen() { .padding(start = 24.dp, end = 24.dp, bottom = 24.dp) ) - val peers = Global.peerManager!!.get_peer_node_ids() + val peers = peerManager!!._peer_node_ids val peersList: MutableList = mutableListOf() peers.forEach { peersList.add(it.toHex()) diff --git a/app/src/main/java/com/example/umlandowallet/ui/settings/NodeIdScreen.kt b/app/src/main/java/com/example/umlandowallet/ui/settings/NodeIdScreen.kt index f1d5507..71c9bc0 100644 --- a/app/src/main/java/com/example/umlandowallet/ui/settings/NodeIdScreen.kt +++ b/app/src/main/java/com/example/umlandowallet/ui/settings/NodeIdScreen.kt @@ -9,7 +9,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.umlandowallet.Global -import com.example.umlandowallet.toHex +import com.example.umlandowallet.utils.toHex @Composable fun NodeIdScreen() { diff --git a/app/src/main/java/com/example/umlandowallet/ui/settings/OpenChannelScreen.kt b/app/src/main/java/com/example/umlandowallet/ui/settings/OpenChannelScreen.kt index d97ff97..df03417 100644 --- a/app/src/main/java/com/example/umlandowallet/ui/settings/OpenChannelScreen.kt +++ b/app/src/main/java/com/example/umlandowallet/ui/settings/OpenChannelScreen.kt @@ -13,7 +13,9 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.example.umlandowallet.Global -import com.example.umlandowallet.toByteArray +import com.example.umlandowallet.Global.channelManager +import com.example.umlandowallet.Global.temporaryChannelId +import com.example.umlandowallet.utils.toByteArray import com.example.umlandowallet.utils.LDKTAG import org.ldk.structs.ChannelHandshakeConfig import org.ldk.structs.Result__u832APIErrorZ @@ -28,7 +30,6 @@ fun OpenChannelScreen() { } Column( - // verticalArrangement = Arrangement.Center, modifier = Modifier .fillMaxSize() .padding(top = 48.dp) @@ -64,10 +65,10 @@ fun OpenChannelScreen() { } fun createChannel(pubKey: String) { - Global.temporaryChannelId = null + temporaryChannelId = null - val amount = 100_000L - val pushMsat = 1_000L + val amount: Long = 10000000 + val pushMsat: Long = 10000 val userId = UInt128(42L) // public aka announced channel @@ -78,7 +79,7 @@ fun createChannel(pubKey: String) { channelHandshakeConfig._announced_channel = false userConfig._channel_handshake_config = channelHandshakeConfig - val createChannelResult = Global.channelManager!!.create_channel( + val createChannelResult = channelManager!!.create_channel( pubKey.toByteArray(), amount, pushMsat, userId, userConfig ) diff --git a/app/src/main/java/com/example/umlandowallet/ui/settings/ReceivePaymentScreen.kt b/app/src/main/java/com/example/umlandowallet/ui/settings/ReceivePaymentScreen.kt new file mode 100644 index 0000000..8916936 --- /dev/null +++ b/app/src/main/java/com/example/umlandowallet/ui/settings/ReceivePaymentScreen.kt @@ -0,0 +1,78 @@ +package com.example.umlandowallet.ui.settings + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.ClipboardManager +import androidx.compose.ui.platform.LocalClipboardManager +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.umlandowallet.Global.channelManager +import com.example.umlandowallet.Global.keysManager +import com.example.umlandowallet.LDKLogger +import org.ldk.enums.Currency +import org.ldk.structs.Logger +import org.ldk.structs.Option_u64Z +import org.ldk.structs.Result_InvoiceSignOrCreationErrorZ +import org.ldk.structs.Result_InvoiceSignOrCreationErrorZ.Result_InvoiceSignOrCreationErrorZ_OK +import org.ldk.structs.UtilMethods + +@Composable +fun ReceivePaymentScreen() { + val clipboardManager: ClipboardManager = LocalClipboardManager.current + val logger: Logger = Logger.new_impl(LDKLogger) + + val description = "coffee" + val amtMsat: Long = 200000000 + val invoice: Result_InvoiceSignOrCreationErrorZ = UtilMethods.create_invoice_from_channelmanager( + channelManager, + keysManager!!.as_KeysInterface(), + logger, + Currency.LDKCurrency_Regtest, + Option_u64Z.some(amtMsat), + description, + 300 + ) + + val invoiceResult = (invoice as Result_InvoiceSignOrCreationErrorZ_OK).res + val encodedInvoice = invoiceResult.to_str() + + Column( + modifier = Modifier + .fillMaxSize() + .padding(top = 48.dp) + ) + { + Text( + text = "Lightning Invoice", + fontSize = 24.sp, + fontWeight = FontWeight.SemiBold, + color = Color(0xff1f0208), + modifier = Modifier + .padding(start = 24.dp, end = 24.dp, bottom = 24.dp) + ) + Text( + text = encodedInvoice, + modifier = Modifier + .fillMaxWidth() + .padding(start = 24.dp, end = 24.dp, bottom = 24.dp) ) + Button( + onClick = { + clipboardManager.setText(AnnotatedString((encodedInvoice))) + }, + modifier = Modifier.padding(horizontal = 24.dp, vertical = 8.dp), + ) { + Text(text = "Copy invoice") + } + } +} diff --git a/app/src/main/java/com/example/umlandowallet/ui/settings/RecoveryPhraseScreen.kt b/app/src/main/java/com/example/umlandowallet/ui/settings/RecoveryPhraseScreen.kt index 73a57e3..7b24d2c 100644 --- a/app/src/main/java/com/example/umlandowallet/ui/settings/RecoveryPhraseScreen.kt +++ b/app/src/main/java/com/example/umlandowallet/ui/settings/RecoveryPhraseScreen.kt @@ -8,7 +8,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.example.umlandowallet.data.OnchainWallet +import com.example.umlandowallet.OnchainWallet @Composable fun RecoveryPhraseScreen() { diff --git a/app/src/main/java/com/example/umlandowallet/Utils.kt b/app/src/main/java/com/example/umlandowallet/utils/Helpers.kt similarity index 84% rename from app/src/main/java/com/example/umlandowallet/Utils.kt rename to app/src/main/java/com/example/umlandowallet/utils/Helpers.kt index 53cc92b..ec0d0f1 100644 --- a/app/src/main/java/com/example/umlandowallet/Utils.kt +++ b/app/src/main/java/com/example/umlandowallet/utils/Helpers.kt @@ -1,10 +1,9 @@ -package com.example.umlandowallet +package com.example.umlandowallet.utils import android.util.Log -import com.example.umlandowallet.utils.LDKTAG +import com.example.umlandowallet.Global +import com.example.umlandowallet.WritableMap import java.io.File -import java.math.BigInteger -import java.security.MessageDigest import com.google.common.io.BaseEncoding fun ByteArray.toHex(): String { diff --git a/app/src/main/java/com/example/umlandowallet/WriteableMap.kt b/app/src/main/java/com/example/umlandowallet/utils/WriteableMap.kt similarity index 100% rename from app/src/main/java/com/example/umlandowallet/WriteableMap.kt rename to app/src/main/java/com/example/umlandowallet/utils/WriteableMap.kt