diff --git a/app/src/main/java/com/github/nullptroma/wallenc/app/Logger.kt b/app/src/main/java/com/github/nullptroma/wallenc/app/Logger.kt index 5b71d4d..e9ab4a3 100644 --- a/app/src/main/java/com/github/nullptroma/wallenc/app/Logger.kt +++ b/app/src/main/java/com/github/nullptroma/wallenc/app/Logger.kt @@ -8,4 +8,4 @@ class Logger: ILogger { Timber.tag(tag) Timber.d(msg) } -} \ No newline at end of file +} diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalStorage.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalStorage.kt index dc434a8..0889354 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalStorage.kt +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalStorage.kt @@ -9,6 +9,7 @@ import java.util.UUID class LocalStorage( override val uuid: UUID, + override val isEncrypted: Boolean, absolutePath: String, ioDispatcher: CoroutineDispatcher ) : IStorage { diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVault.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVault.kt index c09f79e..512c441 100644 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVault.kt +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/local/LocalVault.kt @@ -53,7 +53,7 @@ class LocalVault(private val ioDispatcher: CoroutineDispatcher, context: Context if (dirs != null) { _storages.value = dirs.map { val uuid = UUID.fromString(it.name) - LocalStorage(uuid, it.path, ioDispatcher) + LocalStorage(uuid, false, it.path, ioDispatcher) } } } @@ -66,7 +66,7 @@ class LocalVault(private val ioDispatcher: CoroutineDispatcher, context: Context val uuid = UUID.randomUUID() val next = Path(path.path, uuid.toString()) next.createDirectory() - val newStorage = LocalStorage(uuid, next.pathString, ioDispatcher) + val newStorage = LocalStorage(uuid, false, next.pathString, ioDispatcher) _storages.value = _storages.value.toMutableList().apply { add(newStorage) } diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPackage.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPackage.kt index 3401113..c9c2ae9 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPackage.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPackage.kt @@ -1,6 +1,6 @@ package com.github.nullptroma.wallenc.domain.datatypes -class DataPackage( +open class DataPackage( val data: T, val isLoading: Boolean? = false, val isError: Boolean? = false diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/encrypt/EncryptedStorage.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/encrypt/EncryptedStorage.kt index 2e3e48b..c8e672e 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/encrypt/EncryptedStorage.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/encrypt/EncryptedStorage.kt @@ -12,7 +12,8 @@ class EncryptedStorage( source: IStorage, key: EncryptKey, logger: ILogger, - ioDispatcher: CoroutineDispatcher + ioDispatcher: CoroutineDispatcher, + override val isEncrypted: Boolean ) : IStorage { override val size: StateFlow get() = TODO("Not yet implemented") diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IStorage.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IStorage.kt index f2104cf..2ad9500 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IStorage.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IStorage.kt @@ -1,14 +1,6 @@ package com.github.nullptroma.wallenc.domain.interfaces -import kotlinx.coroutines.flow.StateFlow -import java.util.UUID - -interface IStorage { - val size: StateFlow - val numberOfFiles: StateFlow - val uuid: UUID - val name: StateFlow - val isAvailable: StateFlow +interface IStorage: IStorageInfo { val accessor: IStorageAccessor suspend fun rename(newName: String) diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IStorageInfo.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IStorageInfo.kt new file mode 100644 index 0000000..400dea2 --- /dev/null +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IStorageInfo.kt @@ -0,0 +1,13 @@ +package com.github.nullptroma.wallenc.domain.interfaces + +import kotlinx.coroutines.flow.StateFlow +import java.util.UUID + +interface IStorageInfo { + val size: StateFlow + val numberOfFiles: StateFlow + val uuid: UUID + val isEncrypted: Boolean + val name: StateFlow + val isAvailable: StateFlow +} \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IVault.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IVault.kt index 1f7151b..bb22e50 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IVault.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IVault.kt @@ -1,9 +1,12 @@ package com.github.nullptroma.wallenc.domain.interfaces import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey +import kotlinx.coroutines.flow.StateFlow import java.util.UUID interface IVault : IVaultInfo { + override val storages: StateFlow> + suspend fun createStorage(): IStorage suspend fun createStorage(key: EncryptKey): IStorage suspend fun createStorage(key: EncryptKey, uuid: UUID): IStorage diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IVaultInfo.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IVaultInfo.kt index ca74d68..ef2779b 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IVaultInfo.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/interfaces/IVaultInfo.kt @@ -4,10 +4,10 @@ import com.github.nullptroma.wallenc.domain.enums.VaultType import kotlinx.coroutines.flow.StateFlow import java.util.UUID -interface IVaultInfo { +sealed interface IVaultInfo { val type: VaultType val uuid: UUID - val storages: StateFlow> + val storages: StateFlow> val isAvailable: StateFlow val totalSpace: StateFlow val availableSpace: StateFlow diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/GetAllRawStoragesUseCase.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/GetAllRawStoragesUseCase.kt index 742cb7e..9b3a972 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/GetAllRawStoragesUseCase.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/GetAllRawStoragesUseCase.kt @@ -3,12 +3,6 @@ package com.github.nullptroma.wallenc.domain.usecases import com.github.nullptroma.wallenc.domain.interfaces.IVaultsManager class GetAllRawStoragesUseCase(private val manager: IVaultsManager) { - // fun getStoragesFlow() = manager.remoteVaults.combine(manager.localVault) { remote, local -> -// mutableListOf().apply { -// addAll(remote) -// add(local) -// } -// } val localStorages get() = manager.localVault.storages } \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/StorageFileManagementUseCase.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/StorageFileManagementUseCase.kt index 6fbb55d..54632bf 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/StorageFileManagementUseCase.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/StorageFileManagementUseCase.kt @@ -3,11 +3,14 @@ package com.github.nullptroma.wallenc.domain.usecases 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 class StorageFileManagementUseCase { private var _storage: IStorage? = null - fun setStorage(storage: IStorage) { + fun setStorage(storage: IStorageInfo) { + if(storage !is IStorage) + throw Exception("Cannot manage storage on StorageInfo") _storage = storage } diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/TestUseCase.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/TestUseCase.kt deleted file mode 100644 index febe4bb..0000000 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/TestUseCase.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.nullptroma.wallenc.domain.usecases - -import com.github.nullptroma.wallenc.domain.interfaces.IMetaInfo - -class TestUseCase (val meta: IMetaInfo, val id: Int) { - -} \ No newline at end of file diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultScreenState.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultScreenState.kt index 123c848..c78c7cf 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultScreenState.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultScreenState.kt @@ -1,5 +1,5 @@ package com.github.nullptroma.wallenc.presentation.screens.main.screens.local.vault -import com.github.nullptroma.wallenc.domain.interfaces.IStorage +import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo -data class LocalVaultScreenState(val storagesList: List) \ No newline at end of file +data class LocalVaultScreenState(val storagesList: List) \ No newline at end of file diff --git a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultViewModel.kt b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultViewModel.kt index b845bc8..7a3d8fe 100644 --- a/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultViewModel.kt +++ b/presentation/src/main/java/com/github/nullptroma/wallenc/presentation/screens/main/screens/local/vault/LocalVaultViewModel.kt @@ -3,8 +3,7 @@ package com.github.nullptroma.wallenc.presentation.screens.main.screens.local.va import androidx.lifecycle.viewModelScope import com.github.nullptroma.wallenc.domain.interfaces.IDirectory import com.github.nullptroma.wallenc.domain.interfaces.IFile -import com.github.nullptroma.wallenc.domain.interfaces.ILogger -import com.github.nullptroma.wallenc.domain.interfaces.IStorage +import com.github.nullptroma.wallenc.domain.interfaces.IStorageInfo import com.github.nullptroma.wallenc.domain.usecases.ManageLocalVaultUseCase import com.github.nullptroma.wallenc.domain.usecases.StorageFileManagementUseCase import com.github.nullptroma.wallenc.presentation.viewmodel.ViewModelBase @@ -31,7 +30,7 @@ class LocalVaultViewModel @Inject constructor( } } - fun printAllFilesToLog(storage: IStorage) { + fun printAllFilesToLog(storage: IStorageInfo) { _storageFileManagementUseCase.setStorage(storage) viewModelScope.launch { val files: List