Skip to content

Commit

Permalink
Added test for keyfile feature
Browse files Browse the repository at this point in the history
  • Loading branch information
arsvechkarev committed Feb 29, 2024
1 parent 01fcdb7 commit cdd0562
Show file tree
Hide file tree
Showing 13 changed files with 153 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,8 @@ object Databases {
}

val EncodedDatabaseFromKeePass = "A9mimmf7S7UBAAQAAhAAAAAxwfLmv3FDUL5YBSFq/Fr/AwQAAAABAAAABCAAAAAUUHpGBZvsvWWmlLZvdVR6Yq7ylGeK7/0bNqP2azReAguLAAAAAAFCBQAAACRVVUlEEAAAAO9jbd+MKURLkfeppAPjCgwFAQAAAEkIAAAACgAAAAAAAAAFAQAAAE0IAAAAAAAABAAAAAAEAQAAAFAEAAAABAAAAEIBAAAAUyAAAADIIjp+2mvtZ/cp8Na+XmJU95D6ueDtVh7Flvb35WMszAQBAAAAVgQAAAATAAAAAAcQAAAAgRO4G51PuZ7hrSKS4vHrDQAEAAAADQoNCqD60Cjfigzkazaq1nHfrEgw7o8is5DDM9vj7sOF2ND5jTyNBpoBkuN0qcy1YUei4NZF03+GWEO/h4+NTVp1dbh07wZC9HX2TehjtaeJUixmwfKUVipNb+qMg9yMtKkcFCAGAAAMy2py3sSHSkb0EUJY2wfQbeb9fxi27vKW3ypfwI+3hEuGLwDSAm4q/ITPfpT29QZqZjqpKXrR+strPLfJ0D7Kfi+RGIKnrTbxDjkBUIkblK6T9eRvU3jPkJso5J1sfuG3gRZlYC1wLf29ok0qLsxCf8e9DDJCCVtnecbKIG7p9Tvdh4/jQCTHYya3JWXmjKatxaRP/2LVMdlcub/v35lYKVWBIIYBzVDnYnefCWNmzl8hls3FRDms7S8NHO58CL6lcgaSoKG/gO0QlMYgp+OpiOAtcbwLtWtUyzFtemRQJu5MIgR4n0XVCzKD+TxZO6wZzvJ1yfcAYKz1MeDGHGIDasaihb6wLaMjCv9sD7C3O6heBDZrx96od5UnnJHpV+FZT8bmyvYWu4xRJPsPlKNf+j4t+xORFmdmsPVHVwWLvL/XJl7jYv8lJL2mhUc0hi5k5wrMVevWtco//nOCTcboKtGppJASq+DKLh1QUOpNfpYsCvn9OO4jJRL3IbJFMZjXcZNo/ckGmUXC02BG6Uq1zaLQu04mE0ao1resZjdztjdqZddUYjgpTLZTiPDkDAStpE74lGtMkyq4fHFttpmte7mkcRpN2S6JHT9yNn4MSZZHTEYjDjaB4uMrrhnTpVlqHkvXoEMK73pXmMiaqX+T1BwmF31JrgaUfh7gDU258hngNvTbAgQ0bFH9OwbiwLJ/sM+tNHuSiPSMDtnkPvCfZuS7sWT2v0oUDxrOQCvNttPkreVjRcXdJDuC3dR8QHwSvPVNRvN0GJzwsNOUEwUViQ01WHfMlQR63xKHntS3VejYaj3CKLqy337+5p3Gk67w//sMRFxfkz4yueOKjhVVGTEsoeCshNhYSAzMNYKp+kGLuCyBPto0E5SAV8IFXVAXqnldFwfreORblypvQTaHQNS/mLJGu93w7mAO09VgmxtbJxf3rkktEVmuEnGhPYrBgJxYw8A4vIi4D5PRA/H9Hpkn9gkCvqEOuQzDJTWc7gcioIVLQv/CQyRo7tYM3IAUjo++/OrVZSRFw6Vg5vHHdBA+uEwPdS4V2O9mP/B+VeVGGUUcAV22ylAynVjpn6V4ajOCgKQiVBBpY9hL3j0ZOBY1scGp0ddyP3OFOLNAcdLhB3zPk9EEQfOEp/YSIOIu/dTZjqbNtvI20J5oGVXb7oDuBK3G2Dp5a9cOcq1BccBDMkg8+AmJaQA6wtVnbqrUAc/mss2QEckXorNDJppMpfIkXsTaZfTCjkPv2HVexqzNvsk9sWKuHLu+rxHYk0jn4Y8oQc6bWdx1d+ukruQblv+bIaU/mJHO5Ivn8uNzg91giZZ37v9o8LmdO3KgJdDQR8Ab9qFu5Ue51rsbNStcz3xeKzTpEsfTryua/bJ9LcJoLd31CngGB4qwYjViyd5lsoXvomb65kgv+i7z+jF769+kFq+0w1L+5oaARv6dhC7o25D3L33W0/v/dxURuwgW2mVxEqtzeuB0Q0FFjZJX+O67mMHDJWOrASxHdqPweecgwKkoMX5nhPEztcpPWvMd8pmj21fSmACdzq3j+dip6WwMQX4yElW9yj8nQQlTjW2/i+5omf6VR3NhNojC4fGrBO2r6sGTE9l3wfMNlHzFGpcfoHUsmBvABqMVXlkrsUulZVkRokBlhFbXOzvI0sW9kajaVNhZwAuXGbJyoai71aOGdwNyH1jk0HcKxc4MqvtQ5guF8YryuLWCipOXW56Mm9RNKJVZYSkfxqfyn9+5+5QU/nM0ngxaz+5RMs7XJZsTbCI9y8exI81pc6lJEt9LfNNdnVKj9zbSQLQmW5cYz0OpUpe9Ro+S7H0AV6wqjmLpJRGSulHEMSuvBjp3FAl5rFAj/zBZpbgLBel5auvtbyKxOJDmL98yb7FW6M/YffPeATxwGKuuIa+eVdV1D5t1G3I7mCIAFPQBtOC+fI1LjhH9P6zwr1DQCPrtOwq/LcthjZcv6Cevwma09xWVbQ1yASXqx7+0ld3n5zXaNOU3fkZDEpKuN6wZanNDOWeXSioiuh/sJ/+XcpE5kOR+d8axdBmP3ZtydDVhnxw6c1KC21cboYmy6Md05frWKDdHKnlLnpLrzCw5/GHNoUVzkkyiuwp6tvob45nE73b3AxgCAAAAAA=="

val EncodedDatabaseFromKeePassWithKeyFile = "A9mimmf7S7UBAAQAAhAAAAAxwfLmv3FDUL5YBSFq/Fr/AwQAAAABAAAABCAAAABwe7N4vpCvsxU9lb+myJ9DCygYnHFy678Mz5r/6oL6LQuLAAAAAAFCBQAAACRVVUlEEAAAAO9jbd+MKURLkfeppAPjCgwFAQAAAEkIAAAACgAAAAAAAAAFAQAAAE0IAAAAAAAABAAAAAAEAQAAAFAEAAAAAgAAAEIBAAAAUyAAAADuigPFTI0WGgF+55bzQcJ+iCf011hJHm46jLUVLsWlwAQBAAAAVgQAAAATAAAAAAcQAAAAqcbUvOavetRH5pXX6uCBcgAEAAAADQoNCrdoaHg1YWAeeQuz0XyypK4cuVJb2+kCktxId2m/vecn4jP/D8/iBK0P9BZQH32vQjaXIM6TV7p/MaFixP7eoG9Hv5/zZrQT3f8olIdhva1pW8w0n9ItjtynI29Sf3ifbgAEAAAQFZA+SJ1Ff7nOJXpQH4IgG1tqRx8qMtiTHMK4ujX0q/AX1HdeX72WrlCLwWFLfjuvpX37xBNqFqZbkhlxRE7VPZ71sK2QIY95zsVHZtIwm3vYr2DseKFPAwxFzIWrPRFdpBWKO67VQ9mA3GsMq6ZeYA6Gqiq3cBF+whUgGvGd1pQ0p/uuZJbKmsV9aGJ9qskisww9qsT2qkwkClWM+nXGzulTwL1B2AHbih1fquASpKlHw8G7EHoXhfItOl9MsZRv93AOkVyXGUmDtjeE1m/yqORyXUa7o9D68u8swfniWqZUioVk5r1FbdX6/90YLn5wWu15YtrXJCmW7fRLhJ5o+DvRiCi8YJn1OYiigHQrRwJSLV05XESerbH6dZIOu/a+0Et+m/3Y7z/XEPbtpx7DMu92xLQn/DRTvr6SOKb0ZALdwa9fkuOSM2HuWKFN6k2UjLllCEe76oVBoBGE0R7yuaChNRGuyvsnC8XZYUDgrrC1BaVfjnSUM9ZBDjTX183iz/dvQUyO3F7PvLZZ2OTKQ65vultl5dP4q/mzQ/ReTVk75YHcWEje4ijagNVytpylwbZftajsB4A2Rdq+hEJkYHKW0W9sLyc8zIuaj8WArbUDkvGo2hBzJwWuGl2DY8KpV1j5s5ZPHG+ywhAnzr0zlELoVxSmcRZf13eYmcgyFTaBR5eJVl0EOwe1+D+Ym5nOoegKCjDEilNS2IKmLiBWqnVb7MSo9PdaBjLuLPJroKuuvCOMbHRvXtMyFPdDl2Uz118YlgwPfOv9bGqYrS8eNTMmfSSr7n8g6csujojvk+Y5NQs24fsDTd88r+Y4JRuv1eUfBOs5TBys1J5WtnXci136/qSxY1Lvb402aynROjA704R/a2Jn2RYureMQzxkGTAwksiR3fuFiNqCZ9tXgRyBtdpt0osni9IcVolfmaYY2KbKP3UMNQXrSW+H6HDlBCbaVP6RT7qaQQ2S8swyXGs4cYHVaGs9+Olv4DetzeLdF+PkwunwW36Fcz9oJuygS1orbfMg0x1Qkby/YihPoNeQQmx03TWl0TUEYiW+RyV32mZfYK6IN6RaQIr+0tWVEE3Fl6JemQS8zuOXkD2li2AszcyeIl5Iurtdv4sNGGx40wMbSMzJ4dZnrQxvl1JpszuLkjU217HH0+DmI4TwRlHX76WWP2mWmgOhW0TPtxtbdtgeuOqpDqOOwEbzZBYbRdVzl3nVMJ6CVmfjom52w9NieCdE4Pk5XDNQgTbODodZKhe3Y5Gc9en9DVA1W4fQpfLMjv9jk0S+HyIpM2AIxiAosoRIsDuoO7jVpNwl3V6fuO61PKqIeBbcSmSnO2MRTFrEoz4RetOI97YMRTf5l6NTb7n+xhyk+rSOQcZH9gvu+zFolCpqVtl6BF/aIItwAAAAA"

val EncodedKeyFile = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEtleUZpbGU+CiAgPE1ldGE+CiAgICA8VmVyc2lvbj4yLjA8L1ZlcnNpb24+CiAgPC9NZXRhPgogIDxLZXk+CiAgICA8RGF0YSBIYXNoPSJEMDNDMzYzMCI+CiAgICAgICAgICBGRjA3QzIxMiA3OEMyQTg1RCBDQzVFN0I1MiAyQkYzRjU2MQogICAgICAgICAgMkUwN0NEQ0IgOTI1RTE1MDIgRkU1NEQwRDYgMEVDODE4QUMKICAgIDwvRGF0YT4KICA8L0tleT4KPC9LZXlGaWxlPg=="
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ import com.arsvechkarev.vault.features.common.navigation.result_contracts.Activi

class StubActivityResultWrapper(
private val stubCreatedFileUri: String = "",
private val stubGetFileUri: String = "",
private val stubSelectPasswordsFileUri: String = "",
private val stubSelectKeyFileUri: String = "",
private val stubSelectedFolderUri: String = "",
) : ActivityResultWrapper {

Expand Down Expand Up @@ -45,13 +46,25 @@ class StubActivityResultWrapper(
}
}

override fun wrapGetFileLauncher(
override fun wrapSelectPasswordsFileLauncher(
fragment: Fragment,
onSuccess: (Uri) -> Unit
): ActivityResultLauncher<String> {
return fragment.registerForActivityResult(
GetContent(),
getReturningUriTestRegistry(stubGetFileUri)
getReturningUriTestRegistry(stubSelectPasswordsFileUri)
) {
it?.apply(onSuccess)
}
}

override fun wrapSelectKeyFileLauncher(
fragment: Fragment,
onSuccess: (Uri) -> Unit
): ActivityResultLauncher<String> {
return fragment.registerForActivityResult(
GetContent(),
getReturningUriTestRegistry(stubSelectKeyFileUri)
) {
it?.apply(onSuccess)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ import java.io.ByteArrayInputStream
import java.io.InputStream

class StubExternalFileReader(
private val uriToMatch: String = "",
private val bytesToRead: () -> ByteArray = { ByteArray(0) }
private val uriToMatch: String? = null,
private val bytesToRead: (uri: Uri) -> ByteArray = { ByteArray(0) }
) : ExternalFileReader {

override fun getInputStreamFrom(uri: Uri): InputStream {
if (uri.toString() == uriToMatch) {
return ByteArrayInputStream(bytesToRead())
if (uri.toString() == uriToMatch || uriToMatch == null) {
return ByteArrayInputStream(bytesToRead(uri))
}
error("Unexpected url: $uri")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.arsvechkarev.vault.test.core.views.dialog

import com.arsvechkarev.vault.R
import com.arsvechkarev.vault.core.views.EditTextPassword
import com.arsvechkarev.vault.features.common.dialogs.EnterPasswordDialog
import com.arsvechkarev.vault.features.common.dialogs.EnterPasswordDialog.Companion.ButtonContinue
import com.arsvechkarev.vault.features.common.dialogs.EnterPasswordDialog.Companion.ImageCrossId
import com.arsvechkarev.vault.features.common.dialogs.EnterPasswordDialog.Companion.TextError
import com.arsvechkarev.vault.features.common.dialogs.EnterPasswordDialog.Companion.Title
import com.arsvechkarev.vault.test.core.ext.withClassNameTag
Expand All @@ -16,7 +16,7 @@ class KEnterPasswordDialog :
KBaseView<KEnterPasswordDialog>({ withClassNameTag<EnterPasswordDialog>() }) {

val title = KTextView { withId(Title) }
val imageCross = KImageView { withDrawable(R.drawable.ic_cross) }
val imageCross = KImageView { withId(ImageCrossId) }
val editText = KEditTextPassword {
isDescendantOfA { withClassNameTag<EnterPasswordDialog>() }
isInstanceOf(EditTextPassword::class.java)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@ package com.arsvechkarev.vault.test.screens
import com.arsvechkarev.vault.R
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.ButtonImportPasswords
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.ImageClearKeyFile
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.ImportPasswordsScreenRoot
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.ViewSelectPasswordsFile
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.TextSelectKeyFile
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.TextSelectPasswordsFile
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.TitleSelectKeyFile
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.TitleSelectPasswordsFile
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.ViewSelectKeyFile
import com.arsvechkarev.vault.features.import_passwords.ImportPasswordsScreen.Companion.ViewSelectPasswordsFile
import com.arsvechkarev.vault.test.core.base.BaseScreen
import com.arsvechkarev.vault.test.core.views.dialog.KEnterPasswordDialog
import com.arsvechkarev.vault.test.core.views.dialog.KInfoDialog
Expand All @@ -19,9 +23,13 @@ object KImportPasswordsScreen : BaseScreen<KImportPasswordsScreen>() {
override val viewClass = ImportPasswordsScreen::class.java

val imageBack = KImageView { withDrawable(R.drawable.ic_back) }
val layoutSelectFile = KView { withId(ViewSelectPasswordsFile) }
val titleSelectFile = KTextView { withId(TitleSelectPasswordsFile) }
val textSelectFile = KTextView { withId(TextSelectPasswordsFile) }
val titleSelectPasswordsFile = KTextView { withId(TitleSelectPasswordsFile) }
val textSelectPasswordsFile = KTextView { withId(TextSelectPasswordsFile) }
val viewSelectPasswordsFile = KView { withId(ViewSelectPasswordsFile) }
val titleSelectKeyFile = KTextView { withId(TitleSelectKeyFile) }
val textSelectKeyFile = KTextView { withId(TextSelectKeyFile) }
val imageClearKeyFile = KImageView { withId(ImageClearKeyFile) }
val viewSelectKeyFile = KView { withId(ViewSelectKeyFile) }
val buttonImportPasswords = KTextView { withId(ButtonImportPasswords) }
val infoDialog = KInfoDialog(ImportPasswordsScreenRoot)
val enterPasswordDialog = KEnterPasswordDialog()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class ExportPasswordsTest : VaultTestCase() {
application = ApplicationProvider.getApplicationContext(),
factory = StubExtraDependenciesFactory(
activityResultWrapper = StubActivityResultWrapper(
stubGetFileUri = "content://myfolder/passwords.kdbx"
stubSelectPasswordsFileUri = "content://myfolder/passwords.kdbx"
),
passwordsFileExporter = stubPasswordsFileExporter,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
import java.io.ByteArrayOutputStream
import java.util.Base64

class ImportPasswordsTest : VaultTestCase() {

Expand All @@ -50,13 +51,12 @@ class ImportPasswordsTest : VaultTestCase() {
application = ApplicationProvider.getApplicationContext(),
factory = StubExtraDependenciesFactory(
activityResultWrapper = StubActivityResultWrapper(
stubGetFileUri = "content://myfolder/passwords.kdbx"
stubSelectPasswordsFileUri = "content://myfolder/passwords.kdbx",
),
externalFileReader = stubFileReader,
imagesRequestsRecorder = testImageRequestsRecorder
),
)

}

@Test
Expand Down Expand Up @@ -121,8 +121,8 @@ class ImportPasswordsTest : VaultTestCase() {
}

KImportPasswordsScreen {
titleSelectFile.hasText("File")
textSelectFile.hasText("/storage/emulated/0/passwords.kdbx")
titleSelectPasswordsFile.hasText("File")
textSelectPasswordsFile.hasText("/storage/emulated/0/passwords.kdbx")

buttonImportPasswords.click()

Expand Down Expand Up @@ -220,7 +220,7 @@ class ImportPasswordsTest : VaultTestCase() {
}

KImportPasswordsScreen {
layoutSelectFile.click()
viewSelectPasswordsFile.click()
buttonImportPasswords.click()

enterPasswordDialog {
Expand All @@ -246,4 +246,92 @@ class ImportPasswordsTest : VaultTestCase() {
}
}
}

@Test
fun testImportingWithAKeyFile() = init {
CoreComponentHolder.initialize(
application = ApplicationProvider.getApplicationContext(),
factory = StubExtraDependenciesFactory(
activityResultWrapper = StubActivityResultWrapper(
stubSelectPasswordsFileUri = "content://myfolder/passwords.kdbx",
stubSelectKeyFileUri = "content://myfolder/keyfile.kf"
),
externalFileReader = StubExternalFileReader(
bytesToRead = { uri ->
when {
uri.toString().endsWith("kf") -> {
Base64.getDecoder().decode(Databases.EncodedKeyFile)
}
uri.toString().endsWith("kdbx") -> {
Base64.getDecoder().decode(Databases.EncodedDatabaseFromKeePassWithKeyFile)
}
else -> error("Unknown uri: $uri")
}
}
),
imagesRequestsRecorder = testImageRequestsRecorder
),
)
rule.launchActivity()
}.run {
KInitialScreen {
buttonImportPasswords.click()

KImportPasswordsScreen {
titleSelectKeyFile.hasText("Key file (optional)")
textSelectKeyFile.hasText("Select key file")
imageClearKeyFile.isNotDisplayed()

buttonImportPasswords.click()

enterPasswordDialog {
editText.replaceText("qwetu1233")
buttonContinue.click()
}

infoDialog {
isDisplayed()
title.hasText("Error")
}

infoDialog.action2.click()

infoDialog.isNotDisplayed()

enterPasswordDialog.imageCross.click()

enterPasswordDialog.isNotDisplayed()

viewSelectKeyFile.click()

textSelectKeyFile.hasText("/storage/emulated/0/keyfile.kf")

imageClearKeyFile.isDisplayed()
imageClearKeyFile.click()

textSelectKeyFile.hasText("Select key file")

viewSelectKeyFile.click()

buttonImportPasswords.click()

enterPasswordDialog {
editText.replaceText("qwetu1233")
buttonContinue.click()
}

KMainListScreen {
recycler {
hasSize(3)
childAt<PasswordItem>(1) {
title.hasText("supertest")
}
childAt<PasswordItem>(2) {
title.hasText("title1")
}
}
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.arsvechkarev.vault.features.common
object AppConstants {

const val DEFAULT_INTERNAL_PASSWORDS_FILE_NAME = "passwords.kdbx"
const val DEFAULT_INTERNAL_KEY_FILE_NAME = "keyfile"
const val DEFAULT_INTERNAL_KEY_FILE_NAME = "keyfile.kf"

const val IMAGES_CACHE_DIRECTORY = "images"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ class EnterPasswordDialog(context: Context) : FrameLayout(context) {
layoutGravity(CENTER_VERTICAL)
}
ImageView(WrapContent, WrapContent, style = ImageCross) {
id(ImageCrossId)
layoutGravity(CENTER_VERTICAL or END)
onClick { hide() }
}
Expand Down Expand Up @@ -216,6 +217,7 @@ class EnterPasswordDialog(context: Context) : FrameLayout(context) {

companion object {

val ImageCrossId = View.generateViewId()
val Title = View.generateViewId()
val TextError = View.generateViewId()
val ButtonContinue = View.generateViewId()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,12 @@ interface ActivityResultWrapper {
onSuccess: (Uri) -> Unit
): ActivityResultLauncher<String>

fun wrapGetFileLauncher(
fun wrapSelectPasswordsFileLauncher(
fragment: Fragment,
onSuccess: (Uri) -> Unit
): ActivityResultLauncher<String>

fun wrapSelectKeyFileLauncher(
fragment: Fragment,
onSuccess: (Uri) -> Unit
): ActivityResultLauncher<String>
Expand All @@ -35,7 +40,14 @@ class RealActivityResultWrapper : ActivityResultWrapper {
return fragment.registerForActivityResult(CreateDocument(contentType)) { it?.apply(onSuccess) }
}

override fun wrapGetFileLauncher(
override fun wrapSelectPasswordsFileLauncher(
fragment: Fragment,
onSuccess: (Uri) -> Unit
): ActivityResultLauncher<String> {
return fragment.registerForActivityResult(GetContent()) { it?.apply(onSuccess) }
}

override fun wrapSelectKeyFileLauncher(
fragment: Fragment,
onSuccess: (Uri) -> Unit
): ActivityResultLauncher<String> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,10 @@ class ImportPasswordsScreen : BaseFragmentScreen() {
}

private val selectPasswordsFileResultLauncher = coreComponent.activityResultWrapper
.wrapGetFileLauncher(this) { uri -> store.tryDispatch(OnSelectedPasswordsFile(uri)) }
.wrapSelectPasswordsFileLauncher(this) { uri -> store.tryDispatch(OnSelectedPasswordsFile(uri)) }

private val selectKeyFileResultLauncher = coreComponent.activityResultWrapper
.wrapGetFileLauncher(this) { uri -> store.tryDispatch(OnSelectedKeyFile(uri)) }
.wrapSelectKeyFileLauncher(this) { uri -> store.tryDispatch(OnSelectedKeyFile(uri)) }

private val store by viewModelStore {
ImportPasswordsStore(coreComponent, arg(Uri::class), booleanArg(ASK_FOR_CONFIRMATION))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class InitialScreen : BaseFragmentScreen() {
}

private val importFileLauncher = coreComponent.activityResultWrapper
.wrapGetFileLauncher(this@InitialScreen) { uri ->
.wrapSelectPasswordsFileLauncher(this@InitialScreen) { uri ->
coreComponent.router.goForward(
screenInfo = ImportPasswordsScreen(uri, askForConfirmation = false),
animate = false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ class MainListScreen : BaseFragmentScreen() {
}

private val selectImportFileLauncher = coreComponent.activityResultWrapper
.wrapGetFileLauncher(this@MainListScreen) { uri ->
.wrapSelectPasswordsFileLauncher(this@MainListScreen) { uri ->
store.tryDispatch(OnImportFileSelected(uri))
}

Expand Down

0 comments on commit cdd0562

Please sign in to comment.