diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 67c27aed..034bfdc7 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -49,10 +49,32 @@ jobs: - name: Run tests run: ./gradlew app:test - build-gplay-debug: - name: Build Google Play debug + build-apks: + name: Build and store apk files needs: [ check-code-style, run-tests ] runs-on: ubuntu-latest + strategy: + matrix: + include: + - command: assembleGplayDebug + fileName: app-gplay-debug.apk + filePath: ./app/build/outputs/apk/gplay/debug/app-gplay-debug.apk + + - command: assembleGplayRelease + fileName: app-gplay-release.apk + filePath: ./app/build/outputs/apk/gplay/release/app-gplay-release.apk + + - command: assembleFdroidDebug + fileName: app-fdroid-debug.apk + filePath: ./app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk + + - command: assembleFdroidRelease + fileName: app-fdroid-release.apk + filePath: ./app/build/outputs/apk/fdroid/release/app-fdroid-release.apk + + - command: assembleFdroidAutomation + fileName: app-fdroid-automation.apk + filePath: ./app/build/outputs/apk/fdroid/automation/app-fdroid-automation.apk steps: - name: Checkout uses: actions/checkout@v3 @@ -69,98 +91,10 @@ jobs: - name: Build run: | - ./gradlew app:assembleGplayDebug + ./gradlew app:${{ matrix.command }} - name: Store APK file uses: actions/upload-artifact@v3 with: - name: app-gplay-debug.apk - path: | - ./app/build/outputs/apk/gplay/debug/app-gplay-debug.apk - - build-gplay-release: - name: Build Google Play release - needs: [ check-code-style, run-tests ] - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: '17' - - - name: Decrypt and validate decrypted data - env: - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - run: ./.github/workflows/decrypt-and-validate-data.sh - - - name: Build - run: | - ./gradlew app:assembleGplayRelease - - - name: Store APK file - uses: actions/upload-artifact@v3 - with: - name: app-gplay-release.apk - path: | - ./app/build/outputs/apk/gplay/release/app-gplay-release.apk - - build-fdroid-debug: - name: Build FDroid debug - needs: [ check-code-style, run-tests ] - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: '17' - - - name: Decrypt and validate decrypted data - env: - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - run: ./.github/workflows/decrypt-and-validate-data.sh - - - name: Build - run: | - ./gradlew app:assembleFdroidDebug - - - name: Store APK file - uses: actions/upload-artifact@v3 - with: - name: app-fdroid-debug.apk - path: | - ./app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk - - build-fdroid-release: - name: Build FDroid release - needs: [ check-code-style, run-tests ] - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: '17' - - - name: Decrypt and validate decrypted data - env: - GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - run: ./.github/workflows/decrypt-and-validate-data.sh - - - name: Build - run: | - ./gradlew app:assembleFdroidRelease - - - name: Store APK file - uses: actions/upload-artifact@v3 - with: - name: app-fdroid-release.apk - path: | - ./app/build/outputs/apk/fdroid/release/app-fdroid-release.apk \ No newline at end of file + name: ${{ matrix.fileName }} + path: ${{ matrix.filePath }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c129bf35..3c7f2f57 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,8 +12,7 @@ jobs: runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') steps: - - name: Checkout - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: @@ -25,23 +24,15 @@ jobs: GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} run: ./.github/workflows/decrypt-and-validate-data.sh - - name: Build debug and release apk's + - name: Build apk's run: | - ./gradlew app:assembleFdroidDebug app:assembleFdroidRelease - - - name: Store debug apk - uses: actions/upload-artifact@v3 - with: - name: app-fdroid-debug.apk - path: | - ./app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk + ./gradlew app:assembleFdroidDebug app:assembleFdroidRelease app:assembleFdroidAutomation - - name: Store release apk - uses: actions/upload-artifact@v3 - with: - name: app-fdroid-release.apk - path: | - ./app/build/outputs/apk/fdroid/release/app-fdroid-release.apk + - name: Rename files + run: | + cp ./app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk ./keepassvault-debug.apk + cp ./app/build/outputs/apk/fdroid/release/app-fdroid-release.apk ./keepassvault-release.apk + cp ./app/build/outputs/apk/fdroid/automation/app-fdroid-automation.apk ./keepassvault-test.apk - name: Publish Github Release uses: softprops/action-gh-release@v2 @@ -49,8 +40,9 @@ jobs: generate_release_notes: true prerelease: true files: | - ./app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk - ./app/build/outputs/apk/fdroid/release/app-fdroid-release.apk + ./keepassvault-debug.apk + ./keepassvault-release.apk + ./keepassvault-test.apk upload-to-google-play: name: Upload App Bundle to Google Play diff --git a/app/build.gradle b/app/build.gradle index 42601281..4eec41b0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -107,7 +107,7 @@ android { } composeOptions { - kotlinCompilerExtensionVersion "1.5.4" + kotlinCompilerExtensionVersion "1.5.14" } kotlinOptions { @@ -154,9 +154,15 @@ android { versionNameSuffix 'd' signingConfig signingConfigs.debug } - release { + automation { + debuggable true minifyEnabled false + signingConfig signingConfigs.debug + applicationIdSuffix '.automation' + } + release { debuggable false + minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } @@ -314,7 +320,7 @@ dependencies { // KeePass implementation "com.github.anvell:kotpass:$kotpassVersion" implementation "com.github.aivanovski:keepass-tree-diff:$treeDiffVersion" - debugImplementation "com.github.aivanovski:keepass-tree-builder:$treeBuilderVersion" + implementation "com.github.aivanovski:keepass-tree-builder:$treeBuilderVersion" // Fuzzy search implementation "com.github.aivanovski:fzf4j:$fzf4jVersion" diff --git a/app/icons/icon-automation.svg b/app/icons/icon-automation.svg new file mode 100644 index 00000000..2b0b6bb4 --- /dev/null +++ b/app/icons/icon-automation.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/automation/AndroidManifest.xml b/app/src/automation/AndroidManifest.xml new file mode 100644 index 00000000..8ae6413c --- /dev/null +++ b/app/src/automation/AndroidManifest.xml @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/automation/kotlin/com/ivanovsky/passnotes/injection/DebugModuleBuilder.kt b/app/src/automation/kotlin/com/ivanovsky/passnotes/injection/DebugModuleBuilder.kt new file mode 100644 index 00000000..f4d0bb87 --- /dev/null +++ b/app/src/automation/kotlin/com/ivanovsky/passnotes/injection/DebugModuleBuilder.kt @@ -0,0 +1,44 @@ +package com.ivanovsky.passnotes.injection + +import android.content.Context +import com.ivanovsky.passnotes.data.repository.settings.Settings +import com.ivanovsky.passnotes.domain.LoggerInteractor +import com.ivanovsky.passnotes.injection.modules.BiometricModule +import com.ivanovsky.passnotes.injection.modules.CoreModule +import com.ivanovsky.passnotes.injection.modules.UiModule +import com.ivanovsky.passnotes.injection.modules.UseCaseModule +import com.ivanovsky.passnotes.injection.modules.debug.DebugFileSystemProvidersModule +import com.ivanovsky.passnotes.injection.modules.debug.DebugModule +import com.ivanovsky.passnotes.injection.modules.debug.FakeBiometricModule +import org.koin.core.module.Module + +// Is loaded via reflection in App.kt +class DebugModuleBuilder( + private val context: Context, + private val loggerInteractor: LoggerInteractor, + private val settings: Settings +) : DIModuleBuilder { + + override var isExternalStorageAccessEnabled: Boolean = false + + override fun buildModules(): List { + val isLoadFakeBiometricModule = settings.testToggles?.isFakeBiometricEnabled ?: false + val isFakeFileSystemEnabled = settings.testToggles?.isFakeFileSystemEnabled ?: false + + return listOf( + CoreModule.build(loggerInteractor), + DebugModule.build(), + DebugFileSystemProvidersModule.build( + isExternalStorageAccessEnabled = isExternalStorageAccessEnabled, + isFakeFileSystemEnabled = isFakeFileSystemEnabled + ), + if (isLoadFakeBiometricModule) { + FakeBiometricModule.build() + } else { + BiometricModule.build() + }, + UseCaseModule.build(), + UiModule.build() + ) + } +} \ No newline at end of file diff --git a/app/src/automation/res/values/colors.xml b/app/src/automation/res/values/colors.xml new file mode 100644 index 00000000..998e89d2 --- /dev/null +++ b/app/src/automation/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #58e67e + #2c733f + \ No newline at end of file diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/entity/StorageDestinationType.kt b/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/entity/StorageDestinationType.kt deleted file mode 100644 index 86c9b516..00000000 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/entity/StorageDestinationType.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.ivanovsky.passnotes.data.repository.file.entity - -enum class StorageDestinationType { - LOCAL, - REMOTE -} \ No newline at end of file diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/DebugModuleBuilder.kt b/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/DebugModuleBuilder.kt index 33fdee80..f4d0bb87 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/DebugModuleBuilder.kt +++ b/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/DebugModuleBuilder.kt @@ -5,11 +5,11 @@ import com.ivanovsky.passnotes.data.repository.settings.Settings import com.ivanovsky.passnotes.domain.LoggerInteractor import com.ivanovsky.passnotes.injection.modules.BiometricModule import com.ivanovsky.passnotes.injection.modules.CoreModule -import com.ivanovsky.passnotes.injection.modules.DebugFileSystemProvidersModule -import com.ivanovsky.passnotes.injection.modules.DebugModule -import com.ivanovsky.passnotes.injection.modules.FakeBiometricModule import com.ivanovsky.passnotes.injection.modules.UiModule import com.ivanovsky.passnotes.injection.modules.UseCaseModule +import com.ivanovsky.passnotes.injection.modules.debug.DebugFileSystemProvidersModule +import com.ivanovsky.passnotes.injection.modules.debug.DebugModule +import com.ivanovsky.passnotes.injection.modules.debug.FakeBiometricModule import org.koin.core.module.Module // Is loaded via reflection in App.kt diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/DatabaseContentFactory.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/DatabaseContentFactory.kt similarity index 54% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/DatabaseContentFactory.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/DatabaseContentFactory.kt index 748cf3d5..a7561474 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/DatabaseContentFactory.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/DatabaseContentFactory.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake fun interface DatabaseContentFactory { fun create(): ByteArray diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/DebugFileSystemResolver.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/DebugFileSystemResolver.kt similarity index 73% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/DebugFileSystemResolver.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/DebugFileSystemResolver.kt index 32dec43a..ad03e21c 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/DebugFileSystemResolver.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/DebugFileSystemResolver.kt @@ -1,9 +1,11 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake import com.ivanovsky.passnotes.data.ObserverBus import com.ivanovsky.passnotes.data.entity.FSAuthority import com.ivanovsky.passnotes.data.entity.FSType -import com.ivanovsky.passnotes.data.repository.file.delay.ThreadThrottlerImpl +import com.ivanovsky.passnotes.data.repository.file.FileSystemProvider +import com.ivanovsky.passnotes.data.repository.file.FileSystemResolver +import com.ivanovsky.passnotes.data.repository.file.fake.delay.ThreadThrottlerImpl import com.ivanovsky.passnotes.injection.GlobalInjector class DebugFileSystemResolver( diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeDatabaseContentFactory.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeDatabaseContentFactory.kt similarity index 99% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeDatabaseContentFactory.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeDatabaseContentFactory.kt index 1e275965..31e868df 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeDatabaseContentFactory.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeDatabaseContentFactory.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake import android.util.Base64 import com.github.aivanovski.keepasstreebuilder.DatabaseBuilderDsl diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileFactory.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileFactory.kt similarity index 90% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileFactory.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileFactory.kt index 23f3cec4..35275221 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileFactory.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileFactory.kt @@ -1,17 +1,17 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake import com.ivanovsky.passnotes.data.entity.FSAuthority import com.ivanovsky.passnotes.data.entity.FileDescriptor import com.ivanovsky.passnotes.data.entity.SyncStatus -import com.ivanovsky.passnotes.data.repository.file.FakeDatabaseContentFactory.createDatabaseWithAttachmentsData -import com.ivanovsky.passnotes.data.repository.file.FakeDatabaseContentFactory.createDatabaseWithCombinedKey -import com.ivanovsky.passnotes.data.repository.file.FakeDatabaseContentFactory.createDatabaseWithExpiredData -import com.ivanovsky.passnotes.data.repository.file.FakeDatabaseContentFactory.createDatabaseWithHistoryData -import com.ivanovsky.passnotes.data.repository.file.FakeDatabaseContentFactory.createDatabaseWithKeyFile -import com.ivanovsky.passnotes.data.repository.file.FakeDatabaseContentFactory.createDatabaseWithOtpData -import com.ivanovsky.passnotes.data.repository.file.FakeDatabaseContentFactory.createDemoDatabase -import com.ivanovsky.passnotes.data.repository.file.FakeDatabaseContentFactory.createKeyFileData -import com.ivanovsky.passnotes.data.repository.file.entity.FakeStorageEntry +import com.ivanovsky.passnotes.data.repository.file.fake.FakeDatabaseContentFactory.createDatabaseWithAttachmentsData +import com.ivanovsky.passnotes.data.repository.file.fake.FakeDatabaseContentFactory.createDatabaseWithCombinedKey +import com.ivanovsky.passnotes.data.repository.file.fake.FakeDatabaseContentFactory.createDatabaseWithExpiredData +import com.ivanovsky.passnotes.data.repository.file.fake.FakeDatabaseContentFactory.createDatabaseWithHistoryData +import com.ivanovsky.passnotes.data.repository.file.fake.FakeDatabaseContentFactory.createDatabaseWithKeyFile +import com.ivanovsky.passnotes.data.repository.file.fake.FakeDatabaseContentFactory.createDatabaseWithOtpData +import com.ivanovsky.passnotes.data.repository.file.fake.FakeDatabaseContentFactory.createDemoDatabase +import com.ivanovsky.passnotes.data.repository.file.fake.FakeDatabaseContentFactory.createKeyFileData +import com.ivanovsky.passnotes.data.repository.file.fake.entity.FakeStorageEntry import com.ivanovsky.passnotes.util.FileUtils class FakeFileFactory( diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileOutputStream.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileOutputStream.kt similarity index 95% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileOutputStream.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileOutputStream.kt index 6cf89752..ffea1c19 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileOutputStream.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileOutputStream.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake import java.io.ByteArrayOutputStream import java.io.IOException diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileStorage.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileStorage.kt similarity index 89% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileStorage.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileStorage.kt index 612c2084..b9d39b00 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileStorage.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileStorage.kt @@ -1,11 +1,13 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake import com.ivanovsky.passnotes.data.entity.FileDescriptor import com.ivanovsky.passnotes.data.entity.SyncStatus -import com.ivanovsky.passnotes.data.repository.file.entity.FakeStorageEntry -import com.ivanovsky.passnotes.data.repository.file.entity.StorageDestinationType -import com.ivanovsky.passnotes.data.repository.file.entity.StorageDestinationType.LOCAL -import com.ivanovsky.passnotes.data.repository.file.entity.StorageDestinationType.REMOTE +import com.ivanovsky.passnotes.data.repository.file.FSOptions +import com.ivanovsky.passnotes.data.repository.file.FileSystemAuthenticator +import com.ivanovsky.passnotes.data.repository.file.fake.entity.FakeStorageEntry +import com.ivanovsky.passnotes.data.repository.file.fake.entity.StorageDestinationType +import com.ivanovsky.passnotes.data.repository.file.fake.entity.StorageDestinationType.LOCAL +import com.ivanovsky.passnotes.data.repository.file.fake.entity.StorageDestinationType.REMOTE import com.ivanovsky.passnotes.util.FileUtils.getParentPath import timber.log.Timber diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileSystemAuthenticator.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileSystemAuthenticator.kt similarity index 84% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileSystemAuthenticator.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileSystemAuthenticator.kt index a23603cf..c5d1986a 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileSystemAuthenticator.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileSystemAuthenticator.kt @@ -1,8 +1,10 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake import android.content.Context import com.ivanovsky.passnotes.data.entity.FSAuthority import com.ivanovsky.passnotes.data.entity.FSCredentials +import com.ivanovsky.passnotes.data.repository.file.AuthType +import com.ivanovsky.passnotes.data.repository.file.FileSystemAuthenticator import com.ivanovsky.passnotes.data.repository.file.exception.IncorrectUseException import java.util.concurrent.atomic.AtomicReference diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileSystemProvider.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileSystemProvider.kt similarity index 91% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileSystemProvider.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileSystemProvider.kt index fad13089..3c20d367 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileSystemProvider.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileSystemProvider.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake import com.ivanovsky.passnotes.data.ObserverBus import com.ivanovsky.passnotes.data.entity.FSAuthority @@ -8,8 +8,13 @@ import com.ivanovsky.passnotes.data.entity.FileDescriptor import com.ivanovsky.passnotes.data.entity.OperationError import com.ivanovsky.passnotes.data.entity.OperationError.GENERIC_MESSAGE_FAILED_TO_FIND_FILE import com.ivanovsky.passnotes.data.entity.OperationResult -import com.ivanovsky.passnotes.data.repository.file.delay.ThreadThrottler -import com.ivanovsky.passnotes.data.repository.file.entity.StorageDestinationType +import com.ivanovsky.passnotes.data.repository.file.FSOptions +import com.ivanovsky.passnotes.data.repository.file.FileSystemAuthenticator +import com.ivanovsky.passnotes.data.repository.file.FileSystemProvider +import com.ivanovsky.passnotes.data.repository.file.FileSystemSyncProcessor +import com.ivanovsky.passnotes.data.repository.file.OnConflictStrategy +import com.ivanovsky.passnotes.data.repository.file.fake.delay.ThreadThrottler +import com.ivanovsky.passnotes.data.repository.file.fake.entity.StorageDestinationType import com.ivanovsky.passnotes.util.FileUtils import java.io.ByteArrayInputStream import java.io.FileNotFoundException diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileSystemSyncProcessor.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileSystemSyncProcessor.kt similarity index 88% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileSystemSyncProcessor.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileSystemSyncProcessor.kt index 25c1dba8..eebffe9d 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/FakeFileSystemSyncProcessor.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/FakeFileSystemSyncProcessor.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake import com.ivanovsky.passnotes.data.ObserverBus import com.ivanovsky.passnotes.data.entity.ConflictResolutionStrategy @@ -14,13 +14,15 @@ import com.ivanovsky.passnotes.data.entity.SyncConflictInfo import com.ivanovsky.passnotes.data.entity.SyncProgressStatus import com.ivanovsky.passnotes.data.entity.SyncResolution import com.ivanovsky.passnotes.data.entity.SyncStatus -import com.ivanovsky.passnotes.data.repository.file.FakeFileFactory.FileUid -import com.ivanovsky.passnotes.data.repository.file.delay.ThreadThrottler -import com.ivanovsky.passnotes.data.repository.file.delay.ThreadThrottler.Type.LONG_DELAY -import com.ivanovsky.passnotes.data.repository.file.delay.ThreadThrottler.Type.MEDIUM_DELAY -import com.ivanovsky.passnotes.data.repository.file.delay.ThreadThrottler.Type.SHORT_DELAY -import com.ivanovsky.passnotes.data.repository.file.entity.StorageDestinationType.LOCAL -import com.ivanovsky.passnotes.data.repository.file.entity.StorageDestinationType.REMOTE +import com.ivanovsky.passnotes.data.repository.file.FileSystemSyncProcessor +import com.ivanovsky.passnotes.data.repository.file.SyncStrategy +import com.ivanovsky.passnotes.data.repository.file.fake.FakeFileFactory.FileUid +import com.ivanovsky.passnotes.data.repository.file.fake.delay.ThreadThrottler +import com.ivanovsky.passnotes.data.repository.file.fake.delay.ThreadThrottler.Type.LONG_DELAY +import com.ivanovsky.passnotes.data.repository.file.fake.delay.ThreadThrottler.Type.MEDIUM_DELAY +import com.ivanovsky.passnotes.data.repository.file.fake.delay.ThreadThrottler.Type.SHORT_DELAY +import com.ivanovsky.passnotes.data.repository.file.fake.entity.StorageDestinationType.LOCAL +import com.ivanovsky.passnotes.data.repository.file.fake.entity.StorageDestinationType.REMOTE import com.ivanovsky.passnotes.domain.SyncStrategyResolver import timber.log.Timber diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/Utils.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/Utils.kt similarity index 92% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/Utils.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/Utils.kt index 29fb476d..078274e6 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/Utils.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/Utils.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.data.repository.file +package com.ivanovsky.passnotes.data.repository.file.fake import java.text.SimpleDateFormat import java.time.Instant diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/delay/ThreadThrottler.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/delay/ThreadThrottler.kt similarity index 74% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/delay/ThreadThrottler.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/delay/ThreadThrottler.kt index 8f7db71f..84f5e122 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/delay/ThreadThrottler.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/delay/ThreadThrottler.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.data.repository.file.delay +package com.ivanovsky.passnotes.data.repository.file.fake.delay interface ThreadThrottler { diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/delay/ThreadThrottlerImpl.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/delay/ThreadThrottlerImpl.kt similarity index 73% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/delay/ThreadThrottlerImpl.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/delay/ThreadThrottlerImpl.kt index 498ca81c..77423a41 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/delay/ThreadThrottlerImpl.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/delay/ThreadThrottlerImpl.kt @@ -1,6 +1,6 @@ -package com.ivanovsky.passnotes.data.repository.file.delay +package com.ivanovsky.passnotes.data.repository.file.fake.delay -import com.ivanovsky.passnotes.data.repository.file.delay.ThreadThrottler.Type +import com.ivanovsky.passnotes.data.repository.file.fake.delay.ThreadThrottler.Type class ThreadThrottlerImpl : ThreadThrottler { diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/entity/FakeStorageEntry.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/entity/FakeStorageEntry.kt similarity index 72% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/entity/FakeStorageEntry.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/entity/FakeStorageEntry.kt index 3afade7a..bde1c237 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/data/repository/file/entity/FakeStorageEntry.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/entity/FakeStorageEntry.kt @@ -1,8 +1,8 @@ -package com.ivanovsky.passnotes.data.repository.file.entity +package com.ivanovsky.passnotes.data.repository.file.fake.entity import com.ivanovsky.passnotes.data.entity.FileDescriptor import com.ivanovsky.passnotes.data.entity.SyncStatus -import com.ivanovsky.passnotes.data.repository.file.DatabaseContentFactory +import com.ivanovsky.passnotes.data.repository.file.fake.DatabaseContentFactory data class FakeStorageEntry( val localFile: FileDescriptor, diff --git a/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/entity/StorageDestinationType.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/entity/StorageDestinationType.kt new file mode 100644 index 00000000..da1da39d --- /dev/null +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/data/repository/file/fake/entity/StorageDestinationType.kt @@ -0,0 +1,6 @@ +package com.ivanovsky.passnotes.data.repository.file.fake.entity + +enum class StorageDestinationType { + LOCAL, + REMOTE +} \ No newline at end of file diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/TestDataBroadcastReceiver.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/TestDataBroadcastReceiver.kt similarity index 100% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/TestDataBroadcastReceiver.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/TestDataBroadcastReceiver.kt diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/TestDataInteractor.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/TestDataInteractor.kt similarity index 100% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/TestDataInteractor.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/TestDataInteractor.kt diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/TestDataParser.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/TestDataParser.kt similarity index 100% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/TestDataParser.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/TestDataParser.kt diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/ClearTextBiometricDecoder.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/ClearTextBiometricDecoder.kt similarity index 85% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/ClearTextBiometricDecoder.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/ClearTextBiometricDecoder.kt index 966fcee0..8c28f3f7 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/ClearTextBiometricDecoder.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/ClearTextBiometricDecoder.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.domain.biometric +package com.ivanovsky.passnotes.domain.test.biometric import com.ivanovsky.passnotes.data.crypto.biometric.BiometricDecoder import javax.crypto.Cipher diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/ClearTextBiometricEncoder.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/ClearTextBiometricEncoder.kt similarity index 91% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/ClearTextBiometricEncoder.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/ClearTextBiometricEncoder.kt index 888a08f5..74528d59 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/ClearTextBiometricEncoder.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/ClearTextBiometricEncoder.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.domain.biometric +package com.ivanovsky.passnotes.domain.test.biometric import com.ivanovsky.passnotes.data.crypto.biometric.BiometricEncoder import com.ivanovsky.passnotes.data.crypto.entity.SecretData diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/FakeBiometricAuthenticatorImpl.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/FakeBiometricAuthenticatorImpl.kt similarity index 94% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/FakeBiometricAuthenticatorImpl.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/FakeBiometricAuthenticatorImpl.kt index a174399d..b2cd56ea 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/FakeBiometricAuthenticatorImpl.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/FakeBiometricAuthenticatorImpl.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.domain.biometric +package com.ivanovsky.passnotes.domain.test.biometric import androidx.fragment.app.FragmentActivity import com.ivanovsky.passnotes.R @@ -6,6 +6,7 @@ import com.ivanovsky.passnotes.data.crypto.biometric.BiometricDataCipher import com.ivanovsky.passnotes.data.crypto.biometric.BiometricDecoder import com.ivanovsky.passnotes.data.crypto.biometric.BiometricEncoder import com.ivanovsky.passnotes.domain.ResourceProvider +import com.ivanovsky.passnotes.domain.biometric.BiometricAuthenticator import com.ivanovsky.passnotes.presentation.core.dialog.ConfirmationDialog import timber.log.Timber diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/FakeBiometricInteractorImpl.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/FakeBiometricInteractorImpl.kt similarity index 93% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/FakeBiometricInteractorImpl.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/FakeBiometricInteractorImpl.kt index 4b43f35e..05a982ec 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/biometric/FakeBiometricInteractorImpl.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/biometric/FakeBiometricInteractorImpl.kt @@ -1,10 +1,11 @@ -package com.ivanovsky.passnotes.domain.biometric +package com.ivanovsky.passnotes.domain.test.biometric import com.ivanovsky.passnotes.data.crypto.biometric.BiometricDecoder import com.ivanovsky.passnotes.data.crypto.biometric.BiometricEncoder import com.ivanovsky.passnotes.data.crypto.entity.BiometricData import com.ivanovsky.passnotes.data.entity.OperationError import com.ivanovsky.passnotes.data.entity.OperationResult +import com.ivanovsky.passnotes.domain.biometric.BiometricInteractor import java.util.concurrent.atomic.AtomicBoolean class FakeBiometricInteractorImpl : BiometricInteractor { diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/entity/TestArguments.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/entity/TestArguments.kt similarity index 100% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/entity/TestArguments.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/entity/TestArguments.kt diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/usecases/ResetAppDataUseCase.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/usecases/ResetAppDataUseCase.kt similarity index 100% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/usecases/ResetAppDataUseCase.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/usecases/ResetAppDataUseCase.kt diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/usecases/ResetTestDataUseCase.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/usecases/ResetTestDataUseCase.kt similarity index 100% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/usecases/ResetTestDataUseCase.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/usecases/ResetTestDataUseCase.kt diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupFakeFileUseCase.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupFakeFileUseCase.kt similarity index 96% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupFakeFileUseCase.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupFakeFileUseCase.kt index 3a196409..8832b5d7 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupFakeFileUseCase.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupFakeFileUseCase.kt @@ -8,9 +8,9 @@ import com.ivanovsky.passnotes.data.entity.OperationResult import com.ivanovsky.passnotes.data.entity.TestToggles import com.ivanovsky.passnotes.data.entity.UsedFile import com.ivanovsky.passnotes.data.repository.UsedFileRepository -import com.ivanovsky.passnotes.data.repository.file.DebugFileSystemResolver -import com.ivanovsky.passnotes.data.repository.file.FakeFileSystemProvider import com.ivanovsky.passnotes.data.repository.file.FileSystemResolver +import com.ivanovsky.passnotes.data.repository.file.fake.DebugFileSystemResolver +import com.ivanovsky.passnotes.data.repository.file.fake.FakeFileSystemProvider import com.ivanovsky.passnotes.data.repository.settings.Settings import com.ivanovsky.passnotes.domain.DispatcherProvider import com.ivanovsky.passnotes.domain.ResourceProvider diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupTestAutofillDataUseCase.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupTestAutofillDataUseCase.kt similarity index 100% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupTestAutofillDataUseCase.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/domain/test/usecases/SetupTestAutofillDataUseCase.kt diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/extensions/FileSystemProviderExt.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/extensions/FileSystemProviderExt.kt similarity index 100% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/extensions/FileSystemProviderExt.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/extensions/FileSystemProviderExt.kt diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/modules/DebugFileSystemProvidersModule.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/debug/DebugFileSystemProvidersModule.kt similarity index 78% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/injection/modules/DebugFileSystemProvidersModule.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/debug/DebugFileSystemProvidersModule.kt index 8e5e383c..4f3bfa97 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/modules/DebugFileSystemProvidersModule.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/debug/DebugFileSystemProvidersModule.kt @@ -1,11 +1,11 @@ -package com.ivanovsky.passnotes.injection.modules +package com.ivanovsky.passnotes.injection.modules.debug import com.ivanovsky.passnotes.data.ObserverBus import com.ivanovsky.passnotes.data.entity.FSType -import com.ivanovsky.passnotes.data.repository.file.DebugFileSystemResolver -import com.ivanovsky.passnotes.data.repository.file.FakeFileSystemProvider import com.ivanovsky.passnotes.data.repository.file.FileSystemResolver -import com.ivanovsky.passnotes.data.repository.file.delay.ThreadThrottlerImpl +import com.ivanovsky.passnotes.data.repository.file.fake.DebugFileSystemResolver +import com.ivanovsky.passnotes.data.repository.file.fake.FakeFileSystemProvider +import com.ivanovsky.passnotes.data.repository.file.fake.delay.ThreadThrottlerImpl import com.ivanovsky.passnotes.injection.GlobalInjector import org.koin.dsl.module diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/modules/DebugModule.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/debug/DebugModule.kt similarity index 93% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/injection/modules/DebugModule.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/debug/DebugModule.kt index c5e657d4..e52ec43b 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/modules/DebugModule.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/debug/DebugModule.kt @@ -1,4 +1,4 @@ -package com.ivanovsky.passnotes.injection.modules +package com.ivanovsky.passnotes.injection.modules.debug import com.ivanovsky.passnotes.domain.test.TestDataInteractor import com.ivanovsky.passnotes.domain.test.usecases.ResetAppDataUseCase diff --git a/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/modules/FakeBiometricModule.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/debug/FakeBiometricModule.kt similarity index 64% rename from app/src/debug/kotlin/com/ivanovsky/passnotes/injection/modules/FakeBiometricModule.kt rename to app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/debug/FakeBiometricModule.kt index 6ceda1c0..0b4b2e13 100644 --- a/app/src/debug/kotlin/com/ivanovsky/passnotes/injection/modules/FakeBiometricModule.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/injection/modules/debug/FakeBiometricModule.kt @@ -1,9 +1,9 @@ -package com.ivanovsky.passnotes.injection.modules +package com.ivanovsky.passnotes.injection.modules.debug import com.ivanovsky.passnotes.domain.biometric.BiometricAuthenticator import com.ivanovsky.passnotes.domain.biometric.BiometricInteractor -import com.ivanovsky.passnotes.domain.biometric.FakeBiometricAuthenticatorImpl -import com.ivanovsky.passnotes.domain.biometric.FakeBiometricInteractorImpl +import com.ivanovsky.passnotes.domain.test.biometric.FakeBiometricAuthenticatorImpl +import com.ivanovsky.passnotes.domain.test.biometric.FakeBiometricInteractorImpl import org.koin.dsl.module object FakeBiometricModule { diff --git a/app/src/main/kotlin/com/ivanovsky/passnotes/presentation/main/navigation/NavigationMenuViewModel.kt b/app/src/main/kotlin/com/ivanovsky/passnotes/presentation/main/navigation/NavigationMenuViewModel.kt index 7594199e..0c83a2cd 100644 --- a/app/src/main/kotlin/com/ivanovsky/passnotes/presentation/main/navigation/NavigationMenuViewModel.kt +++ b/app/src/main/kotlin/com/ivanovsky/passnotes/presentation/main/navigation/NavigationMenuViewModel.kt @@ -134,7 +134,7 @@ class NavigationMenuViewModel( val header = modelFactory.creteHeaderModel() val items = modelFactory.createMenuItemModels( isDatabaseOpened = isDbOpened, - isDebugMenuVisible = BuildConfig.DEBUG + isDebugMenuVisible = (BuildConfig.BUILD_TYPE == "debug") ) return viewModelFactory.createCellViewModels(header + items, eventProvider) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4844c0e8..c0c3c06e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,6 +2,7 @@ KeePassVault + KeePassVault Test WebDAV diff --git a/config.gradle b/config.gradle index 821806a0..8e7c0601 100644 --- a/config.gradle +++ b/config.gradle @@ -5,7 +5,7 @@ ext { compileSdk: 34 ] - kotlinVersion = '1.9.20' + kotlinVersion = '1.9.24' gradlePluginVersion = '8.2.2' playPublisherVersion = '3.9.1' spotlessVersion = '6.22.0'