Skip to content

Commit d0f0bdf

Browse files
feat: add logs
1 parent 94c40b7 commit d0f0bdf

File tree

6 files changed

+47
-8
lines changed

6 files changed

+47
-8
lines changed

app/src/main/java/org/bitcoindevkit/devkitwallet/domain/DwLogger.kt

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,27 @@
55

66
package org.bitcoindevkit.devkitwallet.domain
77

8+
import java.time.Instant
9+
import java.time.ZoneId
10+
import java.time.temporal.ChronoUnit
11+
812
object DwLogger {
913
private const val MAX_LOGS = 5000
1014
private val logEntries = ArrayDeque<String>(MAX_LOGS)
1115
private val lock = Any()
1216

13-
fun log(tag: String, message: String) {
17+
fun log(tag: LogLevel, message: String) {
1418
synchronized(lock) {
1519
if (logEntries.size >= MAX_LOGS) {
1620
logEntries.removeLast()
1721
}
18-
logEntries.addFirst("${System.currentTimeMillis()} [$tag]: $message")
22+
val millis = System.currentTimeMillis()
23+
val dateTime = Instant.ofEpochMilli(millis)
24+
.atZone(ZoneId.systemDefault())
25+
.toLocalDateTime()
26+
.truncatedTo(ChronoUnit.SECONDS)
27+
28+
logEntries.addFirst("$dateTime $tag $message")
1929
}
2030
}
2131

@@ -24,4 +34,18 @@ object DwLogger {
2434
return logEntries.toList()
2535
}
2636
}
37+
38+
enum class LogLevel {
39+
INFO,
40+
WARN,
41+
ERROR;
42+
43+
override fun toString(): String {
44+
return when (this) {
45+
INFO -> "[INFO] "
46+
WARN -> "[WARN] "
47+
ERROR -> "[ERROR]"
48+
}
49+
}
50+
}
2751
}

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/DevkitWalletActivity.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import org.bitcoindevkit.devkitwallet.data.SingleWallet
2121
import org.bitcoindevkit.devkitwallet.data.UserPreferences
2222
import org.bitcoindevkit.devkitwallet.data.UserPreferencesSerializer
2323
import org.bitcoindevkit.devkitwallet.domain.DwLogger
24+
import org.bitcoindevkit.devkitwallet.domain.DwLogger.LogLevel.INFO
2425
import org.bitcoindevkit.devkitwallet.domain.UserPreferencesRepository
2526
import org.bitcoindevkit.devkitwallet.domain.Wallet
2627
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
@@ -42,7 +43,7 @@ class DevkitWalletActivity : AppCompatActivity() {
4243
super.onCreate(savedInstanceState)
4344

4445
// Initialize Devkit Wallet Logger (used in the LogsScreen)
45-
DwLogger.log("INFO", "Devkit Wallet app started")
46+
DwLogger.log(INFO, "Devkit Wallet app started")
4647

4748
val userPreferencesRepository = UserPreferencesRepository(userPreferencesStore)
4849
val onBuildWalletButtonClicked: (WalletCreateType) -> Unit = { walletCreateType ->
@@ -96,7 +97,7 @@ class DevkitWalletActivity : AppCompatActivity() {
9697

9798
setContent {
9899
if (!onboardingDone) {
99-
DwLogger.log("INFO", "First time opening the app, triggering onboarding screen")
100+
DwLogger.log(INFO, "First time opening the app, triggering onboarding screen")
100101
OnboardingScreen(onFinishOnboarding)
101102
} else {
102103
DevkitTheme {

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/ui/screens/intro/ActiveWalletsScreen.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import androidx.compose.ui.unit.dp
2525
import androidx.compose.ui.unit.sp
2626
import androidx.navigation.NavController
2727
import org.bitcoindevkit.devkitwallet.data.SingleWallet
28+
import org.bitcoindevkit.devkitwallet.domain.DwLogger
29+
import org.bitcoindevkit.devkitwallet.domain.DwLogger.LogLevel.INFO
2830
import org.bitcoindevkit.devkitwallet.presentation.WalletCreateType
2931
import org.bitcoindevkit.devkitwallet.presentation.theme.DevkitWalletColors
3032
import org.bitcoindevkit.devkitwallet.presentation.theme.quattroRegular
@@ -81,7 +83,10 @@ fun ActiveWalletCard(wallet: SingleWallet, onBuildWalletButtonClicked: (WalletCr
8183
)
8284
// Padding inside the card
8385
.padding(horizontal = 4.dp, vertical = 8.dp)
84-
.clickable { onBuildWalletButtonClicked(WalletCreateType.LOADEXISTING(wallet)) },
86+
.clickable {
87+
DwLogger.log(INFO, "Activating existing wallet: ${wallet.name}")
88+
onBuildWalletButtonClicked(WalletCreateType.LOADEXISTING(wallet))
89+
},
8590
verticalArrangement = Arrangement.SpaceBetween,
8691
horizontalAlignment = Alignment.Start
8792
) {

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/ui/screens/intro/CreateNewWallet.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import androidx.navigation.NavController
3131
import org.bitcoindevkit.Network
3232
import org.bitcoindevkit.devkitwallet.data.ActiveWalletScriptType
3333
import org.bitcoindevkit.devkitwallet.data.NewWalletConfig
34+
import org.bitcoindevkit.devkitwallet.domain.DwLogger
35+
import org.bitcoindevkit.devkitwallet.domain.DwLogger.LogLevel.INFO
3436
import org.bitcoindevkit.devkitwallet.presentation.WalletCreateType
3537
import org.bitcoindevkit.devkitwallet.presentation.theme.DevkitWalletColors
3638
import org.bitcoindevkit.devkitwallet.presentation.theme.monoRegular
@@ -126,9 +128,8 @@ internal fun CreateNewWalletScreen(
126128
network = selectedNetwork.value,
127129
scriptType = selectedScriptType.value
128130
)
129-
onBuildWalletButtonClicked(
130-
WalletCreateType.FROMSCRATCH(newWalletConfig)
131-
)
131+
DwLogger.log(INFO, "Creating new wallet named ${newWalletConfig.name}")
132+
onBuildWalletButtonClicked(WalletCreateType.FROMSCRATCH(newWalletConfig))
132133
}
133134
)
134135
}

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/ui/screens/intro/RecoverWalletScreen.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ import org.bitcoindevkit.Mnemonic
4949
import org.bitcoindevkit.Network
5050
import org.bitcoindevkit.devkitwallet.data.ActiveWalletScriptType
5151
import org.bitcoindevkit.devkitwallet.data.RecoverWalletConfig
52+
import org.bitcoindevkit.devkitwallet.domain.DwLogger
53+
import org.bitcoindevkit.devkitwallet.domain.DwLogger.LogLevel.INFO
5254
import org.bitcoindevkit.devkitwallet.domain.bip39WordList
5355
import org.bitcoindevkit.devkitwallet.domain.createScriptAppropriateDescriptor
5456
import org.bitcoindevkit.devkitwallet.presentation.WalletCreateType
@@ -228,6 +230,7 @@ internal fun RecoverWalletScreen(onAction: (WalletCreateType) -> Unit, navContro
228230
changeDescriptor = changeDescriptor,
229231
recoveryPhrase = parsingResult.recoveryPhrase
230232
)
233+
DwLogger.log(INFO, "Recovering wallet with recovery phrase (name: $walletName)")
231234
onAction(WalletCreateType.RECOVER(recoverWalletConfig))
232235
}
233236
}
@@ -244,6 +247,7 @@ internal fun RecoverWalletScreen(onAction: (WalletCreateType) -> Unit, navContro
244247
changeDescriptor = changeDescriptor,
245248
recoveryPhrase = null
246249
)
250+
DwLogger.log(INFO, "Recovering wallet with descriptors (name: $walletName)")
247251
onAction(WalletCreateType.RECOVER(recoverWalletConfig))
248252
}
249253
}

app/src/main/java/org/bitcoindevkit/devkitwallet/presentation/viewmodels/AddressViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import androidx.compose.runtime.mutableStateOf
1010
import androidx.compose.runtime.setValue
1111
import androidx.lifecycle.ViewModel
1212
import org.bitcoindevkit.AddressInfo
13+
import org.bitcoindevkit.devkitwallet.domain.DwLogger
14+
import org.bitcoindevkit.devkitwallet.domain.DwLogger.LogLevel.INFO
1315
import org.bitcoindevkit.devkitwallet.domain.Wallet
1416
import org.bitcoindevkit.devkitwallet.presentation.viewmodels.mvi.ReceiveScreenAction
1517
import org.bitcoindevkit.devkitwallet.presentation.viewmodels.mvi.ReceiveScreenState
@@ -26,6 +28,8 @@ internal class AddressViewModel(private val wallet: Wallet) : ViewModel() {
2628

2729
private fun updateAddress() {
2830
val newAddress: AddressInfo = wallet.getNewAddress()
31+
DwLogger.log(INFO, "Revealing new address at index ${newAddress.index}")
32+
2933
state = ReceiveScreenState(
3034
address = newAddress.address.toString(),
3135
addressIndex = newAddress.index

0 commit comments

Comments
 (0)