Большая реструктуризация проекта

This commit is contained in:
2026-05-11 19:33:32 +03:00
parent ad985679ee
commit 3928ac5409
132 changed files with 574 additions and 450 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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(

View File

@@ -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