Skip to content

Commit 8fa3734

Browse files
committed
feat: vss-client lnurl-auth
1 parent 8906707 commit 8fa3734

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

app/src/main/java/to/bitkit/data/backup/VssBackupClient.kt

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@ package to.bitkit.data.backup
33
import com.synonym.vssclient.VssItem
44
import com.synonym.vssclient.vssGet
55
import com.synonym.vssclient.vssNewClient
6+
import com.synonym.vssclient.vssNewClientWithLnurlAuth
67
import com.synonym.vssclient.vssStore
78
import kotlinx.coroutines.CompletableDeferred
89
import kotlinx.coroutines.CoroutineDispatcher
910
import kotlinx.coroutines.withContext
1011
import kotlinx.coroutines.withTimeout
12+
import to.bitkit.data.keychain.Keychain
1113
import to.bitkit.di.BgDispatcher
1214
import to.bitkit.env.Env
1315
import to.bitkit.utils.Logger
16+
import to.bitkit.utils.ServiceError
1417
import javax.inject.Inject
1518
import javax.inject.Singleton
1619
import kotlin.time.Duration.Companion.seconds
@@ -19,17 +22,32 @@ import kotlin.time.Duration.Companion.seconds
1922
class VssBackupClient @Inject constructor(
2023
@BgDispatcher private val bgDispatcher: CoroutineDispatcher,
2124
private val vssStoreIdProvider: VssStoreIdProvider,
25+
private val keychain: Keychain,
2226
) {
2327
private val isSetup = CompletableDeferred<Unit>()
2428

2529
suspend fun setup() = withContext(bgDispatcher) {
2630
try {
2731
withTimeout(30.seconds) {
2832
Logger.verbose("VSS client setting up…", context = TAG)
29-
vssNewClient(
30-
baseUrl = Env.vssServerUrl,
31-
storeId = vssStoreIdProvider.getVssStoreId(),
32-
)
33+
if (Env.lnurlAuthSeverUrl.isNotEmpty()) {
34+
val mnemonic = keychain.loadString(Keychain.Key.BIP39_MNEMONIC.name)
35+
?: throw ServiceError.MnemonicNotFound
36+
val passphrase = keychain.loadString(Keychain.Key.BIP39_PASSPHRASE.name)
37+
38+
vssNewClientWithLnurlAuth(
39+
baseUrl = Env.vssServerUrl,
40+
storeId = vssStoreIdProvider.getVssStoreId(),
41+
mnemonic = mnemonic,
42+
passphrase = passphrase,
43+
lnurlAuthServerUrl = Env.lnurlAuthSeverUrl,
44+
)
45+
} else {
46+
vssNewClient(
47+
baseUrl = Env.vssServerUrl,
48+
storeId = vssStoreIdProvider.getVssStoreId(),
49+
)
50+
}
3351
isSetup.complete(Unit)
3452
Logger.info("VSS client setup ok", context = TAG)
3553
}

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ test-junit-ext = { module = "androidx.test.ext:junit", version.ref = "junitExt"
109109
test-mockito-kotlin = { module = "org.mockito.kotlin:mockito-kotlin", version.ref = "mockitoKotlin" }
110110
test-robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }
111111
test-turbine = { group = "app.cash.turbine", name = "turbine", version.ref = "turbine" }
112-
vss = { module = "com.synonym:vss-client-android", version = "0.1.0" }
112+
vss = { module = "com.synonym:vss-client-android", version = "0.2.0" }
113113
work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workRuntimeKtx" }
114114
zxing = { module = "com.google.zxing:core", version.ref = "zxing" }
115115
lottie = { module = "com.airbnb.android:lottie-compose", version.ref = "lottieVersion" }

0 commit comments

Comments
 (0)