diff --git a/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/BitcoinKit.kt b/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/BitcoinKit.kt index 47e532d7a..0274139e7 100644 --- a/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/BitcoinKit.kt +++ b/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/BitcoinKit.kt @@ -29,7 +29,7 @@ import io.realm.annotations.RealmModule @RealmModule(library = true, allClasses = true) class BitcoinKitModule -class BitcoinKit(words: List, networkType: NetworkType, peerSize: Int = 10, newWallet: Boolean = false, confirmationsThreshold: Int = 6) : KitStateProvider.Listener, DataProvider.Listener { +class BitcoinKit(words: List, networkType: NetworkType, walletId: String? = null, peerSize: Int = 10, newWallet: Boolean = false, confirmationsThreshold: Int = 6) : KitStateProvider.Listener, DataProvider.Listener { interface Listener { fun onTransactionsUpdate(bitcoinKit: BitcoinKit, inserted: List, updated: List, deleted: List) @@ -55,7 +55,7 @@ class BitcoinKit(words: List, networkType: NetworkType, peerSize: Int = private val transactionBuilder: TransactionBuilder private val dataProvider: DataProvider private val unspentOutputProvider: UnspentOutputProvider - private val realmFactory = RealmFactory("bitcoinkit-${networkType.name}") + private val realmFactory = RealmFactory("bitcoinkit-${networkType.name}-$walletId") private val network = when (networkType) { NetworkType.MainNet -> MainNet() diff --git a/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/core/DataProvider.kt b/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/core/DataProvider.kt index 1ba52d042..51a156071 100644 --- a/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/core/DataProvider.kt +++ b/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/core/DataProvider.kt @@ -60,9 +60,9 @@ class DataProvider(private val realm: Realm, private val listener: Listener, pri } fun clear() { - realm.close() transactionRealmResults.removeAllChangeListeners() blockRealmResults.removeAllChangeListeners() + realm.close() balanceSubjectDisposable.dispose() } diff --git a/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/network/peer/PeerGroup.kt b/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/network/peer/PeerGroup.kt index 458251692..014101041 100644 --- a/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/network/peer/PeerGroup.kt +++ b/bitcoinkit/src/main/kotlin/io/horizontalsystems/bitcoinkit/network/peer/PeerGroup.kt @@ -52,7 +52,6 @@ class PeerGroup( fun close() { running = false - syncStateListener?.onSyncStop() interrupt() try { @@ -82,6 +81,8 @@ class PeerGroup( } } + syncStateListener?.onSyncStop() + blockSyncer = null logger.info("Closing all peer connections...") peerManager.disconnectAll()