Skip to content

Commit 27d2543

Browse files
committed
Merge branch 'master' into mainnet
2 parents c9a03c2 + 128aee7 commit 27d2543

File tree

37 files changed

+343
-386
lines changed

37 files changed

+343
-386
lines changed

phoenix-android/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ android {
2525
applicationId = "fr.acinq.phoenix.mainnet"
2626
minSdk = 26
2727
targetSdk = 34
28-
versionCode = 97
29-
versionName = "2.4.4"
28+
versionCode = 98
29+
versionName = gitCommitHash()
3030
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
3131
resourceConfigurations.addAll(listOf("en", "fr", "de", "es", "b+es+419", "cs", "pt-rBR", "sk", "vi", "sw"))
3232
}

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,11 @@ class MainActivity : AppCompatActivity() {
8383
lifecycleScope.launch {
8484
val doDataMigration = LegacyPrefsDatastore.getDataMigrationExpected(applicationContext).filterNotNull().first()
8585
if (doDataMigration) {
86-
delay(7_000)
86+
delay(3_000)
8787
LegacyMigrationHelper.migrateLegacyPayments(applicationContext)
88-
delay(5_000)
88+
delay(1_000)
8989
LegacyPrefsDatastore.saveDataMigrationExpected(applicationContext, false)
90+
tryReconnect()
9091
}
9192
}
9293

@@ -96,8 +97,11 @@ class MainActivity : AppCompatActivity() {
9697
application.business.filterNotNull().map { it.peerManager.getPeer().eventsFlow }.flattenMerge().collect {
9798
if (it is PhoenixAndroidLegacyInfoEvent) {
9899
if (it.info.hasChannels) {
99-
log.info("legacy channels have been found")
100-
LegacyPrefsDatastore.saveStartLegacyApp(applicationContext, LegacyAppStatus.Required.Expected)
100+
val legacyState = LegacyPrefsDatastore.getLegacyAppStatus(applicationContext).filterNotNull().first()
101+
log.info("legacy channels have been found, in legacy_state=$legacyState")
102+
if (legacyState is LegacyAppStatus.Required || legacyState is LegacyAppStatus.Unknown) {
103+
LegacyPrefsDatastore.saveStartLegacyApp(applicationContext, LegacyAppStatus.Required.Expected)
104+
}
101105
} else {
102106
log.info("no legacy channels were found")
103107
LegacyPrefsDatastore.savePrefsMigrationExpected(applicationContext, false)

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,13 @@ private fun DisclaimerView(
114114
verticalArrangement = Arrangement.spacedBy(8.dp)
115115
) {
116116
Card(internalPadding = PaddingValues(16.dp)) {
117-
Text(stringResource(R.string.restore_disclaimer_message))
117+
Text(stringResource(R.string.restore_disclaimer_message_1_title), style = MaterialTheme.typography.h5)
118+
Spacer(modifier = Modifier.height(6.dp))
119+
Text(stringResource(R.string.restore_disclaimer_message_1_body))
120+
Spacer(modifier = Modifier.height(16.dp))
121+
Text(stringResource(R.string.restore_disclaimer_message_2_title), style = MaterialTheme.typography.h5)
122+
Spacer(modifier = Modifier.height(6.dp))
123+
Text(stringResource(R.string.restore_disclaimer_message_2_body))
118124
}
119125
Checkbox(
120126
text = stringResource(R.string.utils_ack),

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/payments/receive/ReceiveLightningView.kt

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -193,23 +193,11 @@ fun LightningInvoiceView(
193193
TorWarning()
194194
HSeparator(width = 50.dp)
195195
Spacer(modifier = Modifier.height(24.dp))
196-
Box {
197-
FilledButton(
198-
text = stringResource(id = R.string.receive_toggle_offer_button),
199-
icon = R.drawable.ic_qrcode,
200-
onClick = { showOfferDialog = true },
201-
)
202-
Text(
203-
text = stringResource(id = R.string.receive_toggle_offer_new_overlay),
204-
modifier = Modifier
205-
.rotate(-38f)
206-
.offset((-9).dp, (-4).dp)
207-
.background(red500)
208-
.padding(horizontal = 4.dp, vertical = 2.dp),
209-
color = MaterialTheme.colors.onPrimary,
210-
fontSize = 12.sp
211-
)
212-
}
196+
FilledButton(
197+
text = stringResource(id = R.string.receive_toggle_offer_button),
198+
icon = R.drawable.ic_qrcode,
199+
onClick = { showOfferDialog = true },
200+
)
213201
}
214202
}
215203

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/payments/send/PrepareSendView.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,13 +143,13 @@ fun SendView(
143143
SendToOfferView(offer = data.offer, onBackClick = onBackClick, onPaymentSent = { navController.popToHome() })
144144
}
145145
is SendManager.ParseResult.Uri -> {
146-
SendSpliceOutView(requestedAmount = data.uri.amount, address = data.uri.address, onBackClick = onBackClick, onSpliceOutSuccess = {navController.popToHome() })
146+
SendSpliceOutView(requestedAmount = data.uri.amount, address = data.uri.address, onBackClick = onBackClick, onSpliceOutSuccess = { navController.popToHome() })
147147
}
148148
is SendManager.ParseResult.Lnurl.Pay -> {
149149
LnurlPayView(payIntent = data.paymentIntent, onBackClick, onPaymentSent = { navController.popToHome() })
150150
}
151151
is SendManager.ParseResult.Lnurl.Withdraw -> {
152-
LnurlWithdrawView(withdraw = data.lnurlWithdraw, onBackClick = onBackClick, onFeeManagementClick = { navController.navigate(Screen.LiquidityPolicy.route) }, onWithdrawDone = { navController.popToHome()})
152+
LnurlWithdrawView(withdraw = data.lnurlWithdraw, onBackClick = onBackClick, onFeeManagementClick = { navController.navigate(Screen.LiquidityPolicy.route) }, onWithdrawDone = { navController.popToHome() })
153153
}
154154
is SendManager.ParseResult.Lnurl.Auth -> {
155155
LnurlAuthView(auth = data.auth, onBackClick = { navController.popBackStack() }, onChangeAuthSchemeSettingClick = { navController.navigate("${Screen.PaymentSettings.route}?showAuthSchemeDialog=true") },

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/payments/send/lnurl/LnurlPayViewModel.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ class LnurlPayViewModel(private val sendManager: SendManager) : ViewModel() {
6060
val invoice = result.value
6161
state.value = LnurlPayViewState.PayingInvoice(invoice)
6262
sendManager.lnurlPay_payInvoice(payIntent, amount, comment, invoice, fees)
63-
onPaymentSent()
63+
viewModelScope.launch(Dispatchers.Main) {
64+
onPaymentSent()
65+
}
6466
}
6567
}
6668
}

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/settings/NotificationsView.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,10 @@ private fun ImportantNotification(
346346
safeLet(actionText, onActionClick) { text, onClick ->
347347
Button(
348348
text = text, textStyle = MaterialTheme.typography.body2.copy(fontSize = 16.sp),
349+
icon = R.drawable.ic_chevron_right,
349350
modifier = Modifier.offset(x = (-16).dp),
350351
padding = PaddingValues(horizontal = 16.dp, vertical = 12.dp),
352+
space = 4.dp,
351353
onClick = onClick,
352354
)
353355
} ?: Spacer(modifier = Modifier.height(12.dp))

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/settings/SettingsView.kt

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package fr.acinq.phoenix.android.settings
1818

19+
import android.widget.Toast
1920
import androidx.compose.foundation.clickable
2021
import androidx.compose.foundation.interaction.MutableInteractionSource
2122
import androidx.compose.foundation.layout.Arrangement
@@ -26,8 +27,10 @@ import androidx.compose.foundation.layout.padding
2627
import androidx.compose.material.MaterialTheme
2728
import androidx.compose.material.Text
2829
import androidx.compose.runtime.Composable
30+
import androidx.compose.runtime.LaunchedEffect
2931
import androidx.compose.runtime.collectAsState
3032
import androidx.compose.runtime.getValue
33+
import androidx.compose.runtime.mutableIntStateOf
3134
import androidx.compose.runtime.mutableStateOf
3235
import androidx.compose.runtime.remember
3336
import androidx.compose.runtime.rememberCoroutineScope
@@ -60,7 +63,7 @@ fun SettingsView(
6063
val nc = navController
6164
val context = LocalContext.current
6265
val scope = rememberCoroutineScope()
63-
var debugClickCount by remember { mutableStateOf(0) }
66+
var debugClickCount by remember { mutableIntStateOf(0) }
6467
val notices = noticesViewModel.notices
6568
val notifications = business.notificationsManager.notifications.collectAsState()
6669

@@ -78,6 +81,23 @@ fun SettingsView(
7881
)
7982
}
8083

84+
if (debugClickCount > 10) {
85+
LaunchedEffect(key1 = Unit) {
86+
Toast.makeText(context, "Debug mode enabled", Toast.LENGTH_SHORT).show()
87+
}
88+
// -- debug
89+
CardHeader(text = "DEBUG")
90+
Card {
91+
MenuButton(
92+
text = "Switch to legacy app (DEBUG)",
93+
icon = R.drawable.ic_settings,
94+
onClick = {
95+
scope.launch { LegacyPrefsDatastore.saveStartLegacyApp(context, LegacyAppStatus.Required.Expected) }
96+
},
97+
)
98+
}
99+
}
100+
81101
// -- general
82102
CardHeader(text = stringResource(id = R.string.settings_general_title))
83103
Card {
@@ -125,23 +145,6 @@ fun SettingsView(
125145
)
126146
}
127147

128-
if (debugClickCount > 10) {
129-
// -- debug
130-
CardHeader(text = "DEBUG")
131-
Card {
132-
Button(
133-
text = "Switch to legacy app (DEBUG)",
134-
icon = R.drawable.ic_user,
135-
onClick = {
136-
scope.launch {
137-
LegacyPrefsDatastore.saveStartLegacyApp(context, LegacyAppStatus.Required.Expected)
138-
}
139-
},
140-
modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.Start
141-
)
142-
}
143-
}
144-
145148
Spacer(Modifier.height(32.dp))
146149
}
147150
}

phoenix-android/src/main/kotlin/fr/acinq/phoenix/android/startup/StartupViewModel.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ class StartupViewModel : ViewModel() {
7575
is KeyStoreException, is GeneralSecurityException -> StartupDecryptionState.DecryptionError.KeystoreFailure(e)
7676
else -> StartupDecryptionState.DecryptionError.Other(e)
7777
}
78-
7978
}) {
8079
when (encryptedSeed) {
8180
is EncryptedSeed.V2.NoAuth -> {

phoenix-android/src/main/res/values-b+es+419/important_strings.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,10 @@
108108
<string name="initwallet_create">Crear una billetera nueva</string>
109109
<string name="initwallet_restore">Restaurar mi billetera</string>
110110

111-
<string name="restore_disclaimer_message">Phoenix solo puede restaurar los fondos fuera de la cadena que hayan sido gestionados por esta aplicación.\n\nSi importas una semilla que NO haya sido creada por Phoenix, no se restaurará ningún fondo.\n\nAsegúrate además de no estar usando otra billetera Phoenix con la misma semilla.</string>
111+
<string name="restore_disclaimer_message_1_title">Phoenix sólo está en Lightning</string>
112+
<string name="restore_disclaimer_message_1_body">Phoenix sólo mostrará los fondos que ya han sido gestionados por Phoenix. Los fondos adjuntos a una semilla generada por otra aplicación no aparecerán aquí (esto incluye los fondos on-chain).</string>
113+
<string name="restore_disclaimer_message_2_title">Utilizar la misma semilla en paralelo</string>
114+
<string name="restore_disclaimer_message_2_body">No utilices la misma semilla al mismo tiempo en diferentes dispositivos. Esto puede causar conflictos entre las dos instancias de Phoenix, y resultar en el cierre de los canales Lightning.</string>
112115
<string name="utils_ack">Entiendo.</string>
113116

114117
<string name="restore_instructions">La semilla de la billetera es una lista de 12 palabras en inglés. Escribe cada palabra de esta lista en la siguiente casilla.</string>

phoenix-android/src/main/res/values-cs/important_strings.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,10 @@
111111
<string name="initwallet_create">Vytvoření nové peněženky</string>
112112
<string name="initwallet_restore">Obnovit moji peněženku</string>
113113

114-
<string name="restore_disclaimer_message">Phoenix může obnovit pouze Off-Chain prostředky, které byly spravovány touto aplikací.\n\nImportem Seedu, který NEBYL vytvořen aplikací Phoenix, se neobnoví žádné prostředky.\n\nUjistěte se také, že již není spuštěna jiná aplikace Phoenix se stejným Seedem.</string>
114+
<string name="restore_disclaimer_message_1_title">Phoenix je pouze na Lightning</string>
115+
<string name="restore_disclaimer_message_1_body">Phoenix zobrazí pouze fondy, které již byly spravovány Phoenixem. Prostředky připojené k seedu vygenerovanému jinou aplikací se zde nezobrazí (to se týká i prostředků na řetězci).</string>
116+
<string name="restore_disclaimer_message_2_title">Souběžné použití stejného klíče</string>
117+
<string name="restore_disclaimer_message_2_body">Nepoužívejte stejný seed současně na různých zařízeních. Může to způsobit konflikty mezi oběma instancemi Phoenixu a vést k uzavření kanálů Lightning.</string>
115118
<string name="utils_ack">Rozumím.</string>
116119

117120
<string name="restore_instructions">Seed vaší peněženky je seznam 12 anglických slov. Každé slovo z tohoto seznamu napište do níže uvedeného pole.</string>

phoenix-android/src/main/res/values-cs/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@
9191
<string name="receive_lightning_share_subject">Lightningová faktura</string>
9292
<string name="receive_lightning_share_title">Sdílet tuto Lightningovou fakturu s…</string>
9393
<string name="receive_lnurl_button">Skenovat</string>
94-
<string name="receive_toggle_offer_new_overlay">NOVINKA!</string>
9594

9695
<string name="receive_offer_share_title">Statická Lightning faktura</string>
9796
<string name="receive_offer_share_subject">Sdílet tuto statickou Lightning fakturu s…</string>

phoenix-android/src/main/res/values-de/important_strings.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,10 @@
108108
<string name="initwallet_create">Neue Wallet erstellen</string>
109109
<string name="initwallet_restore">Meine Wallet wiederherstellen</string>
110110

111-
<string name="restore_disclaimer_message">Phoenix kann nur off-chain-Guthaben wiederherstellen, das von dieser App verwaltet wurde.\n\nEin Seed, der nicht von Phoenix generiert wurde, kann nicht importiert werden.\n\nStellen Sie außerdem sicher, dass Sie nicht bereits eine andere Phoenix-Wallet mit demselben Seed betreiben.</string>
111+
<string name="restore_disclaimer_message_1_title">Phoenix ist nur auf Lightning</string>
112+
<string name="restore_disclaimer_message_1_body">Phoenix wird nur Guthaben anzeigen, die bereits von Phoenix verwaltet wurden. Guthaben, die mit einem Seed verbunden sind, das von einer anderen Anwendung erzeugt wurde, werden nicht angezeigt (das gilt auch für On-Chain-Guthaben).</string>
113+
<string name="restore_disclaimer_message_2_title">Parallele Verwendung desselben Seed</string>
114+
<string name="restore_disclaimer_message_2_body">Verwenden Sie nicht denselben Seed gleichzeitig auf verschiedenen Geräten. Dies kann zu Konflikten zwischen den beiden Phoenix-Instanzen führen und dazu, dass die Lightning-Kanäle geschlossen werden.</string>
112115
<string name="utils_ack">Ich verstehe.</string>
113116

114117
<string name="restore_instructions">Der Seed für deine Wallet ist eine Liste mit 12 englischen Wörtern. Schreiben Sie jedes Wort dieser Liste in die folgende Box.</string>

phoenix-android/src/main/res/values-es/important_strings.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@
5555
<string name="initwallet_create">Crear una nueva cartera</string>
5656
<string name="initwallet_restore">Restaurar mi cartera</string>
5757

58-
<string name="restore_disclaimer_message">Phoenix sólo puede restaurar los fondos fuera de la cadena que fueron gestionados por esta aplicación.\n\nImportar una semilla que no fue creada por Phoenix no restaurará ningún fondo.\n\nPor favor, asegúrese también de que no está ejecutando otra cartera Phoenix con la misma semilla.</string>
58+
<string name="restore_disclaimer_message_1_title">Phoenix sólo está en Lightning</string>
59+
<string name="restore_disclaimer_message_1_body">Phoenix sólo mostrará los fondos que ya han sido gestionados por Phoenix. Los fondos adjuntos a una semilla generada por otra aplicación no aparecerán aquí (esto incluye los fondos on-chain).</string>
60+
<string name="restore_disclaimer_message_2_title">Utilizar la misma semilla en paralelo</string>
61+
<string name="restore_disclaimer_message_2_body">No utilices la misma semilla al mismo tiempo en diferentes dispositivos. Esto puede causar conflictos entre las dos instancias de Phoenix, y resultar en el cierre de los canales Lightning.</string>
5962
<string name="utils_ack">Entiendo.</string>
6063

6164
<string name="restore_instructions">La semilla de tu cartera es una lista de 12 palabras en inglés. Escribe cada palabra de esta lista en la casilla de abajo.</string>

phoenix-android/src/main/res/values-fr/important_strings.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,10 @@
111111
<string name="initwallet_create">Créer un nouveau wallet</string>
112112
<string name="initwallet_restore">Restaurer mon wallet</string>
113113

114-
<string name="restore_disclaimer_message">Phoenix ne restaure que les fonds off-chain qu\'il avait déjà gérés.\n\nImporter une seed qui n\'a pas été créée par Phoenix ne restaurera aucun fonds.\n\nVeuillez également vous assurer que cette seed n\'est pas déjà utilisée sur un autre wallet Phoenix.</string>
114+
<string name="restore_disclaimer_message_1_title">Phoenix est uniquement sur Lightning</string>
115+
<string name="restore_disclaimer_message_1_body">Phoenix ne pourra afficher que les fonds qui ont déjà gérés par Phoenix. Les fonds attachés à une clé générée par une autre application n\'apparaîtront pas ici (ceci inclut les fonds on-chain).</string>
116+
<string name="restore_disclaimer_message_2_title">Utilisation de la même clé en parallèle</string>
117+
<string name="restore_disclaimer_message_2_body">N\'utilisez pas la même clé simultanément sur différents appareils. Ceci peut causer des conflits entre les deux instances de Phoenix, et entraîner la fermeture des canaux Lightning.</string>
115118
<string name="utils_ack">Je comprends.</string>
116119

117120
<string name="restore_instructions">La clé (ou seed) de votre wallet est une liste de 12 mots en anglais. Entrez chaque mot de cette liste dans la zone de saisie ci-dessous.</string>

phoenix-android/src/main/res/values-pt-rBR/important_strings.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,10 @@
111111
<string name="initwallet_create">Criar nova carteira</string>
112112
<string name="initwallet_restore">Restaurar minha carteira</string>
113113

114-
<string name="restore_disclaimer_message">O Phoenix só pode restaurar fundos fora da cadeia que foram gerenciados por este aplicativo.\n\nA importação de uma semente que NÃO foi criada pelo Phoenix não restaurará nenhum fundo.\n\nVerifique também se você já não está executando outra carteira Phoenix com a mesma semente.</string>
114+
<string name="restore_disclaimer_message_1_title">O Phoenix está apenas no Lightning</string>
115+
<string name="restore_disclaimer_message_1_body">O Phoenix exibirá apenas fundos que já tenham sido gerenciados pelo Phoenix. Os fundos vinculados a uma semente gerada por outro aplicativo não aparecerão aqui (isso inclui fundos na cadeia).</string>
116+
<string name="restore_disclaimer_message_2_title">Uso da mesma semente em paralelo</string>
117+
<string name="restore_disclaimer_message_2_body">Não use a mesma semente simultaneamente em dispositivos diferentes. Isso pode causar conflitos entre as duas instâncias do Phoenix e resultar no fechamento de canais Lightning.</string>
115118
<string name="utils_ack">Eu entendo.</string>
116119

117120
<string name="restore_instructions">A semente de sua carteira é uma lista de 12 palavras em inglês. Digite cada palavra dessa lista na caixa abaixo.</string>

0 commit comments

Comments
 (0)