diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c047967..340cff7 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -75,7 +75,10 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) implementation(project(":domain")) - implementation(project(":data")) - implementation(project(":presentation")) - implementation(project(":vault-api")) + implementation(project(":usecases")) + implementation(project(":domain-storage")) + implementation(project(":infrastructure-android")) + implementation(project(":task-runtime")) + implementation(project(":ui")) + implementation(project(":vault-contracts")) } \ No newline at end of file diff --git a/app/src/main/java/com/github/nullptroma/wallenc/app/MainActivity.kt b/app/src/main/java/com/github/nullptroma/wallenc/app/MainActivity.kt index d1ee0b0..5c5b7de 100644 --- a/app/src/main/java/com/github/nullptroma/wallenc/app/MainActivity.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/app/MainActivity.kt @@ -10,7 +10,7 @@ import androidx.activity.enableEdgeToEdge import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import com.github.nullptroma.wallenc.app.auth.YandexSignInService -import com.github.nullptroma.wallenc.presentation.WallencUi +import com.github.nullptroma.wallenc.ui.WallencUi import dagger.hilt.android.AndroidEntryPoint import timber.log.Timber import javax.inject.Inject diff --git a/app/src/main/java/com/github/nullptroma/wallenc/app/auth/YandexSignInService.kt b/app/src/main/java/com/github/nullptroma/wallenc/app/auth/YandexSignInService.kt index d4ec7f3..7842335 100644 --- a/app/src/main/java/com/github/nullptroma/wallenc/app/auth/YandexSignInService.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/app/auth/YandexSignInService.kt @@ -3,10 +3,10 @@ package com.github.nullptroma.wallenc.app.auth import android.content.Context import androidx.activity.ComponentActivity import androidx.activity.result.ActivityResultLauncher -import com.github.nullptroma.wallenc.data.vaults.yandex.YandexRegistration -import com.github.nullptroma.wallenc.vaultapi.CloudBrand -import com.github.nullptroma.wallenc.vaultapi.RemoteVaultAuthenticator -import com.github.nullptroma.wallenc.vaultapi.VaultLinkOutcome +import com.github.nullptroma.wallenc.infrastructure.vaults.yandex.YandexRegistration +import com.github.nullptroma.wallenc.vault.contract.CloudBrand +import com.github.nullptroma.wallenc.vault.contract.RemoteVaultAuthenticator +import com.github.nullptroma.wallenc.vault.contract.VaultLinkOutcome import com.yandex.authsdk.YandexAuthLoginOptions import com.yandex.authsdk.YandexAuthOptions import com.yandex.authsdk.YandexAuthResult diff --git a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/auth/YandexAuthModule.kt b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/auth/YandexAuthModule.kt index 78a94fc..2780e56 100644 --- a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/auth/YandexAuthModule.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/auth/YandexAuthModule.kt @@ -1,7 +1,7 @@ package com.github.nullptroma.wallenc.app.di.modules.auth import com.github.nullptroma.wallenc.app.auth.YandexSignInService -import com.github.nullptroma.wallenc.vaultapi.RemoteVaultAuthenticator +import com.github.nullptroma.wallenc.vault.contract.RemoteVaultAuthenticator import dagger.Binds import dagger.Module import dagger.hilt.InstallIn diff --git a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/RoomModule.kt b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/RoomModule.kt index 4574c82..6f47e31 100644 --- a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/RoomModule.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/RoomModule.kt @@ -1,11 +1,11 @@ package com.github.nullptroma.wallenc.app.di.modules.data import android.content.Context -import com.github.nullptroma.wallenc.data.db.RoomFactory -import com.github.nullptroma.wallenc.data.db.app.IAppDb -import com.github.nullptroma.wallenc.data.db.app.dao.StorageKeyMapDao -import com.github.nullptroma.wallenc.data.db.app.dao.StorageMetaInfoDao -import com.github.nullptroma.wallenc.data.db.app.dao.YandexAccountDao +import com.github.nullptroma.wallenc.infrastructure.db.RoomFactory +import com.github.nullptroma.wallenc.infrastructure.db.app.IAppDb +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.StorageKeyMapDao +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.StorageMetaInfoDao +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.YandexAccountDao import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/SingletonModule.kt b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/SingletonModule.kt index 2148738..14d113e 100644 --- a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/SingletonModule.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/data/SingletonModule.kt @@ -2,23 +2,28 @@ package com.github.nullptroma.wallenc.app.di.modules.data import android.content.Context import com.github.nullptroma.wallenc.app.di.modules.app.IoDispatcher -import com.github.nullptroma.wallenc.data.db.app.dao.StorageKeyMapDao -import com.github.nullptroma.wallenc.data.db.app.dao.StorageMetaInfoDao -import com.github.nullptroma.wallenc.data.db.app.dao.YandexAccountDao -import com.github.nullptroma.wallenc.data.db.app.repository.StorageKeyMapRepository -import com.github.nullptroma.wallenc.data.db.app.repository.StorageMetaInfoRepository -import com.github.nullptroma.wallenc.data.db.app.repository.YandexAccountRepository -import com.github.nullptroma.wallenc.data.network.yandexdisk.YandexDiskApiFactory -import com.github.nullptroma.wallenc.data.network.yandexdisk.repository.YandexDiskRepositoryFactory -import com.github.nullptroma.wallenc.data.network.yandexuserinfo.YandexUserInfoApi -import com.github.nullptroma.wallenc.data.network.yandexuserinfo.YandexUserInfoApiFactory -import com.github.nullptroma.wallenc.data.network.yandexuserinfo.repository.YandexUserInfoRepository -import com.github.nullptroma.wallenc.data.tasks.TaskOrchestrator -import com.github.nullptroma.wallenc.data.vaults.VaultsManager +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.StorageKeyMapDao +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.StorageMetaInfoDao +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.YandexAccountDao +import com.github.nullptroma.wallenc.infrastructure.db.app.repository.StorageKeyMapRepository +import com.github.nullptroma.wallenc.infrastructure.db.app.repository.StorageMetaInfoRepository +import com.github.nullptroma.wallenc.infrastructure.db.app.repository.YandexAccountRepository +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.YandexDiskApiFactory +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.repository.YandexDiskRepositoryFactory +import com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo.YandexUserInfoApi +import com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo.YandexUserInfoApiFactory +import com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo.repository.YandexUserInfoRepository +import com.github.nullptroma.wallenc.infrastructure.ports.StorageKeyMapStore +import com.github.nullptroma.wallenc.infrastructure.ports.YandexAccountStore +import com.github.nullptroma.wallenc.task.runtime.TaskOrchestrator +import com.github.nullptroma.wallenc.infrastructure.vaults.VaultsManager +import com.github.nullptroma.wallenc.infrastructure.vaults.local.LocalVault +import com.github.nullptroma.wallenc.infrastructure.vaults.local.LocalVaultIdStore import com.github.nullptroma.wallenc.domain.interfaces.IUnlockManager +import com.github.nullptroma.wallenc.domain.interfaces.IVault import com.github.nullptroma.wallenc.domain.interfaces.IVaultsManager import com.github.nullptroma.wallenc.domain.tasks.ITaskOrchestrator -import com.github.nullptroma.wallenc.vaultapi.VaultRegistrar +import com.github.nullptroma.wallenc.vault.contract.VaultRegistrar import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -43,10 +48,10 @@ class SingletonModule { @Provides @Singleton fun provideYandexDiskApiFactory( - yandexAccountRepository: YandexAccountRepository, + yandexAccountStore: YandexAccountStore, @IoDispatcher ioDispatcher: CoroutineDispatcher, ): YandexDiskApiFactory = YandexDiskApiFactory( - accountRepository = yandexAccountRepository, + accountRepository = yandexAccountStore, ioDispatcher = ioDispatcher, ) @@ -64,22 +69,33 @@ class SingletonModule { @Singleton fun provideVaultsManager( @IoDispatcher ioDispatcher: CoroutineDispatcher, - @ApplicationContext context: Context, - keyRepo: StorageKeyMapRepository, - yandexAccountRepository: YandexAccountRepository, + localVault: IVault, + keyRepo: StorageKeyMapStore, + yandexAccountStore: YandexAccountStore, yandexUserInfoRepository: YandexUserInfoRepository, yandexDiskRepositoryFactory: YandexDiskRepositoryFactory, ): VaultsManager { return VaultsManager( ioDispatcher = ioDispatcher, - context = context, + localVault = localVault, keyRepo = keyRepo, - yandexAccountRepository = yandexAccountRepository, + yandexAccountStore = yandexAccountStore, yandexUserInfoRepository = yandexUserInfoRepository, yandexDiskRepositoryFactory = yandexDiskRepositoryFactory, ) } + @Provides + @Singleton + fun provideLocalVault( + @IoDispatcher ioDispatcher: CoroutineDispatcher, + @ApplicationContext context: Context, + ): IVault = LocalVault( + ioDispatcher = ioDispatcher, + context = context, + idStore = LocalVaultIdStore(context), + ) + @Provides @Singleton fun provideIVaultsManager(impl: VaultsManager): IVaultsManager = impl @@ -104,6 +120,12 @@ class SingletonModule { return StorageKeyMapRepository(dao, ioDispatcher) } + @Provides + @Singleton + fun provideStorageKeyMapStore( + impl: StorageKeyMapRepository, + ): StorageKeyMapStore = impl + @Provides @Singleton fun provideStorageMetaInfoRepository( @@ -122,6 +144,12 @@ class SingletonModule { return YandexAccountRepository(dao, ioDispatcher) } + @Provides + @Singleton + fun provideYandexAccountStore( + impl: YandexAccountRepository, + ): YandexAccountStore = impl + @Provides @Singleton fun provideYandexUserInfoRepository( diff --git a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/domain/UseCasesModule.kt b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/domain/UseCasesModule.kt index 815d3a5..169a06b 100644 --- a/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/domain/UseCasesModule.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/app/di/modules/domain/UseCasesModule.kt @@ -2,12 +2,12 @@ package com.github.nullptroma.wallenc.app.di.modules.domain import com.github.nullptroma.wallenc.domain.interfaces.IUnlockManager import com.github.nullptroma.wallenc.domain.interfaces.IVaultsManager -import com.github.nullptroma.wallenc.domain.usecases.GetOpenedStoragesUseCase -import com.github.nullptroma.wallenc.domain.usecases.ManageStoragesEncryptionUseCase -import com.github.nullptroma.wallenc.domain.usecases.ManageVaultUseCase -import com.github.nullptroma.wallenc.domain.usecases.RemoveStorageUseCase -import com.github.nullptroma.wallenc.domain.usecases.RenameStorageUseCase -import com.github.nullptroma.wallenc.domain.usecases.StorageFileManagementUseCase +import com.github.nullptroma.wallenc.usecases.GetOpenedStoragesUseCase +import com.github.nullptroma.wallenc.usecases.ManageStoragesEncryptionUseCase +import com.github.nullptroma.wallenc.usecases.ManageVaultUseCase +import com.github.nullptroma.wallenc.usecases.RemoveStorageUseCase +import com.github.nullptroma.wallenc.usecases.RenameStorageUseCase +import com.github.nullptroma.wallenc.usecases.StorageFileManagementUseCase import dagger.Module import dagger.Provides import dagger.hilt.InstallIn diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/repository/StorageKeyMapRepository.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/repository/StorageKeyMapRepository.kt deleted file mode 100644 index 31e4fc9..0000000 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/repository/StorageKeyMapRepository.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.github.nullptroma.wallenc.data.db.app.repository - -import com.github.nullptroma.wallenc.data.db.app.dao.StorageKeyMapDao -import com.github.nullptroma.wallenc.data.db.app.model.DbStorageKeyMap -import com.github.nullptroma.wallenc.data.model.StorageKeyMap -import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.withContext - -class StorageKeyMapRepository( - private val dao: StorageKeyMapDao, - private val ioDispatcher: CoroutineDispatcher -) { - suspend fun getAll() = withContext(ioDispatcher) { dao.getAll().map { it.toModel() } } - suspend fun add(vararg keymaps: StorageKeyMap) = withContext(ioDispatcher) { - val dbModels = keymaps.map { DbStorageKeyMap.fromModel(it) } - dao.add(*dbModels.toTypedArray()) - } - - suspend fun delete(vararg keymaps: StorageKeyMap) = withContext(ioDispatcher) { - val dbModels = keymaps.map { DbStorageKeyMap.fromModel(it) } - dao.delete(*dbModels.toTypedArray()) - } -} \ No newline at end of file diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/repository/YandexAccountRepository.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/repository/YandexAccountRepository.kt deleted file mode 100644 index bef0607..0000000 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/repository/YandexAccountRepository.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.github.nullptroma.wallenc.data.db.app.repository - -import com.github.nullptroma.wallenc.data.db.app.dao.YandexAccountDao -import com.github.nullptroma.wallenc.data.db.app.model.DbYandexAccount -import kotlinx.coroutines.CoroutineDispatcher -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.withContext - -class YandexAccountRepository( - private val dao: YandexAccountDao, - private val ioDispatcher: CoroutineDispatcher -) { - fun observeAll(): Flow> = dao.observeAll() - - suspend fun getByYandexUserId(id: String): DbYandexAccount? = withContext(ioDispatcher) { - dao.getByYandexUserId(id) - } - - suspend fun getByVaultUuid(vaultUuid: String): DbYandexAccount? = withContext(ioDispatcher) { - dao.getByVaultUuid(vaultUuid) - } - - suspend fun insert(account: DbYandexAccount) = withContext(ioDispatcher) { - dao.insert(account) - } - - suspend fun updateCredentials(vaultUuid: String, email: String, token: String) = - withContext(ioDispatcher) { - dao.updateCredentials(vaultUuid, email, token) - } - - suspend fun deleteByVaultUuid(vaultUuid: String) = withContext(ioDispatcher) { - dao.deleteByVaultUuid(vaultUuid) - } -} diff --git a/data/.gitignore b/domain-storage/.gitignore similarity index 100% rename from data/.gitignore rename to domain-storage/.gitignore diff --git a/domain-storage/build.gradle.kts b/domain-storage/build.gradle.kts new file mode 100644 index 0000000..41f55f6 --- /dev/null +++ b/domain-storage/build.gradle.kts @@ -0,0 +1,27 @@ +plugins { + id("java-library") + alias(libs.plugins.jetbrains.kotlin.jvm) +} + +kotlin { + jvmToolchain(17) +} + +dependencies { + // jackson + implementation(libs.jackson.module.kotlin) + implementation(libs.jackson.datatype.jsr310) + + // Retrofit + implementation(libs.retrofit) + implementation(libs.retrofit.converter.scalars) + implementation(libs.retrofit.converter.jackson) + + implementation("com.squareup.okhttp3:okhttp:4.12.0") + implementation(libs.kotlinx.coroutines.core) + + testImplementation(libs.junit) + + implementation(project(":domain")) + implementation(project(":vault-contracts")) +} \ No newline at end of file diff --git a/data/consumer-rules.pro b/domain-storage/consumer-rules.pro similarity index 100% rename from data/consumer-rules.pro rename to domain-storage/consumer-rules.pro diff --git a/data/proguard-rules.pro b/domain-storage/proguard-rules.pro similarity index 100% rename from data/proguard-rules.pro rename to domain-storage/proguard-rules.pro diff --git a/presentation/src/androidTest/java/com/github/nullptroma/wallenc/presentation/ExampleInstrumentedTest.kt b/domain-storage/src/androidTest/java/com/github/nullptroma/wallenc/infrastructure/ExampleInstrumentedTest.kt similarity index 79% rename from presentation/src/androidTest/java/com/github/nullptroma/wallenc/presentation/ExampleInstrumentedTest.kt rename to domain-storage/src/androidTest/java/com/github/nullptroma/wallenc/infrastructure/ExampleInstrumentedTest.kt index fd6d1da..8abb240 100644 --- a/presentation/src/androidTest/java/com/github/nullptroma/wallenc/presentation/ExampleInstrumentedTest.kt +++ b/domain-storage/src/androidTest/java/com/github/nullptroma/wallenc/infrastructure/ExampleInstrumentedTest.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation +package com.github.nullptroma.wallenc.infrastructure import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -19,6 +19,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.github.nullptroma.wallenc.presentation.test", appContext.packageName) + assertEquals("com.github.nullptroma.wallenc.infrastructure.test", appContext.packageName) } } \ No newline at end of file diff --git a/data/src/main/AndroidManifest.xml b/domain-storage/src/main/AndroidManifest.xml similarity index 100% rename from data/src/main/AndroidManifest.xml rename to domain-storage/src/main/AndroidManifest.xml diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/auth/YandexOAuthScopes.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/auth/YandexOAuthScopes.kt similarity index 92% rename from data/src/main/java/com/github/nullptroma/wallenc/data/auth/YandexOAuthScopes.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/auth/YandexOAuthScopes.kt index 6be78f8..108bbf1 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/auth/YandexOAuthScopes.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/auth/YandexOAuthScopes.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.auth +package com.github.nullptroma.wallenc.infrastructure.auth /** * Scope-ы Яндекс.OAuth, которые нам нужны: только app_folder + disk.info. diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/model/StorageKeyMap.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/model/StorageKeyMap.kt similarity index 73% rename from data/src/main/java/com/github/nullptroma/wallenc/data/model/StorageKeyMap.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/model/StorageKeyMap.kt index 727b508..d24230b 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/model/StorageKeyMap.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/model/StorageKeyMap.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.model +package com.github.nullptroma.wallenc.infrastructure.model import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey import java.util.UUID diff --git a/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/model/YandexAccount.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/model/YandexAccount.kt new file mode 100644 index 0000000..6f6c4c9 --- /dev/null +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/model/YandexAccount.kt @@ -0,0 +1,8 @@ +package com.github.nullptroma.wallenc.infrastructure.model + +data class YandexAccount( + val vaultUuid: String, + val yandexUserId: String, + val email: String, + val oauthToken: String, +) diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/YandexDiskApi.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/YandexDiskApi.kt similarity index 79% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/YandexDiskApi.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/YandexDiskApi.kt index 0bbac2d..facdf25 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/YandexDiskApi.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/YandexDiskApi.kt @@ -1,10 +1,10 @@ -package com.github.nullptroma.wallenc.data.network.yandexdisk +package com.github.nullptroma.wallenc.infrastructure.network.yandexdisk -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.CustomPropertiesPatchDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.DiskInfoDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.LinkDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.OperationStatusDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.ResourceDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.CustomPropertiesPatchDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.DiskInfoDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.LinkDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.OperationStatusDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.ResourceDto import okhttp3.ResponseBody import retrofit2.Response import retrofit2.http.Body diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/YandexDiskApiFactory.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/YandexDiskApiFactory.kt similarity index 92% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/YandexDiskApiFactory.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/YandexDiskApiFactory.kt index 4734d0b..1bbb320 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/YandexDiskApiFactory.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/YandexDiskApiFactory.kt @@ -1,7 +1,7 @@ -package com.github.nullptroma.wallenc.data.network.yandexdisk +package com.github.nullptroma.wallenc.infrastructure.network.yandexdisk import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper -import com.github.nullptroma.wallenc.data.db.app.repository.YandexAccountRepository +import com.github.nullptroma.wallenc.infrastructure.ports.YandexAccountStore import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.runBlocking import okhttp3.OkHttpClient @@ -14,7 +14,7 @@ import java.util.UUID * плюс «голый» клиент для PUT/GET по одноразовым upload/download URL. */ class YandexDiskApiFactory( - private val accountRepository: YandexAccountRepository, + private val accountRepository: YandexAccountStore, private val ioDispatcher: CoroutineDispatcher, ) { diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/YandexDiskExceptions.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/YandexDiskExceptions.kt similarity index 59% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/YandexDiskExceptions.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/YandexDiskExceptions.kt index 289ba6f..8a2f54c 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/YandexDiskExceptions.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/YandexDiskExceptions.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.network.yandexdisk +package com.github.nullptroma.wallenc.infrastructure.network.yandexdisk import java.io.IOException diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/dto/YandexDiskDto.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/dto/YandexDiskDto.kt similarity index 95% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/dto/YandexDiskDto.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/dto/YandexDiskDto.kt index 53c5c5e..4d02c3e 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/dto/YandexDiskDto.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/dto/YandexDiskDto.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.network.yandexdisk.dto +package com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonProperty diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/repository/YandexDiskRepository.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/repository/YandexDiskRepository.kt similarity index 88% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/repository/YandexDiskRepository.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/repository/YandexDiskRepository.kt index 6b9217d..3fe22a7 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/repository/YandexDiskRepository.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/repository/YandexDiskRepository.kt @@ -1,16 +1,15 @@ -package com.github.nullptroma.wallenc.data.network.yandexdisk.repository +package com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.repository -import android.util.Log import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue -import com.github.nullptroma.wallenc.data.network.yandexdisk.YandexDiskApi -import com.github.nullptroma.wallenc.data.network.yandexdisk.YandexDiskAuthException -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.CustomPropertiesPatchDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.DiskInfoDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.EmbeddedResourceListDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.LinkDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.OperationStatusDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.ResourceDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.YandexDiskApi +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.YandexDiskAuthException +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.CustomPropertiesPatchDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.DiskInfoDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.EmbeddedResourceListDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.LinkDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.OperationStatusDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.ResourceDto import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.delay import kotlinx.coroutines.withContext @@ -181,14 +180,10 @@ class YandexDiskRepository( } catch (e: HttpException) { when (e.code()) { 401 -> { - Log.w(TAG, "Disk API 401: ${e.message()}") throw YandexDiskAuthException(e.message()) } 404 -> throw e - else -> { - Log.w(TAG, "Disk API HTTP ${e.code()}: ${e.message()}") - throw e - } + else -> throw e } } } @@ -202,7 +197,6 @@ class YandexDiskRepository( jackson.readValue(body.string()) companion object { - private const val TAG = "YandexDiskRepo" private val jackson = jacksonObjectMapper().apply { findAndRegisterModules() } private val OCTET_STREAM = "application/octet-stream".toMediaType() private const val OPERATION_POLL_DELAY_MS = 300L diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/repository/YandexDiskRepositoryFactory.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/repository/YandexDiskRepositoryFactory.kt similarity index 72% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/repository/YandexDiskRepositoryFactory.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/repository/YandexDiskRepositoryFactory.kt index b22e6c6..283545c 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexdisk/repository/YandexDiskRepositoryFactory.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexdisk/repository/YandexDiskRepositoryFactory.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.data.network.yandexdisk.repository +package com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.repository -import com.github.nullptroma.wallenc.data.network.yandexdisk.YandexDiskApiFactory +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.YandexDiskApiFactory import kotlinx.coroutines.CoroutineDispatcher import java.util.UUID diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/YandexUserInfoApi.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/YandexUserInfoApi.kt similarity index 78% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/YandexUserInfoApi.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/YandexUserInfoApi.kt index c8f45a9..a5c2d29 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/YandexUserInfoApi.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/YandexUserInfoApi.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.network.yandexuserinfo +package com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo import retrofit2.http.GET import retrofit2.http.Header diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/YandexUserInfoApiFactory.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/YandexUserInfoApiFactory.kt similarity index 87% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/YandexUserInfoApiFactory.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/YandexUserInfoApiFactory.kt index 89dd09e..8a4bb15 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/YandexUserInfoApiFactory.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/YandexUserInfoApiFactory.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.network.yandexuserinfo +package com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import retrofit2.Retrofit diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/YandexUserInfoDto.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/YandexUserInfoDto.kt similarity index 80% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/YandexUserInfoDto.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/YandexUserInfoDto.kt index ce691ff..92735cf 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/YandexUserInfoDto.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/YandexUserInfoDto.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.network.yandexuserinfo +package com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonProperty diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/repository/YandexUserInfoRepository.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/repository/YandexUserInfoRepository.kt similarity index 58% rename from data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/repository/YandexUserInfoRepository.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/repository/YandexUserInfoRepository.kt index fc4d470..1ae6816 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/network/yandexuserinfo/repository/YandexUserInfoRepository.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/network/yandexuserinfo/repository/YandexUserInfoRepository.kt @@ -1,7 +1,7 @@ -package com.github.nullptroma.wallenc.data.network.yandexuserinfo.repository +package com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo.repository -import com.github.nullptroma.wallenc.data.network.yandexuserinfo.YandexUserInfoApi -import com.github.nullptroma.wallenc.data.network.yandexuserinfo.YandexUserInfoDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo.YandexUserInfoApi +import com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo.YandexUserInfoDto import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext diff --git a/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/ports/StorageKeyMapStore.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/ports/StorageKeyMapStore.kt new file mode 100644 index 0000000..ae1ea25 --- /dev/null +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/ports/StorageKeyMapStore.kt @@ -0,0 +1,9 @@ +package com.github.nullptroma.wallenc.infrastructure.ports + +import com.github.nullptroma.wallenc.infrastructure.model.StorageKeyMap + +interface StorageKeyMapStore { + suspend fun add(value: StorageKeyMap) + suspend fun getAll(): List + suspend fun delete(vararg values: StorageKeyMap) +} diff --git a/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/ports/YandexAccountStore.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/ports/YandexAccountStore.kt new file mode 100644 index 0000000..7af1009 --- /dev/null +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/ports/YandexAccountStore.kt @@ -0,0 +1,13 @@ +package com.github.nullptroma.wallenc.infrastructure.ports + +import com.github.nullptroma.wallenc.infrastructure.model.YandexAccount +import kotlinx.coroutines.flow.Flow + +interface YandexAccountStore { + fun observeAll(): Flow> + suspend fun getByYandexUserId(id: String): YandexAccount? + suspend fun getByVaultUuid(vaultUuid: String): YandexAccount? + suspend fun insert(account: YandexAccount) + suspend fun updateCredentials(vaultUuid: String, email: String, token: String) + suspend fun deleteByVaultUuid(vaultUuid: String) +} diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/UnlockManager.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/UnlockManager.kt similarity index 94% rename from data/src/main/java/com/github/nullptroma/wallenc/data/storages/UnlockManager.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/UnlockManager.kt index b580179..0ce3ac2 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/UnlockManager.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/UnlockManager.kt @@ -1,8 +1,8 @@ -package com.github.nullptroma.wallenc.data.storages +package com.github.nullptroma.wallenc.infrastructure.storages -import com.github.nullptroma.wallenc.data.db.app.repository.StorageKeyMapRepository -import com.github.nullptroma.wallenc.data.model.StorageKeyMap -import com.github.nullptroma.wallenc.data.storages.encrypt.EncryptedStorage +import com.github.nullptroma.wallenc.infrastructure.model.StorageKeyMap +import com.github.nullptroma.wallenc.infrastructure.ports.StorageKeyMapStore +import com.github.nullptroma.wallenc.infrastructure.storages.encrypt.EncryptedStorage import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey import com.github.nullptroma.wallenc.domain.encrypt.Encryptor import com.github.nullptroma.wallenc.domain.interfaces.IStorage @@ -21,7 +21,7 @@ import java.security.MessageDigest import java.util.UUID class UnlockManager( - private val keymapRepository: StorageKeyMapRepository, + private val keymapRepository: StorageKeyMapStore, private val ioDispatcher: CoroutineDispatcher, vaultsManager: IVaultsManager ) : IUnlockManager { diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/common/BaseStorage.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/common/BaseStorage.kt similarity index 97% rename from data/src/main/java/com/github/nullptroma/wallenc/data/storages/common/BaseStorage.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/common/BaseStorage.kt index 951077b..361023a 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/common/BaseStorage.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/common/BaseStorage.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.storages.common +package com.github.nullptroma.wallenc.infrastructure.storages.common import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.github.nullptroma.wallenc.domain.common.impl.CommonStorageMetaInfo @@ -54,7 +54,7 @@ abstract class BaseStorage( /** * Базовая реализация [IStorageAccessor] передаёт UUID полностью; подклассы * могут переопределить, чтобы сохранить совместимость с уже существующими - * именами файлов (например, [com.github.nullptroma.wallenc.data.storages.encrypt.EncryptedStorage] + * именами файлов (например, [com.github.nullptroma.wallenc.infrastructure.storages.encrypt.EncryptedStorage] * раньше использовал первые 8 символов). */ protected open fun metaInfoUuidPart(): String = uuid.toString() diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorage.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/encrypt/EncryptedStorage.kt similarity index 94% rename from data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorage.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/encrypt/EncryptedStorage.kt index a005ac9..2e2821c 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorage.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/encrypt/EncryptedStorage.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.data.storages.encrypt +package com.github.nullptroma.wallenc.infrastructure.storages.encrypt -import com.github.nullptroma.wallenc.data.storages.common.BaseStorage +import com.github.nullptroma.wallenc.infrastructure.storages.common.BaseStorage import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey import com.github.nullptroma.wallenc.domain.encrypt.Encryptor import com.github.nullptroma.wallenc.domain.interfaces.IStorage diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorageAccessor.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/encrypt/EncryptedStorageAccessor.kt similarity index 98% rename from data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorageAccessor.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/encrypt/EncryptedStorageAccessor.kt index 6864503..e8c1080 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/encrypt/EncryptedStorageAccessor.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/encrypt/EncryptedStorageAccessor.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.data.storages.encrypt +package com.github.nullptroma.wallenc.infrastructure.storages.encrypt -import com.github.nullptroma.wallenc.data.utils.CloseHandledStreamExtension.Companion.onClosing +import com.github.nullptroma.wallenc.infrastructure.utils.CloseHandledStreamExtension.Companion.onClosing import com.github.nullptroma.wallenc.domain.common.impl.CommonDirectory import com.github.nullptroma.wallenc.domain.common.impl.CommonFile import com.github.nullptroma.wallenc.domain.common.impl.CommonMetaInfo diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorage.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/local/LocalStorage.kt similarity index 83% rename from data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorage.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/local/LocalStorage.kt index 05739d0..040ce05 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorage.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/local/LocalStorage.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.data.storages.local +package com.github.nullptroma.wallenc.infrastructure.storages.local -import com.github.nullptroma.wallenc.data.storages.common.BaseStorage +import com.github.nullptroma.wallenc.infrastructure.storages.common.BaseStorage import com.github.nullptroma.wallenc.domain.interfaces.IStorageAccessor import kotlinx.coroutines.CoroutineDispatcher import java.util.UUID diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorageAccessor.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/local/LocalStorageAccessor.kt similarity index 99% rename from data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorageAccessor.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/local/LocalStorageAccessor.kt index 9b7555d..1ff729b 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/local/LocalStorageAccessor.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/local/LocalStorageAccessor.kt @@ -1,9 +1,9 @@ -package com.github.nullptroma.wallenc.data.storages.local +package com.github.nullptroma.wallenc.infrastructure.storages.local import com.fasterxml.jackson.core.JacksonException import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue -import com.github.nullptroma.wallenc.data.utils.CloseHandledStreamExtension.Companion.onClosed +import com.github.nullptroma.wallenc.infrastructure.utils.CloseHandledStreamExtension.Companion.onClosed import com.github.nullptroma.wallenc.domain.common.impl.CommonDirectory import com.github.nullptroma.wallenc.domain.common.impl.CommonFile import com.github.nullptroma.wallenc.domain.common.impl.CommonMetaInfo diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/yandex/YandexStorage.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/yandex/YandexStorage.kt similarity index 76% rename from data/src/main/java/com/github/nullptroma/wallenc/data/storages/yandex/YandexStorage.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/yandex/YandexStorage.kt index 3779378..5236caa 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/yandex/YandexStorage.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/yandex/YandexStorage.kt @@ -1,8 +1,8 @@ -package com.github.nullptroma.wallenc.data.storages.yandex +package com.github.nullptroma.wallenc.infrastructure.storages.yandex -import com.github.nullptroma.wallenc.data.network.yandexdisk.repository.YandexDiskRepository -import com.github.nullptroma.wallenc.data.storages.common.BaseStorage -import com.github.nullptroma.wallenc.data.storages.local.LocalStorage +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.repository.YandexDiskRepository +import com.github.nullptroma.wallenc.infrastructure.storages.common.BaseStorage +import com.github.nullptroma.wallenc.infrastructure.storages.local.LocalStorage import com.github.nullptroma.wallenc.domain.interfaces.IStorageAccessor import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/yandex/YandexStorageAccessor.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/yandex/YandexStorageAccessor.kt similarity index 95% rename from data/src/main/java/com/github/nullptroma/wallenc/data/storages/yandex/YandexStorageAccessor.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/yandex/YandexStorageAccessor.kt index 4a2a4ae..83d45a8 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/storages/yandex/YandexStorageAccessor.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/storages/yandex/YandexStorageAccessor.kt @@ -1,9 +1,9 @@ -package com.github.nullptroma.wallenc.data.storages.yandex +package com.github.nullptroma.wallenc.infrastructure.storages.yandex -import com.github.nullptroma.wallenc.data.network.yandexdisk.YandexDiskAuthException -import com.github.nullptroma.wallenc.data.network.yandexdisk.dto.ResourceDto -import com.github.nullptroma.wallenc.data.network.yandexdisk.repository.YandexDiskRepository -import com.github.nullptroma.wallenc.data.utils.CloseHandledStreamExtension.Companion.onClosed +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.YandexDiskAuthException +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.dto.ResourceDto +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.repository.YandexDiskRepository +import com.github.nullptroma.wallenc.infrastructure.utils.CloseHandledStreamExtension.Companion.onClosed import com.github.nullptroma.wallenc.domain.common.impl.CommonDirectory import com.github.nullptroma.wallenc.domain.common.impl.CommonFile import com.github.nullptroma.wallenc.domain.common.impl.CommonMetaInfo @@ -23,7 +23,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.stateIn -import android.util.Log import kotlinx.coroutines.runBlocking import kotlinx.coroutines.withContext import java.io.ByteArrayOutputStream @@ -73,15 +72,12 @@ class YandexStorageAccessor( try { scanSizeAndNumOfFiles() _storageReady.value = true - Log.d(TAG, "init ok storageUuid=$storageUuid") } catch (e: YandexDiskAuthException) { reportAuthFailure() _storageReady.value = false - Log.w(TAG, "init auth failed storageUuid=$storageUuid", e) throw e } catch (e: Exception) { _storageReady.value = false - Log.w(TAG, "init failed storageUuid=$storageUuid", e) throw Exception("Yandex storage init failed", e) } } @@ -436,7 +432,6 @@ class YandexStorageAccessor( } companion object { - private const val TAG = "YandexStorageAcc" private const val SYSTEM_HIDDEN_DIRNAME = "wallenc-yandex-system" private const val DATA_PAGE_LENGTH = 10 private const val API_LIST_LIMIT = 200 diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/utils/CloseHandledStream.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/utils/CloseHandledStream.kt similarity index 97% rename from data/src/main/java/com/github/nullptroma/wallenc/data/utils/CloseHandledStream.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/utils/CloseHandledStream.kt index 1ab123e..b4758aa 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/utils/CloseHandledStream.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/utils/CloseHandledStream.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.utils +package com.github.nullptroma.wallenc.infrastructure.utils import java.io.InputStream import java.io.OutputStream diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/utils/IProvider.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/utils/IProvider.kt similarity index 64% rename from data/src/main/java/com/github/nullptroma/wallenc/data/utils/IProvider.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/utils/IProvider.kt index f60e07d..5d3de34 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/utils/IProvider.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/utils/IProvider.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.utils +package com.github.nullptroma.wallenc.infrastructure.utils interface IProvider { suspend fun get(): T? diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/VaultsManager.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/VaultsManager.kt similarity index 68% rename from data/src/main/java/com/github/nullptroma/wallenc/data/vaults/VaultsManager.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/VaultsManager.kt index 39195d9..d28647f 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/VaultsManager.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/VaultsManager.kt @@ -1,22 +1,19 @@ -package com.github.nullptroma.wallenc.data.vaults +package com.github.nullptroma.wallenc.infrastructure.vaults -import android.content.Context -import com.github.nullptroma.wallenc.data.db.app.model.DbYandexAccount -import com.github.nullptroma.wallenc.data.db.app.repository.StorageKeyMapRepository -import com.github.nullptroma.wallenc.data.db.app.repository.YandexAccountRepository -import com.github.nullptroma.wallenc.data.network.yandexdisk.repository.YandexDiskRepositoryFactory -import com.github.nullptroma.wallenc.data.network.yandexuserinfo.repository.YandexUserInfoRepository -import com.github.nullptroma.wallenc.data.storages.UnlockManager -import com.github.nullptroma.wallenc.data.vaults.local.LocalVault -import com.github.nullptroma.wallenc.data.vaults.local.LocalVaultIdStore -import com.github.nullptroma.wallenc.data.vaults.yandex.YandexRegistration -import com.github.nullptroma.wallenc.data.vaults.yandex.YandexVault +import com.github.nullptroma.wallenc.infrastructure.model.YandexAccount +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.repository.YandexDiskRepositoryFactory +import com.github.nullptroma.wallenc.infrastructure.network.yandexuserinfo.repository.YandexUserInfoRepository +import com.github.nullptroma.wallenc.infrastructure.ports.StorageKeyMapStore +import com.github.nullptroma.wallenc.infrastructure.ports.YandexAccountStore +import com.github.nullptroma.wallenc.infrastructure.storages.UnlockManager +import com.github.nullptroma.wallenc.infrastructure.vaults.yandex.YandexRegistration +import com.github.nullptroma.wallenc.infrastructure.vaults.yandex.YandexVault import com.github.nullptroma.wallenc.domain.interfaces.IStorage import com.github.nullptroma.wallenc.domain.interfaces.IUnlockManager import com.github.nullptroma.wallenc.domain.interfaces.IVault import com.github.nullptroma.wallenc.domain.interfaces.IVaultsManager -import com.github.nullptroma.wallenc.vaultapi.VaultRegistrar -import com.github.nullptroma.wallenc.vaultapi.VaultRegistration +import com.github.nullptroma.wallenc.vault.contract.VaultRegistrar +import com.github.nullptroma.wallenc.vault.contract.VaultRegistration import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -34,22 +31,18 @@ import java.util.UUID @OptIn(ExperimentalCoroutinesApi::class) class VaultsManager( private val ioDispatcher: CoroutineDispatcher, - context: Context, - keyRepo: StorageKeyMapRepository, - private val yandexAccountRepository: YandexAccountRepository, + localVault: IVault, + keyRepo: StorageKeyMapStore, + private val yandexAccountStore: YandexAccountStore, private val yandexUserInfoRepository: YandexUserInfoRepository, private val yandexDiskRepositoryFactory: YandexDiskRepositoryFactory, ) : IVaultsManager, VaultRegistrar { private val scope = CoroutineScope(SupervisorJob() + ioDispatcher) - private val localVault: IVault = LocalVault( - ioDispatcher = ioDispatcher, - context = context, - idStore = LocalVaultIdStore(context), - ) + private val localVault: IVault = localVault - private val yandexVaults: StateFlow> = yandexAccountRepository.observeAll() + private val yandexVaults: StateFlow> = yandexAccountStore.observeAll() .map { rows -> rows.map { row -> val vaultUuid = UUID.fromString(row.vaultUuid) @@ -91,7 +84,7 @@ class VaultsManager( } override suspend fun unregister(vaultUuid: UUID): Unit = withContext(ioDispatcher) { - yandexAccountRepository.deleteByVaultUuid(vaultUuid.toString()) + yandexAccountStore.deleteByVaultUuid(vaultUuid.toString()) } private suspend fun registerYandex(registration: YandexRegistration) { @@ -99,13 +92,13 @@ class VaultsManager( val info = yandexUserInfoRepository.userInfo(token) val email = info.defaultEmail?.takeIf { it.isNotBlank() } ?: "${info.login}@yandex.ru" - val existing = yandexAccountRepository.getByYandexUserId(info.id) + val existing = yandexAccountStore.getByYandexUserId(info.id) val vaultUuid = existing?.vaultUuid ?: UUID.randomUUID().toString() if (existing != null) { - yandexAccountRepository.updateCredentials(vaultUuid, email, token) + yandexAccountStore.updateCredentials(vaultUuid, email, token) } else { - yandexAccountRepository.insert( - DbYandexAccount( + yandexAccountStore.insert( + YandexAccount( vaultUuid = vaultUuid, yandexUserId = info.id, email = email, diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/yandex/YandexRegistration.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/yandex/YandexRegistration.kt similarity index 79% rename from data/src/main/java/com/github/nullptroma/wallenc/data/vaults/yandex/YandexRegistration.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/yandex/YandexRegistration.kt index 09e9c1f..bd62aa2 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/yandex/YandexRegistration.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/yandex/YandexRegistration.kt @@ -1,7 +1,7 @@ -package com.github.nullptroma.wallenc.data.vaults.yandex +package com.github.nullptroma.wallenc.infrastructure.vaults.yandex -import com.github.nullptroma.wallenc.vaultapi.CloudBrand -import com.github.nullptroma.wallenc.vaultapi.VaultRegistration +import com.github.nullptroma.wallenc.vault.contract.CloudBrand +import com.github.nullptroma.wallenc.vault.contract.VaultRegistration /** * Регистрация удалённого vault'а Яндекс.Диска по результату OAuth. diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/yandex/YandexVault.kt b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/yandex/YandexVault.kt similarity index 81% rename from data/src/main/java/com/github/nullptroma/wallenc/data/vaults/yandex/YandexVault.kt rename to domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/yandex/YandexVault.kt index 21b2a67..94c738d 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/yandex/YandexVault.kt +++ b/domain-storage/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/yandex/YandexVault.kt @@ -1,18 +1,17 @@ -package com.github.nullptroma.wallenc.data.vaults.yandex +package com.github.nullptroma.wallenc.infrastructure.vaults.yandex -import com.github.nullptroma.wallenc.data.network.yandexdisk.YandexDiskAuthException -import com.github.nullptroma.wallenc.data.network.yandexdisk.repository.YandexDiskRepository -import com.github.nullptroma.wallenc.data.storages.yandex.YandexStorage +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.YandexDiskAuthException +import com.github.nullptroma.wallenc.infrastructure.network.yandexdisk.repository.YandexDiskRepository +import com.github.nullptroma.wallenc.infrastructure.storages.yandex.YandexStorage import com.github.nullptroma.wallenc.domain.datatypes.StorageEncryptionInfo import com.github.nullptroma.wallenc.domain.interfaces.IStorage -import com.github.nullptroma.wallenc.vaultapi.CloudBrand -import com.github.nullptroma.wallenc.vaultapi.DescribedVault -import com.github.nullptroma.wallenc.vaultapi.VaultDescriptor +import com.github.nullptroma.wallenc.vault.contract.CloudBrand +import com.github.nullptroma.wallenc.vault.contract.DescribedVault +import com.github.nullptroma.wallenc.vault.contract.VaultDescriptor import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -import android.util.Log import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.util.UUID @@ -65,15 +64,12 @@ class YandexVault( _availableSpace.value = (total - used).coerceAtLeast(0L) _vaultReachable.value = true _storages.value = loadStoragesList() - Log.d(TAG, "refresh ok uuid=$uuid storages=${_storages.value.size}") } catch (e: YandexDiskAuthException) { _vaultReachable.value = false _storages.value = emptyList() - Log.w(TAG, "refresh auth failed uuid=$uuid: ${e.message}") } catch (e: Exception) { _vaultReachable.value = false _storages.value = emptyList() - Log.w(TAG, "refresh failed uuid=$uuid", e) } } @@ -100,9 +96,7 @@ class YandexVault( try { storage.init() out.add(storage) - } catch (e: Exception) { - Log.w(TAG, "skip broken storage uuid=$storageUuid: ${e.message}") - } + } catch (_: Exception) { } } if (items.size < APP_LIST_LIMIT) break offset += items.size @@ -112,7 +106,6 @@ class YandexVault( override suspend fun createStorage(): IStorage = withContext(ioDispatcher) { val id = UUID.randomUUID() - Log.d(TAG, "createStorage start vault=$uuid storage=$id") repo.createFolder("app:/$id") val storage = YandexStorage( uuid = id, @@ -126,7 +119,6 @@ class YandexVault( ) storage.init() _storages.value = _storages.value + storage - Log.d(TAG, "createStorage done storage=$id") storage } @@ -138,13 +130,11 @@ class YandexVault( override suspend fun remove(storage: IStorage) = withContext(ioDispatcher) { if (storage !is YandexStorage) return@withContext - Log.d(TAG, "remove storage=${storage.uuid}") repo.delete("app:/${storage.uuid}", permanently = true) _storages.value = _storages.value.filter { it.uuid != storage.uuid } } private companion object { - private const val TAG = "YandexVault" private const val APP_LIST_LIMIT = 200 } } diff --git a/presentation/src/test/java/com/github/nullptroma/wallenc/presentation/ExampleUnitTest.kt b/domain-storage/src/test/java/com/github/nullptroma/wallenc/infrastructure/ExampleUnitTest.kt similarity index 85% rename from presentation/src/test/java/com/github/nullptroma/wallenc/presentation/ExampleUnitTest.kt rename to domain-storage/src/test/java/com/github/nullptroma/wallenc/infrastructure/ExampleUnitTest.kt index 2673a60..4d74c3f 100644 --- a/presentation/src/test/java/com/github/nullptroma/wallenc/presentation/ExampleUnitTest.kt +++ b/domain-storage/src/test/java/com/github/nullptroma/wallenc/infrastructure/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation +package com.github.nullptroma.wallenc.infrastructure import org.junit.Test diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts index 69a0129..7cb1c80 100644 --- a/domain/build.gradle.kts +++ b/domain/build.gradle.kts @@ -9,6 +9,10 @@ java { } } +kotlin { + jvmToolchain(17) +} + dependencies { implementation(libs.kotlinx.coroutines.core) testImplementation(libs.junit) diff --git a/data/build.gradle.kts b/infrastructure-android/build.gradle.kts similarity index 62% rename from data/build.gradle.kts rename to infrastructure-android/build.gradle.kts index 8576134..8f280c4 100644 --- a/data/build.gradle.kts +++ b/infrastructure-android/build.gradle.kts @@ -4,13 +4,11 @@ plugins { } android { - namespace = "com.github.nullptroma.wallenc.data" + namespace = "com.github.nullptroma.wallenc.infrastructure.android" compileSdk = 37 defaultConfig { minSdk = 26 - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") } @@ -23,38 +21,27 @@ android { ) } } + compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } -} -kotlin { - jvmToolchain(17) } dependencies { - // jackson + implementation(project(":domain")) + implementation(project(":domain-storage")) + implementation(project(":vault-contracts")) + implementation(libs.jackson.module.kotlin) implementation(libs.jackson.datatype.jsr310) + implementation(libs.kotlinx.coroutines.core) - // Room implementation(libs.room.ktx) implementation(libs.room.runtime) ksp(libs.room.compiler) - // Retrofit - implementation(libs.retrofit) - implementation(libs.retrofit.converter.scalars) - implementation(libs.retrofit.converter.jackson) - - implementation("com.squareup.okhttp3:okhttp:4.12.0") - implementation(libs.androidx.core.ktx) testImplementation(libs.junit) - androidTestImplementation(libs.androidx.junit) - androidTestImplementation(libs.androidx.espresso.core) - - implementation(project(":domain")) - implementation(project(":vault-api")) -} \ No newline at end of file +} diff --git a/infrastructure-android/src/main/AndroidManifest.xml b/infrastructure-android/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8072ee0 --- /dev/null +++ b/infrastructure-android/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/RoomFactory.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/RoomFactory.kt similarity index 71% rename from data/src/main/java/com/github/nullptroma/wallenc/data/db/RoomFactory.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/RoomFactory.kt index 2da78bd..ac53ed7 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/RoomFactory.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/RoomFactory.kt @@ -1,8 +1,8 @@ -package com.github.nullptroma.wallenc.data.db +package com.github.nullptroma.wallenc.infrastructure.db import android.content.Context import androidx.room.Room -import com.github.nullptroma.wallenc.data.db.app.AppDb +import com.github.nullptroma.wallenc.infrastructure.db.app.AppDb class RoomFactory(private val context: Context) { fun buildAppDb(): AppDb { @@ -11,4 +11,4 @@ class RoomFactory(private val context: Context) { ).fallbackToDestructiveMigration().build() return room } -} \ No newline at end of file +} diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/AppDb.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/AppDb.kt similarity index 50% rename from data/src/main/java/com/github/nullptroma/wallenc/data/db/app/AppDb.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/AppDb.kt index d160280..8aece18 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/AppDb.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/AppDb.kt @@ -1,13 +1,13 @@ -package com.github.nullptroma.wallenc.data.db.app +package com.github.nullptroma.wallenc.infrastructure.db.app import androidx.room.Database import androidx.room.RoomDatabase -import com.github.nullptroma.wallenc.data.db.app.dao.StorageKeyMapDao -import com.github.nullptroma.wallenc.data.db.app.dao.StorageMetaInfoDao -import com.github.nullptroma.wallenc.data.db.app.dao.YandexAccountDao -import com.github.nullptroma.wallenc.data.db.app.model.DbStorageKeyMap -import com.github.nullptroma.wallenc.data.db.app.model.DbStorageMetaInfo -import com.github.nullptroma.wallenc.data.db.app.model.DbYandexAccount +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.StorageKeyMapDao +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.StorageMetaInfoDao +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.YandexAccountDao +import com.github.nullptroma.wallenc.infrastructure.db.app.model.DbStorageKeyMap +import com.github.nullptroma.wallenc.infrastructure.db.app.model.DbStorageMetaInfo +import com.github.nullptroma.wallenc.infrastructure.db.app.model.DbYandexAccount interface IAppDb { val storageKeyMapDao: StorageKeyMapDao @@ -18,10 +18,10 @@ interface IAppDb { @Database( entities = [DbStorageKeyMap::class, DbStorageMetaInfo::class, DbYandexAccount::class], version = 4, - exportSchema = false, + exportSchema = false ) abstract class AppDb : IAppDb, RoomDatabase() { abstract override val storageKeyMapDao: StorageKeyMapDao abstract override val storageMetaInfoDao: StorageMetaInfoDao abstract override val yandexAccountDao: YandexAccountDao -} \ No newline at end of file +} diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/dao/StorageKeyMapDao.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/dao/StorageKeyMapDao.kt similarity index 75% rename from data/src/main/java/com/github/nullptroma/wallenc/data/db/app/dao/StorageKeyMapDao.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/dao/StorageKeyMapDao.kt index 22d01d1..76a8637 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/dao/StorageKeyMapDao.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/dao/StorageKeyMapDao.kt @@ -1,11 +1,11 @@ -package com.github.nullptroma.wallenc.data.db.app.dao +package com.github.nullptroma.wallenc.infrastructure.db.app.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import com.github.nullptroma.wallenc.data.db.app.model.DbStorageKeyMap +import com.github.nullptroma.wallenc.infrastructure.db.app.model.DbStorageKeyMap @Dao interface StorageKeyMapDao { @@ -17,4 +17,4 @@ interface StorageKeyMapDao { @Delete suspend fun delete(vararg keymaps: DbStorageKeyMap) -} \ No newline at end of file +} diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/dao/StorageMetaInfoDao.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/dao/StorageMetaInfoDao.kt similarity index 86% rename from data/src/main/java/com/github/nullptroma/wallenc/data/db/app/dao/StorageMetaInfoDao.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/dao/StorageMetaInfoDao.kt index 1d166ad..085731a 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/dao/StorageMetaInfoDao.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/dao/StorageMetaInfoDao.kt @@ -1,11 +1,11 @@ -package com.github.nullptroma.wallenc.data.db.app.dao +package com.github.nullptroma.wallenc.infrastructure.db.app.dao import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query -import com.github.nullptroma.wallenc.data.db.app.model.DbStorageMetaInfo +import com.github.nullptroma.wallenc.infrastructure.db.app.model.DbStorageMetaInfo import kotlinx.coroutines.flow.Flow import java.util.UUID @@ -31,4 +31,4 @@ interface StorageMetaInfoDao { @Query("DELETE FROM storage_meta_infos WHERE uuid == :uuid") suspend fun delete(uuid: UUID) -} \ No newline at end of file +} diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/dao/YandexAccountDao.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/dao/YandexAccountDao.kt similarity index 86% rename from data/src/main/java/com/github/nullptroma/wallenc/data/db/app/dao/YandexAccountDao.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/dao/YandexAccountDao.kt index 4c6c3e7..9c18a17 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/dao/YandexAccountDao.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/dao/YandexAccountDao.kt @@ -1,9 +1,9 @@ -package com.github.nullptroma.wallenc.data.db.app.dao +package com.github.nullptroma.wallenc.infrastructure.db.app.dao import androidx.room.Dao import androidx.room.Insert import androidx.room.Query -import com.github.nullptroma.wallenc.data.db.app.model.DbYandexAccount +import com.github.nullptroma.wallenc.infrastructure.db.app.model.DbYandexAccount import kotlinx.coroutines.flow.Flow @Dao diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageKeyMap.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/model/DbStorageKeyMap.kt similarity index 89% rename from data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageKeyMap.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/model/DbStorageKeyMap.kt index 95ee98a..e36b91c 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageKeyMap.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/model/DbStorageKeyMap.kt @@ -1,8 +1,8 @@ -package com.github.nullptroma.wallenc.data.db.app.model +package com.github.nullptroma.wallenc.infrastructure.db.app.model import androidx.room.ColumnInfo import androidx.room.Entity -import com.github.nullptroma.wallenc.data.model.StorageKeyMap +import com.github.nullptroma.wallenc.infrastructure.model.StorageKeyMap import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey import java.util.UUID diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageMetaInfo.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/model/DbStorageMetaInfo.kt similarity index 81% rename from data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageMetaInfo.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/model/DbStorageMetaInfo.kt index ce34e06..e553ec8 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbStorageMetaInfo.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/model/DbStorageMetaInfo.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.db.app.model +package com.github.nullptroma.wallenc.infrastructure.db.app.model import androidx.room.ColumnInfo import androidx.room.Entity @@ -9,4 +9,4 @@ import java.util.UUID data class DbStorageMetaInfo( @PrimaryKey @ColumnInfo(name = "uuid") val uuid: UUID, @ColumnInfo(name = "meta_info") val metaInfoJson: String -) \ No newline at end of file +) diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbYandexAccount.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/model/DbYandexAccount.kt similarity index 84% rename from data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbYandexAccount.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/model/DbYandexAccount.kt index 4ea484d..c831503 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/model/DbYandexAccount.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/model/DbYandexAccount.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.db.app.model +package com.github.nullptroma.wallenc.infrastructure.db.app.model import androidx.room.Entity import androidx.room.Index diff --git a/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/repository/StorageKeyMapRepository.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/repository/StorageKeyMapRepository.kt new file mode 100644 index 0000000..fc9a56b --- /dev/null +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/repository/StorageKeyMapRepository.kt @@ -0,0 +1,29 @@ +package com.github.nullptroma.wallenc.infrastructure.db.app.repository + +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.StorageKeyMapDao +import com.github.nullptroma.wallenc.infrastructure.db.app.model.DbStorageKeyMap +import com.github.nullptroma.wallenc.infrastructure.model.StorageKeyMap +import com.github.nullptroma.wallenc.infrastructure.ports.StorageKeyMapStore +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.withContext + +class StorageKeyMapRepository( + private val dao: StorageKeyMapDao, + private val ioDispatcher: CoroutineDispatcher +) : StorageKeyMapStore { + override suspend fun getAll() = withContext(ioDispatcher) { dao.getAll().map { it.toModel() } } + override suspend fun add(value: StorageKeyMap) = withContext(ioDispatcher) { + val dbModel = DbStorageKeyMap.fromModel(value) + dao.add(dbModel) + } + + suspend fun add(vararg keymaps: StorageKeyMap) = withContext(ioDispatcher) { + val dbModels = keymaps.map { DbStorageKeyMap.fromModel(it) } + dao.add(*dbModels.toTypedArray()) + } + + override suspend fun delete(vararg keymaps: StorageKeyMap) = withContext(ioDispatcher) { + val dbModels = keymaps.map { DbStorageKeyMap.fromModel(it) } + dao.delete(*dbModels.toTypedArray()) + } +} diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/repository/StorageMetaInfoRepository.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/repository/StorageMetaInfoRepository.kt similarity index 86% rename from data/src/main/java/com/github/nullptroma/wallenc/data/db/app/repository/StorageMetaInfoRepository.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/repository/StorageMetaInfoRepository.kt index 034177c..8c001c3 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/db/app/repository/StorageMetaInfoRepository.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/repository/StorageMetaInfoRepository.kt @@ -1,9 +1,9 @@ -package com.github.nullptroma.wallenc.data.db.app.repository +package com.github.nullptroma.wallenc.infrastructure.db.app.repository import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper -import com.github.nullptroma.wallenc.data.db.app.dao.StorageMetaInfoDao -import com.github.nullptroma.wallenc.data.db.app.model.DbStorageMetaInfo -import com.github.nullptroma.wallenc.data.utils.IProvider +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.StorageMetaInfoDao +import com.github.nullptroma.wallenc.infrastructure.db.app.model.DbStorageMetaInfo +import com.github.nullptroma.wallenc.infrastructure.utils.IProvider import com.github.nullptroma.wallenc.domain.common.impl.CommonStorageMetaInfo import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.Flow @@ -56,4 +56,4 @@ class StorageMetaInfoRepository( companion object { private val jackson = jacksonObjectMapper().apply { findAndRegisterModules() } } -} \ No newline at end of file +} diff --git a/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/repository/YandexAccountRepository.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/repository/YandexAccountRepository.kt new file mode 100644 index 0000000..61a927c --- /dev/null +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/db/app/repository/YandexAccountRepository.kt @@ -0,0 +1,56 @@ +package com.github.nullptroma.wallenc.infrastructure.db.app.repository + +import com.github.nullptroma.wallenc.infrastructure.db.app.dao.YandexAccountDao +import com.github.nullptroma.wallenc.infrastructure.db.app.model.DbYandexAccount +import com.github.nullptroma.wallenc.infrastructure.model.YandexAccount +import com.github.nullptroma.wallenc.infrastructure.ports.YandexAccountStore +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.map +import kotlinx.coroutines.withContext + +class YandexAccountRepository( + private val dao: YandexAccountDao, + private val ioDispatcher: CoroutineDispatcher +) : YandexAccountStore { + override fun observeAll(): Flow> = dao.observeAll().map { rows -> + rows.map { it.toModel() } + } + + override suspend fun getByYandexUserId(id: String): YandexAccount? = withContext(ioDispatcher) { + dao.getByYandexUserId(id)?.toModel() + } + + override suspend fun getByVaultUuid(vaultUuid: String): YandexAccount? = withContext(ioDispatcher) { + dao.getByVaultUuid(vaultUuid)?.toModel() + } + + override suspend fun insert(account: YandexAccount) = withContext(ioDispatcher) { + dao.insert(fromModel(account)) + } + + override suspend fun updateCredentials(vaultUuid: String, email: String, token: String) = + withContext(ioDispatcher) { + dao.updateCredentials(vaultUuid, email, token) + } + + override suspend fun deleteByVaultUuid(vaultUuid: String) = withContext(ioDispatcher) { + dao.deleteByVaultUuid(vaultUuid) + } + + private fun DbYandexAccount.toModel(): YandexAccount = + YandexAccount( + vaultUuid = vaultUuid, + yandexUserId = yandexUserId, + email = email, + oauthToken = oauthToken, + ) + + private fun fromModel(model: YandexAccount): DbYandexAccount = + DbYandexAccount( + vaultUuid = model.vaultUuid, + yandexUserId = model.yandexUserId, + email = model.email, + oauthToken = model.oauthToken, + ) +} diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVault.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/local/LocalVault.kt similarity index 92% rename from data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVault.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/local/LocalVault.kt index 59cf5bb..93ae8a3 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVault.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/local/LocalVault.kt @@ -1,11 +1,11 @@ -package com.github.nullptroma.wallenc.data.vaults.local +package com.github.nullptroma.wallenc.infrastructure.vaults.local import android.content.Context -import com.github.nullptroma.wallenc.data.storages.local.LocalStorage +import com.github.nullptroma.wallenc.infrastructure.storages.local.LocalStorage import com.github.nullptroma.wallenc.domain.datatypes.StorageEncryptionInfo import com.github.nullptroma.wallenc.domain.interfaces.IStorage -import com.github.nullptroma.wallenc.vaultapi.DescribedVault -import com.github.nullptroma.wallenc.vaultapi.VaultDescriptor +import com.github.nullptroma.wallenc.vault.contract.DescribedVault +import com.github.nullptroma.wallenc.vault.contract.VaultDescriptor import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVaultIdStore.kt b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/local/LocalVaultIdStore.kt similarity index 95% rename from data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVaultIdStore.kt rename to infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/local/LocalVaultIdStore.kt index 0ee1d64..0e13cf2 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVaultIdStore.kt +++ b/infrastructure-android/src/main/java/com/github/nullptroma/wallenc/infrastructure/vaults/local/LocalVaultIdStore.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.vaults.local +package com.github.nullptroma.wallenc.infrastructure.vaults.local import android.content.Context import java.util.UUID diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreenState.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreenState.kt deleted file mode 100644 index b51acdb..0000000 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreenState.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.github.nullptroma.wallenc.presentation.screens.main - -class MainScreenState \ No newline at end of file diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsRoute.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsRoute.kt deleted file mode 100644 index 1ffea44..0000000 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsRoute.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.remotes - -import com.github.nullptroma.wallenc.presentation.screens.main.MainRoute -import kotlinx.parcelize.Parcelize -import kotlinx.serialization.Serializable - -@Serializable -@Parcelize -class RemoteVaultsRoute : MainRoute() diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/tasks/TaskPipelineRoute.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/tasks/TaskPipelineRoute.kt deleted file mode 100644 index 66545b9..0000000 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/tasks/TaskPipelineRoute.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.tasks - -import com.github.nullptroma.wallenc.presentation.screens.ScreenRoute -import kotlinx.parcelize.Parcelize -import kotlinx.serialization.Serializable - -@Serializable -@Parcelize -class TaskPipelineRoute : ScreenRoute() diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/LocalVaultRoute.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/LocalVaultRoute.kt deleted file mode 100644 index 3c4cd94..0000000 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/LocalVaultRoute.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.vault - -import com.github.nullptroma.wallenc.presentation.screens.main.MainRoute -import kotlinx.parcelize.Parcelize -import kotlinx.serialization.Serializable - -@Serializable -@Parcelize -class LocalVaultRoute : MainRoute() diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsScreenState.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsScreenState.kt deleted file mode 100644 index 8c4b244..0000000 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsScreenState.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.github.nullptroma.wallenc.presentation.screens.settings - -class SettingsScreenState \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 5fe403e..1015b62 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -24,7 +24,10 @@ dependencyResolutionManagement { rootProject.name = "Wallenc" include(":app") -include(":data") include(":domain") -include(":presentation") -include(":vault-api") +include(":usecases") +include(":ui") +include(":domain-storage") +include(":infrastructure-android") +include(":vault-contracts") +include(":task-runtime") diff --git a/task-runtime/build.gradle.kts b/task-runtime/build.gradle.kts new file mode 100644 index 0000000..07c4e1f --- /dev/null +++ b/task-runtime/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + id("java-library") + alias(libs.plugins.jetbrains.kotlin.jvm) +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +kotlin { + jvmToolchain(17) +} + +dependencies { + implementation(project(":domain")) + implementation(libs.kotlinx.coroutines.core) + testImplementation(libs.junit) +} diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/tasks/TaskOrchestrator.kt b/task-runtime/src/main/java/com/github/nullptroma/wallenc/task/runtime/TaskOrchestrator.kt similarity index 99% rename from data/src/main/java/com/github/nullptroma/wallenc/data/tasks/TaskOrchestrator.kt rename to task-runtime/src/main/java/com/github/nullptroma/wallenc/task/runtime/TaskOrchestrator.kt index 159febf..83c279c 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/tasks/TaskOrchestrator.kt +++ b/task-runtime/src/main/java/com/github/nullptroma/wallenc/task/runtime/TaskOrchestrator.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data.tasks +package com.github.nullptroma.wallenc.task.runtime import com.github.nullptroma.wallenc.domain.tasks.ITaskOrchestrator import com.github.nullptroma.wallenc.domain.tasks.PipelineState @@ -12,11 +12,11 @@ import com.github.nullptroma.wallenc.domain.tasks.TaskLogLevel import com.github.nullptroma.wallenc.domain.tasks.TaskLogLine import com.github.nullptroma.wallenc.domain.tasks.TaskProgress import com.github.nullptroma.wallenc.domain.tasks.TaskRunState +import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.SupervisorJob -import kotlinx.coroutines.CancellationException import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow diff --git a/presentation/.gitignore b/ui/.gitignore similarity index 100% rename from presentation/.gitignore rename to ui/.gitignore diff --git a/presentation/build.gradle.kts b/ui/build.gradle.kts similarity index 94% rename from presentation/build.gradle.kts rename to ui/build.gradle.kts index cfabcc0..a93605c 100644 --- a/presentation/build.gradle.kts +++ b/ui/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } android { - namespace = "com.github.nullptroma.wallenc.presentation" + namespace = "com.github.nullptroma.wallenc.ui" compileSdk = 37 defaultConfig { @@ -79,5 +79,6 @@ dependencies { androidTestImplementation(libs.androidx.ui.test.junit4) implementation(project(":domain")) - implementation(project(":vault-api")) + implementation(project(":usecases")) + implementation(project(":vault-contracts")) } \ No newline at end of file diff --git a/presentation/consumer-rules.pro b/ui/consumer-rules.pro similarity index 100% rename from presentation/consumer-rules.pro rename to ui/consumer-rules.pro diff --git a/presentation/proguard-rules.pro b/ui/proguard-rules.pro similarity index 100% rename from presentation/proguard-rules.pro rename to ui/proguard-rules.pro diff --git a/data/src/androidTest/java/com/github/nullptroma/wallenc/data/ExampleInstrumentedTest.kt b/ui/src/androidTest/java/com/github/nullptroma/wallenc/ui/ExampleInstrumentedTest.kt similarity index 81% rename from data/src/androidTest/java/com/github/nullptroma/wallenc/data/ExampleInstrumentedTest.kt rename to ui/src/androidTest/java/com/github/nullptroma/wallenc/ui/ExampleInstrumentedTest.kt index c4dfb88..5f1872e 100644 --- a/data/src/androidTest/java/com/github/nullptroma/wallenc/data/ExampleInstrumentedTest.kt +++ b/ui/src/androidTest/java/com/github/nullptroma/wallenc/ui/ExampleInstrumentedTest.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data +package com.github.nullptroma.wallenc.ui import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -19,6 +19,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.github.nullptroma.wallenc.data.test", appContext.packageName) + assertEquals("com.github.nullptroma.wallenc.ui.test", appContext.packageName) } } \ No newline at end of file diff --git a/presentation/src/main/AndroidManifest.xml b/ui/src/main/AndroidManifest.xml similarity index 100% rename from presentation/src/main/AndroidManifest.xml rename to ui/src/main/AndroidManifest.xml diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/ViewModelBase.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/ViewModelBase.kt similarity index 88% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/ViewModelBase.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/ViewModelBase.kt index af2d491..91a16b9 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/ViewModelBase.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/ViewModelBase.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation +package com.github.nullptroma.wallenc.ui import androidx.lifecycle.ViewModel diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencUi.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/WallencUi.kt similarity index 84% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencUi.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/WallencUi.kt index 8f6b781..6887025 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencUi.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/WallencUi.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation +package com.github.nullptroma.wallenc.ui import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn @@ -25,17 +25,17 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState -import com.github.nullptroma.wallenc.presentation.navigation.NavBarItemData -import com.github.nullptroma.wallenc.presentation.navigation.rememberNavigationState -import com.github.nullptroma.wallenc.presentation.screens.main.MainRoute -import com.github.nullptroma.wallenc.presentation.screens.main.MainScreen -import com.github.nullptroma.wallenc.presentation.screens.main.MainViewModel -import com.github.nullptroma.wallenc.presentation.screens.main.screens.tasks.TaskPipelineRoute -import com.github.nullptroma.wallenc.presentation.screens.main.screens.tasks.TaskPipelineScreen -import com.github.nullptroma.wallenc.presentation.screens.settings.SettingsRoute -import com.github.nullptroma.wallenc.presentation.screens.settings.SettingsScreen -import com.github.nullptroma.wallenc.presentation.screens.settings.SettingsViewModel -import com.github.nullptroma.wallenc.presentation.theme.WallencTheme +import com.github.nullptroma.wallenc.ui.navigation.NavBarItemData +import com.github.nullptroma.wallenc.ui.navigation.rememberNavigationState +import com.github.nullptroma.wallenc.ui.screens.main.MainRoute +import com.github.nullptroma.wallenc.ui.screens.main.MainScreen +import com.github.nullptroma.wallenc.ui.screens.main.MainViewModel +import com.github.nullptroma.wallenc.ui.screens.main.screens.tasks.TaskPipelineRoute +import com.github.nullptroma.wallenc.ui.screens.main.screens.tasks.TaskPipelineScreen +import com.github.nullptroma.wallenc.ui.screens.settings.SettingsRoute +import com.github.nullptroma.wallenc.ui.screens.settings.SettingsScreen +import com.github.nullptroma.wallenc.ui.screens.settings.SettingsViewModel +import com.github.nullptroma.wallenc.ui.theme.WallencTheme @Composable diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencViewModel.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/WallencViewModel.kt similarity index 73% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencViewModel.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/WallencViewModel.kt index 6837d21..638e95f 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/WallencViewModel.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/WallencViewModel.kt @@ -1,13 +1,13 @@ -package com.github.nullptroma.wallenc.presentation +package com.github.nullptroma.wallenc.ui import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewmodel.compose.SavedStateHandleSaveableApi import androidx.lifecycle.viewmodel.compose.saveable -import com.github.nullptroma.wallenc.presentation.screens.ScreenRoute -import com.github.nullptroma.wallenc.presentation.screens.main.MainRoute -import com.github.nullptroma.wallenc.presentation.screens.main.screens.tasks.TaskPipelineRoute -import com.github.nullptroma.wallenc.presentation.screens.settings.SettingsRoute +import com.github.nullptroma.wallenc.ui.screens.ScreenRoute +import com.github.nullptroma.wallenc.ui.screens.main.MainRoute +import com.github.nullptroma.wallenc.ui.screens.main.screens.tasks.TaskPipelineRoute +import com.github.nullptroma.wallenc.ui.screens.settings.SettingsRoute import dagger.hilt.android.lifecycle.HiltViewModel import kotlin.collections.set diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/Dialogs.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/elements/Dialogs.kt similarity index 99% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/Dialogs.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/elements/Dialogs.kt index 17d2d5a..09df621 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/Dialogs.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/elements/Dialogs.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.elements +package com.github.nullptroma.wallenc.ui.elements import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/StorageTree.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/elements/StorageTree.kt similarity index 98% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/StorageTree.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/elements/StorageTree.kt index d8a7faa..4cdad20 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/StorageTree.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/elements/StorageTree.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.elements +package com.github.nullptroma.wallenc.ui.elements import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -47,8 +47,8 @@ import androidx.compose.ui.zIndex import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.github.nullptroma.wallenc.domain.datatypes.Tree import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo -import com.github.nullptroma.wallenc.presentation.R -import com.github.nullptroma.wallenc.presentation.utils.debouncedLambda +import com.github.nullptroma.wallenc.ui.R +import com.github.nullptroma.wallenc.ui.utils.debouncedLambda @Composable fun StorageTree( diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/indication/ScaleIndication.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/elements/indication/ScaleIndication.kt similarity index 96% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/indication/ScaleIndication.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/elements/indication/ScaleIndication.kt index 131ddfc..ed7d1fe 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/elements/indication/ScaleIndication.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/elements/indication/ScaleIndication.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.elements.indication +package com.github.nullptroma.wallenc.ui.elements.indication import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.spring diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/Modifier.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/extensions/Modifier.kt similarity index 96% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/Modifier.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/extensions/Modifier.kt index dd61d42..0e21ff9 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/Modifier.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/extensions/Modifier.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.extensions +package com.github.nullptroma.wallenc.ui.extensions import androidx.compose.ui.Modifier import androidx.compose.ui.input.pointer.PointerEventPass diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/StorageInfo.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/extensions/StorageInfo.kt similarity index 73% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/StorageInfo.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/extensions/StorageInfo.kt index 9027b00..b0ec147 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/extensions/StorageInfo.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/extensions/StorageInfo.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.extensions +package com.github.nullptroma.wallenc.ui.extensions import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/navigation/NavBarItemData.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/navigation/NavBarItemData.kt similarity index 73% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/navigation/NavBarItemData.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/navigation/NavBarItemData.kt index ce6c631..6a76a63 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/navigation/NavBarItemData.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/navigation/NavBarItemData.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.navigation +package com.github.nullptroma.wallenc.ui.navigation import androidx.compose.ui.graphics.vector.ImageVector diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/navigation/NavigationState.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/navigation/NavigationState.kt similarity index 87% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/navigation/NavigationState.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/navigation/NavigationState.kt index 43585c2..73fb084 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/navigation/NavigationState.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/navigation/NavigationState.kt @@ -1,11 +1,11 @@ -package com.github.nullptroma.wallenc.presentation.navigation +package com.github.nullptroma.wallenc.ui.navigation import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController -import com.github.nullptroma.wallenc.presentation.screens.ScreenRoute +import com.github.nullptroma.wallenc.ui.screens.ScreenRoute class NavigationState( diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/ScreenRoute.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/ScreenRoute.kt similarity index 68% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/ScreenRoute.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/ScreenRoute.kt index 3091276..bc01425 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/ScreenRoute.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/ScreenRoute.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens +package com.github.nullptroma.wallenc.ui.screens import android.os.Parcelable import kotlinx.serialization.Serializable diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainRoute.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainRoute.kt similarity index 50% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainRoute.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainRoute.kt index 5d7bfd1..87bb69d 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainRoute.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainRoute.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.presentation.screens.main +package com.github.nullptroma.wallenc.ui.screens.main -import com.github.nullptroma.wallenc.presentation.screens.ScreenRoute +import com.github.nullptroma.wallenc.ui.screens.ScreenRoute import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreen.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreen.kt similarity index 79% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreen.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreen.kt index b0e2b15..55fd18c 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainScreen.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreen.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.main +package com.github.nullptroma.wallenc.ui.screens.main import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn @@ -23,21 +23,21 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.toRoute -import com.github.nullptroma.wallenc.presentation.R -import com.github.nullptroma.wallenc.presentation.navigation.NavBarItemData -import com.github.nullptroma.wallenc.presentation.navigation.NavigationState -import com.github.nullptroma.wallenc.presentation.navigation.rememberNavigationState -import com.github.nullptroma.wallenc.presentation.screens.main.screens.remotes.RemoteVaultsRoute -import com.github.nullptroma.wallenc.presentation.screens.main.screens.remotes.RemoteVaultsScreen -import com.github.nullptroma.wallenc.presentation.screens.main.screens.remotes.RemoteVaultsViewModel -import com.github.nullptroma.wallenc.presentation.screens.main.screens.vault.LocalVaultRoute -import com.github.nullptroma.wallenc.presentation.screens.main.screens.vault.LocalVaultScreen -import com.github.nullptroma.wallenc.presentation.screens.main.screens.vault.LocalVaultViewModel -import com.github.nullptroma.wallenc.presentation.screens.main.screens.vault.RemoteVaultViewModel -import com.github.nullptroma.wallenc.presentation.screens.main.screens.vault.VaultBrowserRoute -import com.github.nullptroma.wallenc.presentation.screens.main.screens.vault.VaultBrowserScreen -import com.github.nullptroma.wallenc.presentation.screens.shared.TextEditRoute -import com.github.nullptroma.wallenc.presentation.screens.shared.TextEditScreen +import com.github.nullptroma.wallenc.ui.R +import com.github.nullptroma.wallenc.ui.navigation.NavBarItemData +import com.github.nullptroma.wallenc.ui.navigation.NavigationState +import com.github.nullptroma.wallenc.ui.navigation.rememberNavigationState +import com.github.nullptroma.wallenc.ui.screens.main.screens.remotes.RemoteVaultsRoute +import com.github.nullptroma.wallenc.ui.screens.main.screens.remotes.RemoteVaultsScreen +import com.github.nullptroma.wallenc.ui.screens.main.screens.remotes.RemoteVaultsViewModel +import com.github.nullptroma.wallenc.ui.screens.main.screens.vault.LocalVaultRoute +import com.github.nullptroma.wallenc.ui.screens.main.screens.vault.LocalVaultScreen +import com.github.nullptroma.wallenc.ui.screens.main.screens.vault.LocalVaultViewModel +import com.github.nullptroma.wallenc.ui.screens.main.screens.vault.RemoteVaultViewModel +import com.github.nullptroma.wallenc.ui.screens.main.screens.vault.VaultBrowserRoute +import com.github.nullptroma.wallenc.ui.screens.main.screens.vault.VaultBrowserScreen +import com.github.nullptroma.wallenc.ui.screens.shared.TextEditRoute +import com.github.nullptroma.wallenc.ui.screens.shared.TextEditScreen @OptIn(ExperimentalMaterial3Api::class) diff --git a/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreenState.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreenState.kt new file mode 100644 index 0000000..46a2298 --- /dev/null +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainScreenState.kt @@ -0,0 +1,3 @@ +package com.github.nullptroma.wallenc.ui.screens.main + +class MainScreenState \ No newline at end of file diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainViewModel.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainViewModel.kt similarity index 71% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainViewModel.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainViewModel.kt index d51f26e..e586222 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/MainViewModel.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/MainViewModel.kt @@ -1,13 +1,13 @@ -package com.github.nullptroma.wallenc.presentation.screens.main +package com.github.nullptroma.wallenc.ui.screens.main import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.viewmodel.compose.SavedStateHandleSaveableApi import androidx.lifecycle.viewmodel.compose.saveable -import com.github.nullptroma.wallenc.presentation.screens.ScreenRoute -import com.github.nullptroma.wallenc.presentation.screens.main.screens.remotes.RemoteVaultsRoute -import com.github.nullptroma.wallenc.presentation.screens.main.screens.vault.LocalVaultRoute -import com.github.nullptroma.wallenc.presentation.ViewModelBase +import com.github.nullptroma.wallenc.ui.screens.ScreenRoute +import com.github.nullptroma.wallenc.ui.screens.main.screens.remotes.RemoteVaultsRoute +import com.github.nullptroma.wallenc.ui.screens.main.screens.vault.LocalVaultRoute +import com.github.nullptroma.wallenc.ui.ViewModelBase import dagger.hilt.android.lifecycle.HiltViewModel @HiltViewModel diff --git a/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsRoute.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsRoute.kt new file mode 100644 index 0000000..10d3ff2 --- /dev/null +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsRoute.kt @@ -0,0 +1,9 @@ +package com.github.nullptroma.wallenc.ui.screens.main.screens.remotes + +import com.github.nullptroma.wallenc.ui.screens.main.MainRoute +import kotlinx.parcelize.Parcelize +import kotlinx.serialization.Serializable + +@Serializable +@Parcelize +class RemoteVaultsRoute : MainRoute() diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreen.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsScreen.kt similarity index 97% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreen.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsScreen.kt index 8421380..a679717 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreen.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsScreen.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.remotes +package com.github.nullptroma.wallenc.ui.screens.main.screens.remotes import android.widget.Toast import androidx.compose.foundation.clickable @@ -44,9 +44,9 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.github.nullptroma.wallenc.presentation.R -import com.github.nullptroma.wallenc.vaultapi.CloudBrand -import com.github.nullptroma.wallenc.vaultapi.VaultLinkOutcome +import com.github.nullptroma.wallenc.ui.R +import com.github.nullptroma.wallenc.vault.contract.CloudBrand +import com.github.nullptroma.wallenc.vault.contract.VaultLinkOutcome @Composable fun RemoteVaultsScreen( diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreenState.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsScreenState.kt similarity index 72% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreenState.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsScreenState.kt index 9cecb41..9cd436e 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsScreenState.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsScreenState.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.remotes +package com.github.nullptroma.wallenc.ui.screens.main.screens.remotes -import com.github.nullptroma.wallenc.vaultapi.CloudBrand +import com.github.nullptroma.wallenc.vault.contract.CloudBrand import java.util.UUID data class RemoteVaultListItem( diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsViewModel.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsViewModel.kt similarity index 87% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsViewModel.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsViewModel.kt index 9158206..f133f1e 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/remotes/RemoteVaultsViewModel.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/remotes/RemoteVaultsViewModel.kt @@ -1,16 +1,16 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.remotes +package com.github.nullptroma.wallenc.ui.screens.main.screens.remotes import androidx.lifecycle.viewModelScope import com.github.nullptroma.wallenc.domain.interfaces.IVaultsManager import com.github.nullptroma.wallenc.domain.tasks.ITaskOrchestrator import com.github.nullptroma.wallenc.domain.tasks.TaskLogLevel -import com.github.nullptroma.wallenc.presentation.ViewModelBase -import com.github.nullptroma.wallenc.vaultapi.RemoteVaultAuthenticator -import com.github.nullptroma.wallenc.vaultapi.VaultDescriptor -import com.github.nullptroma.wallenc.vaultapi.VaultRegistrar -import com.github.nullptroma.wallenc.vaultapi.VaultRegistration -import com.github.nullptroma.wallenc.vaultapi.described -import com.github.nullptroma.wallenc.vaultapi.remotes +import com.github.nullptroma.wallenc.ui.ViewModelBase +import com.github.nullptroma.wallenc.vault.contract.RemoteVaultAuthenticator +import com.github.nullptroma.wallenc.vault.contract.VaultDescriptor +import com.github.nullptroma.wallenc.vault.contract.VaultRegistrar +import com.github.nullptroma.wallenc.vault.contract.VaultRegistration +import com.github.nullptroma.wallenc.vault.contract.described +import com.github.nullptroma.wallenc.vault.contract.remotes import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.SharingStarted diff --git a/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/tasks/TaskPipelineRoute.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/tasks/TaskPipelineRoute.kt new file mode 100644 index 0000000..130ec49 --- /dev/null +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/tasks/TaskPipelineRoute.kt @@ -0,0 +1,9 @@ +package com.github.nullptroma.wallenc.ui.screens.main.screens.tasks + +import com.github.nullptroma.wallenc.ui.screens.ScreenRoute +import kotlinx.parcelize.Parcelize +import kotlinx.serialization.Serializable + +@Serializable +@Parcelize +class TaskPipelineRoute : ScreenRoute() diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/tasks/TaskPipelineScreen.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/tasks/TaskPipelineScreen.kt similarity index 98% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/tasks/TaskPipelineScreen.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/tasks/TaskPipelineScreen.kt index 11a694f..265a009 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/tasks/TaskPipelineScreen.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/tasks/TaskPipelineScreen.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.tasks +package com.github.nullptroma.wallenc.ui.screens.main.screens.tasks import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -35,7 +35,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.github.nullptroma.wallenc.domain.tasks.PipelineTask import com.github.nullptroma.wallenc.domain.tasks.TaskLogLevel import com.github.nullptroma.wallenc.domain.tasks.TaskRunState -import com.github.nullptroma.wallenc.presentation.R +import com.github.nullptroma.wallenc.ui.R @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/tasks/TaskPipelineViewModel.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/tasks/TaskPipelineViewModel.kt similarity index 95% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/tasks/TaskPipelineViewModel.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/tasks/TaskPipelineViewModel.kt index 4d2de66..b07f008 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/tasks/TaskPipelineViewModel.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/tasks/TaskPipelineViewModel.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.tasks +package com.github.nullptroma.wallenc.ui.screens.main.screens.tasks import androidx.lifecycle.ViewModel import com.github.nullptroma.wallenc.domain.tasks.ITaskOrchestrator diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/AbstractVaultBrowserViewModel.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/AbstractVaultBrowserViewModel.kt similarity index 95% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/AbstractVaultBrowserViewModel.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/AbstractVaultBrowserViewModel.kt index 9b40917..c7296bd 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/AbstractVaultBrowserViewModel.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/AbstractVaultBrowserViewModel.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.vault +package com.github.nullptroma.wallenc.ui.screens.main.screens.vault import androidx.lifecycle.viewModelScope import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey @@ -10,14 +10,14 @@ import com.github.nullptroma.wallenc.domain.interfaces.IStorage import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo import com.github.nullptroma.wallenc.domain.tasks.ITaskOrchestrator import com.github.nullptroma.wallenc.domain.tasks.TaskLogLevel -import com.github.nullptroma.wallenc.domain.usecases.GetOpenedStoragesUseCase -import com.github.nullptroma.wallenc.domain.usecases.ManageStoragesEncryptionUseCase -import com.github.nullptroma.wallenc.domain.usecases.ManageVaultUseCase -import com.github.nullptroma.wallenc.domain.usecases.RemoveStorageUseCase -import com.github.nullptroma.wallenc.domain.usecases.RenameStorageUseCase -import com.github.nullptroma.wallenc.domain.usecases.StorageFileManagementUseCase -import com.github.nullptroma.wallenc.presentation.ViewModelBase -import com.github.nullptroma.wallenc.presentation.extensions.toPrintable +import com.github.nullptroma.wallenc.usecases.GetOpenedStoragesUseCase +import com.github.nullptroma.wallenc.usecases.ManageStoragesEncryptionUseCase +import com.github.nullptroma.wallenc.usecases.ManageVaultUseCase +import com.github.nullptroma.wallenc.usecases.RemoveStorageUseCase +import com.github.nullptroma.wallenc.usecases.RenameStorageUseCase +import com.github.nullptroma.wallenc.usecases.StorageFileManagementUseCase +import com.github.nullptroma.wallenc.ui.ViewModelBase +import com.github.nullptroma.wallenc.ui.extensions.toPrintable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/LocalVaultRoute.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/LocalVaultRoute.kt new file mode 100644 index 0000000..04b7ae3 --- /dev/null +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/LocalVaultRoute.kt @@ -0,0 +1,9 @@ +package com.github.nullptroma.wallenc.ui.screens.main.screens.vault + +import com.github.nullptroma.wallenc.ui.screens.main.MainRoute +import kotlinx.parcelize.Parcelize +import kotlinx.serialization.Serializable + +@Serializable +@Parcelize +class LocalVaultRoute : MainRoute() diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/LocalVaultScreen.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/LocalVaultScreen.kt similarity index 84% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/LocalVaultScreen.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/LocalVaultScreen.kt index a11bb8e..dc4c07f 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/LocalVaultScreen.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/LocalVaultScreen.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.vault +package com.github.nullptroma.wallenc.ui.screens.main.screens.vault import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/LocalVaultViewModel.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/LocalVaultViewModel.kt similarity index 74% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/LocalVaultViewModel.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/LocalVaultViewModel.kt index 2b7fcc8..72f68ee 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/LocalVaultViewModel.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/LocalVaultViewModel.kt @@ -1,16 +1,16 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.vault +package com.github.nullptroma.wallenc.ui.screens.main.screens.vault import com.github.nullptroma.wallenc.domain.interfaces.ILogger import com.github.nullptroma.wallenc.domain.interfaces.IVaultsManager import com.github.nullptroma.wallenc.domain.tasks.ITaskOrchestrator -import com.github.nullptroma.wallenc.domain.usecases.GetOpenedStoragesUseCase -import com.github.nullptroma.wallenc.domain.usecases.ManageStoragesEncryptionUseCase -import com.github.nullptroma.wallenc.domain.usecases.ManageVaultUseCase -import com.github.nullptroma.wallenc.domain.usecases.RemoveStorageUseCase -import com.github.nullptroma.wallenc.domain.usecases.RenameStorageUseCase -import com.github.nullptroma.wallenc.domain.usecases.StorageFileManagementUseCase -import com.github.nullptroma.wallenc.vaultapi.described -import com.github.nullptroma.wallenc.vaultapi.locals +import com.github.nullptroma.wallenc.usecases.GetOpenedStoragesUseCase +import com.github.nullptroma.wallenc.usecases.ManageStoragesEncryptionUseCase +import com.github.nullptroma.wallenc.usecases.ManageVaultUseCase +import com.github.nullptroma.wallenc.usecases.RemoveStorageUseCase +import com.github.nullptroma.wallenc.usecases.RenameStorageUseCase +import com.github.nullptroma.wallenc.usecases.StorageFileManagementUseCase +import com.github.nullptroma.wallenc.vault.contract.described +import com.github.nullptroma.wallenc.vault.contract.locals import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.flatMapLatest diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/RemoteVaultViewModel.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/RemoteVaultViewModel.kt similarity index 77% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/RemoteVaultViewModel.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/RemoteVaultViewModel.kt index 0c9b6f5..7e0a766 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/RemoteVaultViewModel.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/RemoteVaultViewModel.kt @@ -1,14 +1,14 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.vault +package com.github.nullptroma.wallenc.ui.screens.main.screens.vault import androidx.lifecycle.SavedStateHandle import com.github.nullptroma.wallenc.domain.interfaces.ILogger import com.github.nullptroma.wallenc.domain.tasks.ITaskOrchestrator -import com.github.nullptroma.wallenc.domain.usecases.GetOpenedStoragesUseCase -import com.github.nullptroma.wallenc.domain.usecases.ManageStoragesEncryptionUseCase -import com.github.nullptroma.wallenc.domain.usecases.ManageVaultUseCase -import com.github.nullptroma.wallenc.domain.usecases.RemoveStorageUseCase -import com.github.nullptroma.wallenc.domain.usecases.RenameStorageUseCase -import com.github.nullptroma.wallenc.domain.usecases.StorageFileManagementUseCase +import com.github.nullptroma.wallenc.usecases.GetOpenedStoragesUseCase +import com.github.nullptroma.wallenc.usecases.ManageStoragesEncryptionUseCase +import com.github.nullptroma.wallenc.usecases.ManageVaultUseCase +import com.github.nullptroma.wallenc.usecases.RemoveStorageUseCase +import com.github.nullptroma.wallenc.usecases.RenameStorageUseCase +import com.github.nullptroma.wallenc.usecases.StorageFileManagementUseCase import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.flatMapLatest diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/VaultBrowserRoute.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/VaultBrowserRoute.kt similarity index 53% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/VaultBrowserRoute.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/VaultBrowserRoute.kt index cc4deb2..1eaa61d 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/VaultBrowserRoute.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/VaultBrowserRoute.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.vault +package com.github.nullptroma.wallenc.ui.screens.main.screens.vault -import com.github.nullptroma.wallenc.presentation.screens.ScreenRoute +import com.github.nullptroma.wallenc.ui.screens.ScreenRoute import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/VaultBrowserScreen.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/VaultBrowserScreen.kt similarity index 95% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/VaultBrowserScreen.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/VaultBrowserScreen.kt index bd19040..7f13323 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/VaultBrowserScreen.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/VaultBrowserScreen.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.vault +package com.github.nullptroma.wallenc.ui.screens.main.screens.vault import android.widget.Toast import androidx.compose.foundation.background @@ -28,8 +28,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.github.nullptroma.wallenc.presentation.elements.StorageTree -import com.github.nullptroma.wallenc.presentation.extensions.gesturesDisabled +import com.github.nullptroma.wallenc.ui.elements.StorageTree +import com.github.nullptroma.wallenc.ui.extensions.gesturesDisabled @Composable fun VaultBrowserScreen( diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/VaultBrowserScreenState.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/VaultBrowserScreenState.kt similarity index 84% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/VaultBrowserScreenState.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/VaultBrowserScreenState.kt index 26b60cc..3508ad1 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/vault/VaultBrowserScreenState.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/main/screens/vault/VaultBrowserScreenState.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.main.screens.vault +package com.github.nullptroma.wallenc.ui.screens.main.screens.vault import com.github.nullptroma.wallenc.domain.datatypes.Tree import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsRoute.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsRoute.kt similarity index 50% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsRoute.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsRoute.kt index 46b9fc9..3cc3e0a 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsRoute.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsRoute.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.presentation.screens.settings +package com.github.nullptroma.wallenc.ui.screens.settings -import com.github.nullptroma.wallenc.presentation.screens.ScreenRoute +import com.github.nullptroma.wallenc.ui.screens.ScreenRoute import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsScreen.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsScreen.kt similarity index 85% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsScreen.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsScreen.kt index cd27458..e1eb86f 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsScreen.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsScreen.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.settings +package com.github.nullptroma.wallenc.ui.screens.settings import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import com.github.nullptroma.wallenc.presentation.R +import com.github.nullptroma.wallenc.ui.R @Composable fun SettingsScreen(modifier: Modifier, viewModel: SettingsViewModel) { diff --git a/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsScreenState.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsScreenState.kt new file mode 100644 index 0000000..c559188 --- /dev/null +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsScreenState.kt @@ -0,0 +1,3 @@ +package com.github.nullptroma.wallenc.ui.screens.settings + +class SettingsScreenState \ No newline at end of file diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsViewModel.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsViewModel.kt similarity index 59% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsViewModel.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsViewModel.kt index 81a4679..559b4e1 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/settings/SettingsViewModel.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/settings/SettingsViewModel.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.presentation.screens.settings +package com.github.nullptroma.wallenc.ui.screens.settings -import com.github.nullptroma.wallenc.presentation.ViewModelBase +import com.github.nullptroma.wallenc.ui.ViewModelBase import dagger.hilt.android.lifecycle.HiltViewModel @HiltViewModel diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/shared/TextEditRoute.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/shared/TextEditRoute.kt similarity index 54% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/shared/TextEditRoute.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/shared/TextEditRoute.kt index d3d2d46..9382719 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/shared/TextEditRoute.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/shared/TextEditRoute.kt @@ -1,6 +1,6 @@ -package com.github.nullptroma.wallenc.presentation.screens.shared +package com.github.nullptroma.wallenc.ui.screens.shared -import com.github.nullptroma.wallenc.presentation.screens.ScreenRoute +import com.github.nullptroma.wallenc.ui.screens.ScreenRoute import kotlinx.parcelize.Parcelize import kotlinx.serialization.Serializable diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/shared/TextEditScreen.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/shared/TextEditScreen.kt similarity index 73% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/shared/TextEditScreen.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/shared/TextEditScreen.kt index aa290eb..552ab05 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/shared/TextEditScreen.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/screens/shared/TextEditScreen.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.screens.shared +package com.github.nullptroma.wallenc.ui.screens.shared import androidx.compose.material3.Text import androidx.compose.runtime.Composable diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/theme/Color.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/theme/Color.kt similarity index 81% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/theme/Color.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/theme/Color.kt index 592b613..a70ad7b 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/theme/Color.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/theme/Color.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.theme +package com.github.nullptroma.wallenc.ui.theme import androidx.compose.ui.graphics.Color diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/theme/Theme.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/theme/Theme.kt similarity index 96% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/theme/Theme.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/theme/Theme.kt index fd82008..dfff095 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/theme/Theme.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/theme/Theme.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.theme +package com.github.nullptroma.wallenc.ui.theme import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/theme/Type.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/theme/Type.kt similarity index 94% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/theme/Type.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/theme/Type.kt index 3aacdbc..45b699a 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/theme/Type.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/theme/Type.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.theme +package com.github.nullptroma.wallenc.ui.theme import androidx.compose.material3.Typography import androidx.compose.ui.text.TextStyle diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/utils/DebouncedLambda.kt b/ui/src/main/java/com/github/nullptroma/wallenc/ui/utils/DebouncedLambda.kt similarity index 82% rename from presentation/src/main/java/com/github/nullptroma/wallenc/presentation/utils/DebouncedLambda.kt rename to ui/src/main/java/com/github/nullptroma/wallenc/ui/utils/DebouncedLambda.kt index 7496801..eebb033 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/utils/DebouncedLambda.kt +++ b/ui/src/main/java/com/github/nullptroma/wallenc/ui/utils/DebouncedLambda.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.presentation.utils +package com.github.nullptroma.wallenc.ui.utils fun debouncedLambda(debounceMs: Long = 300, action: ()->Unit) : ()->Unit { diff --git a/presentation/src/main/res/values/strings.xml b/ui/src/main/res/values/strings.xml similarity index 100% rename from presentation/src/main/res/values/strings.xml rename to ui/src/main/res/values/strings.xml diff --git a/data/src/test/java/com/github/nullptroma/wallenc/data/ExampleUnitTest.kt b/ui/src/test/java/com/github/nullptroma/wallenc/ui/ExampleUnitTest.kt similarity index 87% rename from data/src/test/java/com/github/nullptroma/wallenc/data/ExampleUnitTest.kt rename to ui/src/test/java/com/github/nullptroma/wallenc/ui/ExampleUnitTest.kt index 057818b..86f7552 100644 --- a/data/src/test/java/com/github/nullptroma/wallenc/data/ExampleUnitTest.kt +++ b/ui/src/test/java/com/github/nullptroma/wallenc/ui/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.data +package com.github.nullptroma.wallenc.ui import org.junit.Test diff --git a/usecases/build.gradle.kts b/usecases/build.gradle.kts new file mode 100644 index 0000000..07c4e1f --- /dev/null +++ b/usecases/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + id("java-library") + alias(libs.plugins.jetbrains.kotlin.jvm) +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +kotlin { + jvmToolchain(17) +} + +dependencies { + implementation(project(":domain")) + implementation(libs.kotlinx.coroutines.core) + testImplementation(libs.junit) +} diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/GetOpenedStoragesUseCase.kt b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/GetOpenedStoragesUseCase.kt similarity index 87% rename from domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/GetOpenedStoragesUseCase.kt rename to usecases/src/main/java/com/github/nullptroma/wallenc/usecases/GetOpenedStoragesUseCase.kt index 805b822..914a575 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/GetOpenedStoragesUseCase.kt +++ b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/GetOpenedStoragesUseCase.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.domain.usecases +package com.github.nullptroma.wallenc.usecases import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo import com.github.nullptroma.wallenc.domain.interfaces.IUnlockManager @@ -8,4 +8,4 @@ import java.util.UUID class GetOpenedStoragesUseCase(private val unlockManager: IUnlockManager) { val openedStorages: StateFlow> get() = unlockManager.openedStorages -} \ No newline at end of file +} diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/ManageStoragesEncryptionUseCase.kt b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/ManageStoragesEncryptionUseCase.kt similarity index 98% rename from domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/ManageStoragesEncryptionUseCase.kt rename to usecases/src/main/java/com/github/nullptroma/wallenc/usecases/ManageStoragesEncryptionUseCase.kt index 169b7da..1da59fb 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/ManageStoragesEncryptionUseCase.kt +++ b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/ManageStoragesEncryptionUseCase.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.domain.usecases +package com.github.nullptroma.wallenc.usecases import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey import com.github.nullptroma.wallenc.domain.encrypt.Encryptor @@ -71,4 +71,4 @@ class ManageStoragesEncryptionUseCase( } storage.setEncInfo(Encryptor.generateEncryptionInfo(newKey, encryptPath)) } -} \ No newline at end of file +} diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/ManageVaultUseCase.kt b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/ManageVaultUseCase.kt similarity index 96% rename from domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/ManageVaultUseCase.kt rename to usecases/src/main/java/com/github/nullptroma/wallenc/usecases/ManageVaultUseCase.kt index a386275..67c6b1b 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/ManageVaultUseCase.kt +++ b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/ManageVaultUseCase.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.domain.usecases +package com.github.nullptroma.wallenc.usecases import com.github.nullptroma.wallenc.domain.interfaces.IStorage import com.github.nullptroma.wallenc.domain.interfaces.IVault diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RemoveStorageUseCase.kt b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/RemoveStorageUseCase.kt similarity index 96% rename from domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RemoveStorageUseCase.kt rename to usecases/src/main/java/com/github/nullptroma/wallenc/usecases/RemoveStorageUseCase.kt index 1e15854..e3365e8 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RemoveStorageUseCase.kt +++ b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/RemoveStorageUseCase.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.domain.usecases +package com.github.nullptroma.wallenc.usecases import com.github.nullptroma.wallenc.domain.interfaces.IStorage import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RenameStorageUseCase.kt b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/RenameStorageUseCase.kt similarity index 85% rename from domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RenameStorageUseCase.kt rename to usecases/src/main/java/com/github/nullptroma/wallenc/usecases/RenameStorageUseCase.kt index d82cee9..23427fc 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/RenameStorageUseCase.kt +++ b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/RenameStorageUseCase.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.domain.usecases +package com.github.nullptroma.wallenc.usecases import com.github.nullptroma.wallenc.domain.interfaces.IStorage import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo @@ -9,4 +9,4 @@ class RenameStorageUseCase { is IStorage -> storage.rename(newName) } } -} \ No newline at end of file +} diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/StorageFileManagementUseCase.kt b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/StorageFileManagementUseCase.kt similarity index 93% rename from domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/StorageFileManagementUseCase.kt rename to usecases/src/main/java/com/github/nullptroma/wallenc/usecases/StorageFileManagementUseCase.kt index 55d7e94..7a4259b 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/StorageFileManagementUseCase.kt +++ b/usecases/src/main/java/com/github/nullptroma/wallenc/usecases/StorageFileManagementUseCase.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.domain.usecases +package com.github.nullptroma.wallenc.usecases import com.github.nullptroma.wallenc.domain.interfaces.IDirectory import com.github.nullptroma.wallenc.domain.interfaces.IFile @@ -23,4 +23,4 @@ class StorageFileManagementUseCase { val storage = _storage ?: return listOf() return storage.accessor.getAllDirs() } -} \ No newline at end of file +} diff --git a/vault-api/build.gradle.kts b/vault-contracts/build.gradle.kts similarity index 100% rename from vault-api/build.gradle.kts rename to vault-contracts/build.gradle.kts diff --git a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/CloudBrand.kt b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/CloudBrand.kt similarity index 87% rename from vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/CloudBrand.kt rename to vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/CloudBrand.kt index a02b7f4..cef5a3b 100644 --- a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/CloudBrand.kt +++ b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/CloudBrand.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.vaultapi +package com.github.nullptroma.wallenc.vault.contract /** * Поддерживаемые облачные провайдеры удалённых vault'ов. diff --git a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/DescribedVault.kt b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/DescribedVault.kt similarity index 90% rename from vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/DescribedVault.kt rename to vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/DescribedVault.kt index 60a08e0..0e53401 100644 --- a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/DescribedVault.kt +++ b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/DescribedVault.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.vaultapi +package com.github.nullptroma.wallenc.vault.contract import com.github.nullptroma.wallenc.domain.interfaces.IVault diff --git a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/RemoteVaultAuthenticator.kt b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/RemoteVaultAuthenticator.kt similarity index 95% rename from vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/RemoteVaultAuthenticator.kt rename to vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/RemoteVaultAuthenticator.kt index 36206ed..3c0548b 100644 --- a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/RemoteVaultAuthenticator.kt +++ b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/RemoteVaultAuthenticator.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.vaultapi +package com.github.nullptroma.wallenc.vault.contract /** * Запуск OAuth-сценария привязки удалённого vault'а для конкретного [CloudBrand]. diff --git a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultDescriptor.kt b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultDescriptor.kt similarity index 95% rename from vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultDescriptor.kt rename to vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultDescriptor.kt index 2d6559c..93002ec 100644 --- a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultDescriptor.kt +++ b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultDescriptor.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.vaultapi +package com.github.nullptroma.wallenc.vault.contract import com.github.nullptroma.wallenc.domain.interfaces.IVaultInfo import java.util.UUID diff --git a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultLinkOutcome.kt b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultLinkOutcome.kt similarity index 94% rename from vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultLinkOutcome.kt rename to vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultLinkOutcome.kt index 573838b..14e49e8 100644 --- a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultLinkOutcome.kt +++ b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultLinkOutcome.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.vaultapi +package com.github.nullptroma.wallenc.vault.contract /** * Результат сценария OAuth-линка нового удалённого vault'а. diff --git a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultRegistrar.kt b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultRegistrar.kt similarity index 93% rename from vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultRegistrar.kt rename to vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultRegistrar.kt index cb9a2f8..468c7e0 100644 --- a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultRegistrar.kt +++ b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultRegistrar.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.vaultapi +package com.github.nullptroma.wallenc.vault.contract import java.util.UUID diff --git a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultRegistration.kt b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultRegistration.kt similarity index 94% rename from vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultRegistration.kt rename to vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultRegistration.kt index 334525d..088959e 100644 --- a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/VaultRegistration.kt +++ b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/VaultRegistration.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.vaultapi +package com.github.nullptroma.wallenc.vault.contract /** * Маркер «полезной нагрузки» для регистрации удалённого vault'а через [VaultRegistrar]. diff --git a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/Vaults.kt b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/Vaults.kt similarity index 94% rename from vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/Vaults.kt rename to vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/Vaults.kt index e566fc1..19e1b54 100644 --- a/vault-api/src/main/java/com/github/nullptroma/wallenc/vaultapi/Vaults.kt +++ b/vault-contracts/src/main/java/com/github/nullptroma/wallenc/vault/contract/Vaults.kt @@ -1,4 +1,4 @@ -package com.github.nullptroma.wallenc.vaultapi +package com.github.nullptroma.wallenc.vault.contract import com.github.nullptroma.wallenc.domain.interfaces.IVault