Skip to content

Commit e621542

Browse files
authored
(android) Add manual payments import/export (#685)
The user can now manually export the payments database to a public folder of the device. The file is zipped and encrypted with ChaCha20Poly1305 using the cloudkey already used by iOS. When restoring a wallet, the user can also pick a payments backup file after typing down the seed. This is optional.
1 parent 57faa66 commit e621542

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1773
-916
lines changed

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/AppView.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,12 @@ import fr.acinq.phoenix.android.components.dialogs.Dialog
7070
import fr.acinq.phoenix.android.components.openLink
7171
import fr.acinq.phoenix.android.components.screenlock.LockPrompt
7272
import fr.acinq.phoenix.android.home.HomeView
73-
import fr.acinq.phoenix.android.init.CreateWalletView
74-
import fr.acinq.phoenix.android.init.InitWallet
75-
import fr.acinq.phoenix.android.init.RestoreWalletView
73+
import fr.acinq.phoenix.android.initwallet.create.CreateWalletView
74+
import fr.acinq.phoenix.android.initwallet.InitWallet
75+
import fr.acinq.phoenix.android.initwallet.restore.RestoreWalletView
7676
import fr.acinq.phoenix.android.intro.IntroView
7777
import fr.acinq.phoenix.android.payments.details.PaymentDetailsView
78-
import fr.acinq.phoenix.android.payments.history.CsvExportView
78+
import fr.acinq.phoenix.android.payments.history.PaymentsExportView
7979
import fr.acinq.phoenix.android.payments.history.PaymentsHistoryView
8080
import fr.acinq.phoenix.android.payments.send.liquidity.RequestLiquidityView
8181
import fr.acinq.phoenix.android.payments.receive.ReceiveView
@@ -223,7 +223,7 @@ fun AppView(
223223
CreateWalletView(onSeedWritten = { navController.navigate(Screen.Startup.route) })
224224
}
225225
composable(Screen.RestoreWallet.route) {
226-
RestoreWalletView(onSeedWritten = { navController.navigate(Screen.Startup.route) })
226+
RestoreWalletView(onRestoreDone = { navController.navigate(Screen.Startup.route) })
227227
}
228228
composable(Screen.Home.route) {
229229
RequireStarted(walletState) {
@@ -337,11 +337,11 @@ fun AppView(
337337
onBackClick = { navController.popBackStack() },
338338
paymentsViewModel = paymentsViewModel,
339339
onPaymentClick = { navigateToPaymentDetails(navController, id = it, isFromEvent = false) },
340-
onCsvExportClick = { navController.navigate(Screen.PaymentsCsvExport.route) },
340+
onCsvExportClick = { navController.navigate(Screen.PaymentsExport.route) },
341341
)
342342
}
343-
composable(Screen.PaymentsCsvExport.route) {
344-
CsvExportView(onBackClick = {
343+
composable(Screen.PaymentsExport.route) {
344+
PaymentsExportView(onBackClick = {
345345
navController.navigate(Screen.PaymentsHistory.route) {
346346
popUpTo(Screen.PaymentsHistory.route) { inclusive = true }
347347
}

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/Navigation.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ sealed class Screen(val route: String) {
2929
data object Send : Screen("send")
3030
data object PaymentDetails : Screen("payments")
3131
data object PaymentsHistory : Screen("payments/all")
32-
data object PaymentsCsvExport : Screen("payments/export")
32+
data object PaymentsExport : Screen("payments/export")
3333

3434
// -- settings
3535
data object Settings : Screen("settings")

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/components/Buttons.kt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import fr.acinq.bitcoin.TxId
5151
import fr.acinq.phoenix.android.R
5252
import fr.acinq.phoenix.android.business
5353
import fr.acinq.phoenix.android.utils.copyToClipboard
54+
import fr.acinq.phoenix.android.utils.mutedBgColor
5455
import fr.acinq.phoenix.utils.BlockchainExplorer
5556

5657

@@ -126,6 +127,28 @@ fun FilledButton(
126127
)
127128
}
128129

130+
@Composable
131+
fun MutedFilledButton(
132+
modifier: Modifier = Modifier,
133+
text: String? = null,
134+
icon: Int? = null,
135+
maxLines: Int = Int.MAX_VALUE,
136+
enabled: Boolean = true,
137+
enabledEffect: Boolean = true,
138+
space: Dp = 12.dp,
139+
padding: PaddingValues = PaddingValues(12.dp),
140+
onClick: () -> Unit,
141+
) {
142+
FilledButton(
143+
shape = RoundedCornerShape(12.dp),
144+
backgroundColor = mutedBgColor,
145+
textStyle = MaterialTheme.typography.button,
146+
iconTint = MaterialTheme.colors.onSurface,
147+
modifier = modifier, text = text, icon = icon, maxLines = maxLines, enabled = enabled,
148+
enabledEffect = enabledEffect, space = space, padding = padding, onClick = onClick,
149+
)
150+
}
151+
129152
/** Button that looks like an inline link, should fit in with regular text views. */
130153
@Composable
131154
fun InlineButton(

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/components/feedback/SuccessMessage.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616

1717
package fr.acinq.phoenix.android.components.feedback
1818

19+
import androidx.compose.foundation.layout.PaddingValues
1920
import androidx.compose.runtime.Composable
2021
import androidx.compose.ui.Alignment
2122
import androidx.compose.ui.Modifier
23+
import androidx.compose.ui.unit.dp
2224
import fr.acinq.phoenix.android.R
2325
import fr.acinq.phoenix.android.utils.positiveColor
2426

@@ -28,6 +30,7 @@ fun SuccessMessage(
2830
modifier: Modifier = Modifier,
2931
details: String? = null,
3032
alignment: Alignment.Horizontal = Alignment.Start,
33+
padding: PaddingValues = PaddingValues(16.dp),
3134
) {
3235
FeedbackMessage(
3336
header = header,
@@ -36,5 +39,6 @@ fun SuccessMessage(
3639
iconColor = positiveColor,
3740
modifier = modifier,
3841
alignment = alignment,
42+
padding = padding
3943
)
4044
}

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/home/HomePayments.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,9 @@ import fr.acinq.lightning.utils.UUID
3333
import fr.acinq.phoenix.android.PaymentsViewModel
3434
import fr.acinq.phoenix.android.R
3535
import fr.acinq.phoenix.android.components.FilledButton
36-
import fr.acinq.phoenix.android.payments.history.PaymentLine
36+
import fr.acinq.phoenix.android.payments.details.PaymentLine
3737
import fr.acinq.phoenix.android.utils.datastore.HomeAmountDisplayMode
3838
import fr.acinq.phoenix.data.WalletPaymentInfo
39-
import fr.acinq.phoenix.managers.WalletBalance
4039

4140

4241
@Composable

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/init/InitView.kt

Lines changed: 0 additions & 163 deletions
This file was deleted.

0 commit comments

Comments
 (0)