Configuration
Ignore unsupported blockchains
If BeaconWalletClient
encounters a structure that belongs to a blockchain that hasn't been registered in the client, it's considered an error by default and the client may fail at runtime. Usually, this means the developer has made an error and forgot to configure the client with that blockchain.
Sometimes, however, such situations aren't the result of a developer error and shouldn't cause the app to crash. The default behaviour can therefore be overriden with the BeaconWalletClient.Builder#ignoreUnsupportedBlockchains
flag.
import it.airgap.beaconsdk.client.wallet.BeaconWalletClient
val beaconWallet = BeaconWalletClient {
...
ignoreUnsupportedBlockchains = true
}
Custom storage
Beacon Android SDK is not a stateless library and bases part of its functionality on preserved data. By default the SDK stores its data in SharedPreferences
. However, it is possible to override the default storage and provide your own implementation. The :core
module ships with 3 public interfaces that can be satisfied and provided externally during the BeaconWalletClient
setup: Storage
, ExtendedStorage
(an extended version of Storage
) and SecureStorage
.
import it.airgap.beaconsdk.client.wallet.BeaconWalletClient
import it.airgap.beaconsdk.core.storage.ExtendedStorage
import it.airgap.beaconsdk.core.storage.SecureStorage
import it.airgap.beaconsdk.core.storage.Storage
val beaconWallet = BeaconWalletClient {
...
storage = MyStorage() /* or MyExtendedStorage() */
secureStorage = MySecureStorage()
}
class MyStorage : Storage {
// implementation
}
class MyExtendedStorage : ExtendedStorage {
// implementation
}
class MySecureStorage : SecureStorage {
// implementation
}
Plugins
Some modules may require additional data to store. Those modules usually come with their own storage plugin interfaces which can be satisfied and provided externally.
:transport-p2p-matrix
The :transport-p2p-matrix
module defines P2pMatrixStoragePlugin
and ExtendedP2pMatrixStoragePlugin
interfaces.
import it.airgap.beaconsdk.client.wallet.BeaconWalletClient
import it.airgap.beaconsdk.transport.p2p.matrix.p2pMatrix
import it.airgap.beaconsdk.transport.p2p.matrix.storage.ExtendedP2pMatrixStoragePlugin
import it.airgap.beaconsdk.transport.p2p.matrix.storage.P2pMatrixStoragePlugin
val beaconWallet = BeaconWalletClient {
...
use(p2pMatrix(storagePlugin = MyP2pMatrixStoragePlugin() /* or MyExtendedP2pMatrixStoragePlugin() */))
}
class MyP2pMatrixStoragePlugin : P2pMatrixStoragePlugin {
// implementation
}
class MyExtendedP2pMatrixStoragePlugin : ExtendedP2pMatrixStoragePlugin {
// implementation
}
Custom Matrix nodes
You can provide your own Matrix node URLs while setting BeaconWalletClient
up with the :transport-p2p-matrix
transport layer. Use the p2pMatrix
factory arguments to set your values.
import it.airgap.beaconsdk.client.wallet.BeaconWalletClient
import it.airgap.beaconsdk.transport.p2p.matrix.p2pMatrix
val beaconWallet = BeaconWalletClient {
...
use(p2pMatrix(matrixNodes = listOf("my.matrix.node")))
}