Наведён порядок в DI
This commit is contained in:
@@ -14,6 +14,7 @@ kotlin {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("javax.inject:javax.inject:1")
|
||||
implementation(project(":domain"))
|
||||
implementation(libs.kotlinx.coroutines.core)
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
|
||||
@@ -3,8 +3,11 @@ package com.github.nullptroma.wallenc.usecases
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IStorage
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IVaultsManager
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class FindStorageUseCase(
|
||||
@Singleton
|
||||
class FindStorageUseCase @Inject constructor(
|
||||
private val vaultsManager: IVaultsManager,
|
||||
) {
|
||||
fun find(storageUuid: UUID): IStorage? {
|
||||
|
||||
@@ -4,8 +4,13 @@ import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IUnlockManager
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class GetOpenedStoragesUseCase(private val unlockManager: IUnlockManager) {
|
||||
@Singleton
|
||||
class GetOpenedStoragesUseCase @Inject constructor(
|
||||
private val unlockManager: IUnlockManager,
|
||||
) {
|
||||
val openedStorages: StateFlow<Map<UUID, IStorageInfo>>
|
||||
get() = unlockManager.openedStorages
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ import com.github.nullptroma.wallenc.domain.interfaces.IStorageSyncGroupStore
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.StorageSyncGroup
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.StorageSyncGroupEncryptionKind
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
data class StorageSyncCompatibilityInput(
|
||||
val isEncrypted: Boolean,
|
||||
@@ -19,7 +21,8 @@ sealed interface AddStorageToSyncGroupResult {
|
||||
data object MissingEncryptionSecret : AddStorageToSyncGroupResult
|
||||
}
|
||||
|
||||
class ManageStorageSyncGroupsUseCase(
|
||||
@Singleton
|
||||
class ManageStorageSyncGroupsUseCase @Inject constructor(
|
||||
private val groupStore: IStorageSyncGroupStore,
|
||||
) {
|
||||
suspend fun getGroups(): List<StorageSyncGroup> = groupStore.getGroups()
|
||||
|
||||
@@ -7,8 +7,11 @@ import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IUnlockManager
|
||||
import com.github.nullptroma.wallenc.domain.tasks.TaskProgress
|
||||
import kotlinx.coroutines.flow.first
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class ManageStoragesEncryptionUseCase(
|
||||
@Singleton
|
||||
class ManageStoragesEncryptionUseCase @Inject constructor(
|
||||
private val unlockManager: IUnlockManager,
|
||||
) {
|
||||
sealed interface CanEncryptResult {
|
||||
|
||||
@@ -21,8 +21,11 @@ import kotlinx.serialization.json.buildJsonObject
|
||||
import kotlinx.serialization.json.contentOrNull
|
||||
import kotlinx.serialization.json.jsonPrimitive
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class ManageTextSecretsUseCase {
|
||||
@Singleton
|
||||
class ManageTextSecretsUseCase @Inject constructor() {
|
||||
private val mutex = Mutex()
|
||||
|
||||
fun observe(storageInfo: IStorageInfo): Flow<List<TextSecretRecord>> {
|
||||
|
||||
@@ -18,8 +18,11 @@ import kotlinx.serialization.json.buildJsonObject
|
||||
import kotlinx.serialization.json.contentOrNull
|
||||
import kotlinx.serialization.json.jsonPrimitive
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class ManageTwoFaTokensUseCase {
|
||||
@Singleton
|
||||
class ManageTwoFaTokensUseCase @Inject constructor() {
|
||||
private val mutex = Mutex()
|
||||
|
||||
fun observe(storageInfo: IStorageInfo): Flow<List<TwoFaTokenRecord>> {
|
||||
|
||||
@@ -9,9 +9,14 @@ import kotlinx.coroutines.flow.flatMapLatest
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.flow.map
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
class ManageVaultUseCase(private val manager: IVaultsManager) {
|
||||
@Singleton
|
||||
class ManageVaultUseCase @Inject constructor(
|
||||
private val manager: IVaultsManager,
|
||||
) {
|
||||
|
||||
/** Найти vault по идентификатору в текущем состоянии. */
|
||||
fun find(vaultUuid: UUID): IVault? =
|
||||
|
||||
@@ -6,8 +6,11 @@ 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 java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class RemoveStorageUseCase(
|
||||
@Singleton
|
||||
class RemoveStorageUseCase @Inject constructor(
|
||||
private val vaultsManager: IVaultsManager,
|
||||
private val unlockManager: IUnlockManager,
|
||||
private val manageStoragesEncryptionUseCase: ManageStoragesEncryptionUseCase,
|
||||
|
||||
@@ -2,8 +2,11 @@ package com.github.nullptroma.wallenc.usecases
|
||||
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IStorage
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class RenameStorageUseCase {
|
||||
@Singleton
|
||||
class RenameStorageUseCase @Inject constructor() {
|
||||
suspend fun rename(storage: IStorageInfo, newName: String) {
|
||||
when (storage) {
|
||||
is IStorage -> storage.rename(newName)
|
||||
|
||||
@@ -12,8 +12,11 @@ import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class RunStorageSyncUseCase(
|
||||
@Singleton
|
||||
class RunStorageSyncUseCase @Inject constructor(
|
||||
private val orchestrator: ITaskOrchestrator,
|
||||
private val syncEngine: IStorageSyncEngine,
|
||||
private val syncReadiness: StorageSyncReadiness,
|
||||
|
||||
@@ -4,8 +4,11 @@ import com.github.nullptroma.wallenc.domain.interfaces.IDirectory
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IFile
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IStorage
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class StorageFileManagementUseCase {
|
||||
@Singleton
|
||||
class StorageFileManagementUseCase @Inject constructor() {
|
||||
private var _storage: IStorage? = null
|
||||
|
||||
fun setStorage(storage: IStorageInfo) {
|
||||
|
||||
@@ -16,8 +16,11 @@ import java.time.Instant
|
||||
import java.util.UUID
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.atomic.AtomicLong
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
class StorageSyncEngine(
|
||||
@Singleton
|
||||
class StorageSyncEngine @Inject constructor(
|
||||
private val vaultsManager: IVaultsManager,
|
||||
private val groupStore: IStorageSyncGroupStore,
|
||||
private val findStorageUseCase: FindStorageUseCase,
|
||||
|
||||
@@ -4,11 +4,14 @@ import com.github.nullptroma.wallenc.domain.interfaces.IStorageSyncGroupStore
|
||||
import com.github.nullptroma.wallenc.domain.interfaces.IVaultsManager
|
||||
import kotlinx.coroutines.delay
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
/**
|
||||
* Ожидание готовности хранилищ перед синхронизацией (холодный старт из WorkManager).
|
||||
*/
|
||||
class StorageSyncReadiness(
|
||||
@Singleton
|
||||
class StorageSyncReadiness @Inject constructor(
|
||||
private val vaultsManager: IVaultsManager,
|
||||
private val groupStore: IStorageSyncGroupStore,
|
||||
private val findStorageUseCase: FindStorageUseCase,
|
||||
|
||||
Reference in New Issue
Block a user