@@ -41,19 +41,14 @@ import to.bitkit.data.backup.VssStoreIdProvider
4141import to.bitkit.data.keychain.Keychain
4242import to.bitkit.di.BgDispatcher
4343import to.bitkit.env.Env
44- import to.bitkit.ext.DatePattern
4544import to.bitkit.ext.totalNextOutboundHtlcLimitSats
4645import to.bitkit.ext.uByteList
4746import to.bitkit.ext.uri
4847import to.bitkit.models.OpenChannelResult
4948import to.bitkit.utils.LdkError
49+ import to.bitkit.utils.LdkLogWriter
5050import to.bitkit.utils.Logger
5151import to.bitkit.utils.ServiceError
52- import java.io.File
53- import java.text.SimpleDateFormat
54- import java.util.Date
55- import java.util.Locale
56- import java.util.TimeZone
5752import javax.inject.Inject
5853import javax.inject.Singleton
5954import kotlin.io.path.Path
@@ -88,19 +83,18 @@ class LightningService @Inject constructor(
8883 val dirPath = Env .ldkStoragePath(walletIndex)
8984
9085 val trustedPeerNodeIds = trustedPeers.map { it.nodeId }
91-
9286 val config = defaultConfig().copy(
9387 storageDirPath = dirPath,
9488 network = Env .network,
9589 trustedPeers0conf = trustedPeerNodeIds,
9690 anchorChannelsConfig = AnchorChannelsConfig (
9791 trustedPeersNoReserve = trustedPeerNodeIds,
9892 perChannelReserveSats = 1u ,
99- )
93+ ),
10094 )
10195
10296 val builder = Builder .fromConfig(config).apply {
103- setFilesystemLogger(generateLogFilePath(), Env .ldkLogLevel )
97+ setCustomLogger( LdkLogWriter () )
10498
10599 configureChainSource(customServerUrl)
106100 configureGossipSource(customRgsServerUrl)
@@ -345,15 +339,16 @@ class LightningService @Inject constructor(
345339 val node = this .node ? : throw ServiceError .NodeNotSetup
346340
347341 return ServiceQueue .LDK .background {
348- try {
342+ runCatching {
343+ val pushToCounterpartyMsat = pushToCounterpartySats?.let { it * 1000u }
349344 Logger .debug(" Initiating channel open (sats: $channelAmountSats ) with peer: ${peer.uri} " )
350345
351346 val userChannelId = node.openChannel(
352- nodeId = peer.nodeId,
353- address = peer.address,
354- channelAmountSats = channelAmountSats ,
355- pushToCounterpartyMsat = pushToCounterpartySats?. let { it * 1000u } ,
356- channelConfig = channelConfig ,
347+ peer.nodeId,
348+ peer.address,
349+ channelAmountSats,
350+ pushToCounterpartyMsat,
351+ channelConfig,
357352 )
358353
359354 val result = OpenChannelResult (
@@ -366,11 +361,11 @@ class LightningService @Inject constructor(
366361
367362 Logger .info(" Channel open initiated, result: $result " )
368363
369- Result .success( result)
370- } catch (e : NodeException ) {
371- val error = LdkError (e)
364+ result
365+ }.onFailure { e ->
366+ val error = if (e is NodeException ) LdkError (e) else e
372367 Logger .error(" Error initiating channel open" , error)
373- Result .failure( error)
368+ error
374369 }
375370 }
376371 }
@@ -790,19 +785,9 @@ class LightningService @Inject constructor(
790785}
791786
792787// region helpers
793-
794- private fun generateLogFilePath (): String {
795- val dateFormatter = SimpleDateFormat (DatePattern .LOG_FILE , Locale .US ).apply {
796- timeZone = TimeZone .getTimeZone(" UTC" )
797- }
798- val timestamp = dateFormatter.format(Date ())
799-
800- val sessionLogFilePath = File (Env .logDir).resolve(" ldk_$timestamp .log" ).path
801-
802- Logger .debug(" Generated LDK log file path: $sessionLogFilePath " )
803- return sessionLogFilePath
804- }
805-
788+ /* *
789+ * TODO remove, replace all usages with [FeeRate.fromSatPerVbUnchecked]
790+ * */
806791private fun convertVByteToKwu (satsPerVByte : UInt ): FeeRate {
807792 // 1 vbyte = 4 weight units, so 1 sats/vbyte = 250 sats/kwu
808793 val satPerKwu = satsPerVByte.toULong() * 250u
0 commit comments