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 064df46..ada67d6 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 @@ -7,6 +7,7 @@ import androidx.activity.enableEdgeToEdge import com.github.nullptroma.wallenc.presentation.WallencUi import dagger.hilt.android.AndroidEntryPoint +class Container(val value: T) @AndroidEntryPoint class MainActivity : ComponentActivity() { @@ -18,7 +19,8 @@ class MainActivity : ComponentActivity() { // val launcher = // registerForActivityResult(sdk.contract) { result -> handleResult(result) } // val loginOptions = YandexAuthLoginOptions(LoginType.CHROME_TAB) - + val cont1 = Container(true) + var cont2 = Container(true) setContent { WallencUi() } diff --git a/data/build.gradle.kts b/data/build.gradle.kts index beaf2ec..e42304b 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -1,7 +1,6 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) - alias(libs.plugins.dagger.hilt) alias(libs.plugins.ksp) } @@ -35,10 +34,6 @@ android { } dependencies { - // Hilt - implementation(libs.dagger.hilt) - ksp(libs.dagger.hilt.compiler) - // Room implementation(libs.room.ktx) implementation(libs.room.runtime) diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/TestImpl.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/TestImpl.kt deleted file mode 100644 index 4f43e32..0000000 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/TestImpl.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.github.nullptroma.wallenc.data - -import com.github.nullptroma.wallenc.domain.models.IMetaInfo -import java.net.URI -import java.time.LocalDateTime - -class TestImpl : IMetaInfo { - override val name: String - get() = "Hello225" - override val size: Int - get() = 10 - override val isDeleted: Boolean - get() = true - override val isHidden: Boolean - get() = true - override val lastModified: LocalDateTime - get() = TODO("Not yet implemented") - override val path: URI - get() = URI("/Hello/path") -} \ No newline at end of file diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/di/SingletonModule.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/di/SingletonModule.kt deleted file mode 100644 index 66f67ce..0000000 --- a/data/src/main/java/com/github/nullptroma/wallenc/data/di/SingletonModule.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.github.nullptroma.wallenc.data.di - -import com.github.nullptroma.wallenc.data.TestImpl -import com.github.nullptroma.wallenc.domain.models.IMetaInfo -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.components.SingletonComponent - -@Module -@InstallIn(SingletonComponent::class) -class SingletonModule { - - @Provides - fun provideIMeta() : IMetaInfo { - return TestImpl() - } -} \ No newline at end of file diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/LocalVault.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/LocalVault.kt new file mode 100644 index 0000000..e1a5aaf --- /dev/null +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/LocalVault.kt @@ -0,0 +1,53 @@ +package com.github.nullptroma.wallenc.data.vaults + +import android.content.Context +import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey +import com.github.nullptroma.wallenc.domain.enums.VaultType +import com.github.nullptroma.wallenc.domain.models.IStorage +import com.github.nullptroma.wallenc.domain.models.IVault +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import java.util.UUID + +class LocalVault(private val ioDispatcher: CoroutineDispatcher, context: Context) : IVault { + init { + CoroutineScope(ioDispatcher).launch { + + } + } + + override suspend fun createStorage(name: String): IStorage = withContext(ioDispatcher) { + TODO("Not yet implemented") + } + + override suspend fun createStorage( + name: String, + key: EncryptKey + ): IStorage = withContext(ioDispatcher) { + TODO("Not yet implemented") + } + + override suspend fun createStorage( + name: String, + key: EncryptKey, + uuid: UUID + ): IStorage = withContext(ioDispatcher) { + TODO("Not yet implemented") + } + + override suspend fun remove(storage: IStorage) = withContext(ioDispatcher) { + TODO("Not yet implemented") + } + + override val type: VaultType = VaultType.LOCAL + override val uuid: UUID + get() = TODO("Not yet implemented") + override val storages: StateFlow> + get() = TODO("Not yet implemented") + override val isAvailable: StateFlow + get() = TODO("Not yet implemented") + +} \ No newline at end of file diff --git a/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/VaultsManager.kt b/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/VaultsManager.kt new file mode 100644 index 0000000..260d2e6 --- /dev/null +++ b/data/src/main/java/com/github/nullptroma/wallenc/data/vaults/VaultsManager.kt @@ -0,0 +1,5 @@ +package com.github.nullptroma.wallenc.data.vaults + +class VaultsManager { + +} \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/utils/DataPackage.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPackage.kt similarity index 57% rename from domain/src/main/java/com/github/nullptroma/wallenc/domain/utils/DataPackage.kt rename to domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPackage.kt index b0b0d75..c9c2ae9 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/utils/DataPackage.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPackage.kt @@ -1,8 +1,7 @@ -package com.github.nullptroma.wallenc.domain.utils +package com.github.nullptroma.wallenc.domain.datatypes open class DataPackage( val data: T, - val hasNext: Boolean? = false, val isLoading: Boolean? = false, val isError: Boolean? = false ) \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/utils/DataPage.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPage.kt similarity index 56% rename from domain/src/main/java/com/github/nullptroma/wallenc/domain/utils/DataPage.kt rename to domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPage.kt index 9bd4bf2..519f79c 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/utils/DataPage.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/DataPage.kt @@ -1,7 +1,8 @@ -package com.github.nullptroma.wallenc.domain.utils +package com.github.nullptroma.wallenc.domain.datatypes class DataPage( list: List, + val hasNext: Boolean? = false, val pageLength: Int, val pageNumber: Int ) : DataPackage>(list) \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/EncryptKey.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/EncryptKey.kt new file mode 100644 index 0000000..679acaf --- /dev/null +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/datatypes/EncryptKey.kt @@ -0,0 +1,9 @@ +package com.github.nullptroma.wallenc.domain.datatypes + +class EncryptKey { + val key: String + + constructor(key: String) { + this@EncryptKey.key = key + } +} \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/enums/VaultType.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/enums/VaultType.kt new file mode 100644 index 0000000..1e14e70 --- /dev/null +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/enums/VaultType.kt @@ -0,0 +1,6 @@ +package com.github.nullptroma.wallenc.domain.enums + +enum class VaultType { + LOCAL, + YANDEX +} \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/storage/IStorage.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IStorage.kt similarity index 64% rename from domain/src/main/java/com/github/nullptroma/wallenc/domain/storage/IStorage.kt rename to domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IStorage.kt index 36ef727..d1eac37 100644 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/storage/IStorage.kt +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IStorage.kt @@ -1,11 +1,12 @@ -package com.github.nullptroma.wallenc.domain.storage +package com.github.nullptroma.wallenc.domain.models import kotlinx.coroutines.flow.StateFlow +import java.util.UUID interface IStorage { - val size: StateFlow - val numberOfFiles: StateFlow - val uuid: String + val size: StateFlow + val numberOfFiles: StateFlow + val uuid: UUID val name: StateFlow val totalSpace: StateFlow val availableSpace: StateFlow diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IStorageAccessor.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IStorageAccessor.kt new file mode 100644 index 0000000..b62dae8 --- /dev/null +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IStorageAccessor.kt @@ -0,0 +1,42 @@ +package com.github.nullptroma.wallenc.domain.models + +import com.github.nullptroma.wallenc.domain.datatypes.DataPackage +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.StateFlow +import java.io.InputStream +import java.io.OutputStream +import java.net.URI + +interface IStorageAccessor { + val isAvailable: StateFlow + val filesUpdates: SharedFlow> + val dirsUpdates: SharedFlow> + + suspend fun getAllFiles(): List + suspend fun getFiles(path: URI): List + /** + * Получение списка файлов в директории + * @param path Путь к директории + * @return Поток файлов + */ + fun getFilesFlow(path: URI): Flow> + + suspend fun getAllDirs(): List + suspend fun getDirs(path: URI): List + /** + * Получение списка директорий в директории + * @param path Путь к директории + * @return Поток директорий + */ + fun getDirsFlow(path: URI): Flow> + + suspend fun touchFile(path: URI) + suspend fun touchDir(path: URI) + suspend fun delete(path: URI) + suspend fun getFileInfo(path: URI) + suspend fun getDirInfo(path: URI) + suspend fun openWrite(path: URI): InputStream + suspend fun openRead(path: URI): OutputStream + suspend fun moveToTrash(path: URI) +} \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IStorageExplorer.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IStorageExplorer.kt new file mode 100644 index 0000000..5346e9e --- /dev/null +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IStorageExplorer.kt @@ -0,0 +1,11 @@ +package com.github.nullptroma.wallenc.domain.models + +import kotlinx.coroutines.flow.StateFlow +import java.net.URL + +interface IStorageExplorer { + val currentPath: StateFlow + + // TODO + // пока бесполезный интерфейс +} \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IVault.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IVault.kt new file mode 100644 index 0000000..daa999a --- /dev/null +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IVault.kt @@ -0,0 +1,11 @@ +package com.github.nullptroma.wallenc.domain.models + +import com.github.nullptroma.wallenc.domain.datatypes.EncryptKey +import java.util.UUID + +interface IVault : IVaultInfo { + suspend fun createStorage(name: String): IStorage + suspend fun createStorage(name: String, key: EncryptKey): IStorage + suspend fun createStorage(name: String, key: EncryptKey, uuid: UUID): IStorage + suspend fun remove(storage: IStorage) +} \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IVaultInfo.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IVaultInfo.kt new file mode 100644 index 0000000..944d939 --- /dev/null +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IVaultInfo.kt @@ -0,0 +1,12 @@ +package com.github.nullptroma.wallenc.domain.models + +import com.github.nullptroma.wallenc.domain.enums.VaultType +import kotlinx.coroutines.flow.StateFlow +import java.util.UUID + +interface IVaultInfo { + val type: VaultType + val uuid: UUID + val storages: StateFlow> + val isAvailable: StateFlow +} \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IVaultsManager.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IVaultsManager.kt new file mode 100644 index 0000000..3232e15 --- /dev/null +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/models/IVaultsManager.kt @@ -0,0 +1,10 @@ +package com.github.nullptroma.wallenc.domain.models + +import kotlinx.coroutines.flow.StateFlow + +interface IVaultsManager { + val localVault: StateFlow + val remoteVaults: StateFlow> + + fun addYandexVault(email: String, token: String) +} \ No newline at end of file diff --git a/domain/src/main/java/com/github/nullptroma/wallenc/domain/storage/IStorageAccessor.kt b/domain/src/main/java/com/github/nullptroma/wallenc/domain/storage/IStorageAccessor.kt deleted file mode 100644 index bc7de7b..0000000 --- a/domain/src/main/java/com/github/nullptroma/wallenc/domain/storage/IStorageAccessor.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.nullptroma.wallenc.domain.storage - -import com.github.nullptroma.wallenc.domain.models.IDirectory -import com.github.nullptroma.wallenc.domain.models.IFile -import com.github.nullptroma.wallenc.domain.utils.DataPackage -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.SharedFlow -import kotlinx.coroutines.flow.StateFlow -import java.net.URI - -interface IStorageAccessor { - val isAvailable: StateFlow - val filesUpdates: SharedFlow - val dirsUpdates: SharedFlow - - suspend fun getAllFiles(): List - suspend fun getFiles(path: URI): List - fun getFilesStream(path: URI): Flow> - - suspend fun getAllDirs(): List - suspend fun getDirs(path: URI): List - fun getDirsStream(path: URI): Flow> - - suspend fun touchFile(path: URI) - suspend fun touchDir(path: URI) - suspend fun delete(path: URI) - suspend fun getFileInfo(path: URI) - suspend fun getDirInfo(path: URI) - suspend fun openWrite(path: URI) - suspend fun openRead(path: URI) - suspend fun moveToTrash(path: URI) -} \ No newline at end of file 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 new file mode 100644 index 0000000..c90aa9d --- /dev/null +++ b/domain/src/main/java/com/github/nullptroma/wallenc/domain/usecases/GetAllRawStoragesUseCase.kt @@ -0,0 +1,14 @@ +package com.github.nullptroma.wallenc.domain.usecases + +import com.github.nullptroma.wallenc.domain.models.IVault +import com.github.nullptroma.wallenc.domain.models.IVaultsManager +import kotlinx.coroutines.flow.combine + +class GetAllRawStoragesUseCase(val manager: IVaultsManager) { + fun getStoragesFlow() = manager.remoteVaults.combine(manager.localVault) { remote, local -> + mutableListOf().apply { + addAll(remote) + add(local) + } + } +} \ No newline at end of file diff --git a/wallenc-uml.gaphor b/wallenc-uml.gaphor index abff5ca..1d955c1 100644 --- a/wallenc-uml.gaphor +++ b/wallenc-uml.gaphor @@ -378,8 +378,6 @@ existing classes or even new classes with specific responsibilities. - - @@ -390,13 +388,17 @@ existing classes or even new classes with specific responsibilities. - - + + + + + + @@ -423,33 +425,33 @@ existing classes or even new classes with specific responsibilities. - - - - - - + + + + + - - - - + + + + + @@ -528,14 +530,15 @@ existing classes or even new classes with specific responsibilities. - + + - + @@ -552,10 +555,15 @@ existing classes or even new classes with specific responsibilities. + + + + + -(1.0, 0.0, 0.0, 1.0, 724.0, 986.0) +(1.0, 0.0, 0.0, 1.0, 590.5, 986.0) (0.0, 0.0) @@ -564,7 +572,7 @@ existing classes or even new classes with specific responsibilities. 374.0 -227.0 +244.0 @@ -584,11 +592,8 @@ existing classes or even new classes with specific responsibilities. 1 -size ++ size: StateFlow<Integer[0..1]> - -StateFlow<Integer> - @@ -629,7 +634,7 @@ existing classes or even new classes with specific responsibilities. -(1.0, 0.0, 0.0, 1.0, 762.45, 0.0) +(1.0, 0.0, 0.0, 1.0, 560.95, 0.0) (0.0, 0.0) @@ -724,29 +729,25 @@ existing classes or even new classes with specific responsibilities. - + - + - + -IEncryptedVault +IVault Хранилище, управляющее зашифрованными кошельками. Можеть быть как локальным, так и удалённым. - - - - - + @@ -760,28 +761,26 @@ existing classes or even new classes with specific responsibilities. - - - - - -(1.0, 0.0, 0.0, 1.0, 156.5, 1331.5) +(1.0, 0.0, 0.0, 1.0, 59.5, 1340.0) (0.0, 0.0) -439.0 +506.0 -193.0 +210.0 + +0 + @@ -803,138 +802,6 @@ existing classes or even new classes with specific responsibilities. String - - -EncryptKey - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(1.0, 0.0, 0.0, 1.0, 192.5, 1045.5) - - -(0.0, 0.0) - - -417.0 - - -108.0 - - - - - - - - - - - - - -EncryptKey - - - - - - - - - -in - - -hashedKey - - - - - -String - - - - - - - -EncryptKey - - - - - - - - - - -in - - -password - - - - - -String - - - - -in - - -numOfHashes - - - - - -Integer - - - - - - - -1 - - -hashedKey - - -String - - @@ -946,6 +813,7 @@ existing classes or even new classes with specific responsibilities. + @@ -977,45 +845,6 @@ existing classes or even new classes with specific responsibilities. EncryptKey - - - - - -0 - - -0 - - - - - -(1.0, 0.0, 0.0, 1.0, -133.3514760558922, 694.9345509958349) - - -[(530.2814760558922, 458.5654490041651), (516.6814760558922, 636.5654490041651)] - - - - - - - - - - - - - - - - - - - - - @@ -1029,142 +858,6 @@ existing classes or even new classes with specific responsibilities. - - -IUseCase - - - - - - - - - - - - - - - - - - -(1.0, 0.0, 0.0, 1.0, 613.5, 1391.0) - - -(0.0, 0.0) - - -157.0 - - -74.0 - - - - - -0 - - -0 - - - - - -0 - - - - - - - - - - -ManageLocalStoragesUseCase - - - - - - - - - - - - - - - - - - - -(1.0, 0.0, 0.0, 1.0, 349.5, 1878.0) - - -(0.0, 0.0) - - -349.0 - - -108.0 - - - - - -0 - - - - - - - - - - -0 - - -0 - - - - - -(1.0, 0.0, 0.0, 1.0, 1237.7376951267042, -136.8144539826019) - - -[(-554.3376951267043, 1601.814453982602), (-587.7376951267042, 1742.814453982602), (-587.7376951267042, 1941.814453982602), (-660.2976951267042, 2014.814453982602)] - - - - - - - - - - - - - - - - - - - - - Деятельность @@ -1173,99 +866,6 @@ existing classes or even new classes with specific responsibilities. - - - - - -getAll - - - - - - - - - -return - - - - - -List<IStorage> - - - - - - - -createStorage - - - - - - - - - - -in - - -name - - - - - -String - - - - -in - - -key - - - - - -EncryptKey - - - - - - - -removeStorage - - - - - - - - - -in - - -storage - - - - - -IStorage - - IStorageExplorer @@ -1294,15 +894,10 @@ existing classes or even new classes with specific responsibilities. - - - - - -(1.0, 0.0, 0.0, 1.0, 789.0, 1323.0) +(1.0, 0.0, 0.0, 1.0, 583.5, 1340.0) (0.0, 0.0) @@ -1371,7 +966,7 @@ existing classes or even new classes with specific responsibilities. -(1.0, 0.0, 0.0, 1.0, 628.5, 286.5) +(1.0, 0.0, 0.0, 1.0, 461.0, 286.5) (0.0, 0.0) @@ -1433,7 +1028,7 @@ existing classes or even new classes with specific responsibilities. -(1.0, 0.0, 0.0, 1.0, 904.0, 278.0) +(1.0, 0.0, 0.0, 1.0, 736.5, 278.0) (0.0, 0.0) @@ -1522,7 +1117,7 @@ existing classes or even new classes with specific responsibilities. (1.0, 0.0, 0.0, 1.0, 1545.0190727547713, 182.35724811729017) -[(-507.0190727547713, 220.64275188270983), (-554.8890727547713, 330.64275188270983)] +[(-668.5590727547713, 220.64275188270983), (-705.8590727547713, 330.64275188270983)] @@ -1634,7 +1229,7 @@ existing classes or even new classes with specific responsibilities. -(1.0, 0.0, 0.0, 1.0, 692.5, 513.0) +(1.0, 0.0, 0.0, 1.0, 559.0, 513.0) (0.0, 0.0) @@ -2198,7 +1793,7 @@ existing classes or even new classes with specific responsibilities. (1.0, 0.0, 0.0, 1.0, 243.16039962225034, 245.31631894795726) -[(537.2296003777496, 149.18368105204274), (588.8196003777497, 267.68368105204274)] +[(374.8896003777496, 149.18368105204274), (437.8796003777496, 267.68368105204274)] @@ -2243,7 +1838,7 @@ existing classes or even new classes with specific responsibilities. (1.0, 0.0, 0.0, 1.0, 797.1546434276883, 342.4519561875513) -[(113.84535657231174, 533.5480438124487), (113.84535657231174, 643.5480438124487)] +[(-19.654643427688256, 533.5480438124487), (-19.654643427688256, 643.5480438124487)] @@ -2283,8 +1878,17 @@ existing classes or even new classes with specific responsibilities. + +1 + + +1 + + +composite + @@ -2318,7 +1922,7 @@ existing classes or even new classes with specific responsibilities. (1.0, 0.0, 0.0, 1.0, 203.10890581080406, 345.69270684881207) -[(758.321094189196, -177.69270684881207), (824.5910941891959, -67.69270684881207)] +[(567.9510941891958, -177.69270684881207), (648.801094189196, -67.69270684881207)] @@ -2396,7 +2000,7 @@ existing classes or even new classes with specific responsibilities. (1.0, 0.0, 0.0, 1.0, 138.30896896823918, 350.69522175455927) -[(722.2610310317609, -182.69522175455927), (651.0510310317609, -64.19522175455927)] +[(531.9010310317608, -182.69522175455927), (476.41103103176084, -64.19522175455927)] @@ -2463,6 +2067,7 @@ existing classes or even new classes with specific responsibilities. + @@ -2505,7 +2110,7 @@ existing classes or even new classes with specific responsibilities. -String +UUID @@ -2529,7 +2134,7 @@ existing classes or even new classes with specific responsibilities. -(1.0, 0.0, 0.0, 1.0, 0.0, 1049.5) +(1.0, 0.0, 0.0, 1.0, 225.5, 644.5) (0.0, 0.0) @@ -2566,29 +2171,15 @@ existing classes or even new classes with specific responsibilities. -YandexRestApi +Yandex - - - - - -1 - - -type - - -VaultType - - - + 0 @@ -2597,80 +2188,33 @@ existing classes or even new classes with specific responsibilities. 0 - + - + (1.0, 0.0, 0.0, 1.0, -109.95392950161418, 1061.2568399683112) -[(239.0639295016142, 88.24316003168883), (292.9539295016142, 151.74316003168883), (399.6139295016142, 270.24316003168883)] +[(422.4539295016142, -316.75683996831117), (422.4539295016142, -20.25683996831117)] - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -IVaultManager +IVaultsManager + @@ -2688,13 +2232,14 @@ existing classes or even new classes with specific responsibilities. - + + -(1.0, 0.0, 0.0, 1.0, 169.0, 1643.0) +(1.0, 0.0, 0.0, 1.0, 87.5, 1660.0) (0.0, 0.0) @@ -2757,245 +2302,6 @@ existing classes or even new classes with specific responsibilities. String - - - - - -0 - - -0 - - - - - -(1.0, 0.0, 0.0, 1.0, -3.937961831953544, 1265.191054009214) - - -[(386.2079618319535, 259.308945990786), (393.91796183195356, 377.808945990786)] - - - - - - - - - - - - - - - - - - - - - - - - - - -0 - - -0 - - - - - -(1.0, 0.0, 0.0, 1.0, 76.1644392789674, 1603.616666567455) - - -[(353.7055607210326, 164.383333432545), (416.93556072103263, 274.383333432545)] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ExploreStorageUseCase - - - - - - - - - - - - - - - - - -(1.0, 0.0, 0.0, 1.0, 746.0, 1668.5) - - -(0.0, 0.0) - - -338.0 - - -74.0 - - - - - - - - - - - - - -invoke - - - - - - - - - - -return - - - - - -IStorageExplorer - - - - -in - - -storage - - - - - -IStorage - - - - - - - -0 - - -0 - - - - - -(1.0, 0.0, 0.0, 1.0, 170.73279888914223, 1639.1926984920697) - - -[(550.6472011108577, -174.19269849206967), (714.8172011108577, 29.307301507930333)] - - - - - - - - - - - - - - - - - - - - - - - - - - -0 - - -0 - - - - - -(1.0, 0.0, 0.0, 1.0, 167.51053522145116, 1885.7765431223293) - - -[(789.7794647785488, -352.77654312232926), (756.4394647785489, -217.27654312232926)] - - - - - - - - - - - - - - - - - - - - - @@ -3009,6 +2315,7 @@ existing classes or even new classes with specific responsibilities. + @@ -3022,7 +2329,7 @@ existing classes or even new classes with specific responsibilities. -(1.0, 0.0, 0.0, 1.0, 1244.0, 290.5) +(1.0, 0.0, 0.0, 1.0, 1076.5, 282.0) (0.0, 0.0) @@ -3031,7 +2338,7 @@ existing classes or even new classes with specific responsibilities. 278.0 -100.0 +117.0 @@ -3080,7 +2387,7 @@ existing classes or even new classes with specific responsibilities. (1.0, 0.0, 0.0, 1.0, 810.8769280866725, 1115.1125252125555) -[(-84.74692808667248, 97.88747478744449), (-277.5869280866725, 216.3874747874445)] +[(-201.90692808667245, 114.88747478744449), (-353.4369280866725, 224.8874747874445)] @@ -3147,20 +2454,6 @@ existing classes or even new classes with specific responsibilities. * - - - - - -1 - - -uuid - - -String - - @@ -3177,31 +2470,6 @@ existing classes or even new classes with specific responsibilities. + getDirsStream(in path): Flow<DataPackage<IDirectory>> - - - - - -1 - - -storages: StateFlow<List<IStorage>> - - - - - - - -1 - - -isAvailable - - -StateFlow<Boolean> - - @@ -3224,15 +2492,18 @@ existing classes or even new classes with specific responsibilities. localVault -StateFlow<IEncryptedVault> +StateFlow<IVault> + +1 + -remoteVaults: StateFlow<IReadOnlyList<IEncryptedVault>> ++ remoteVaults: StateFlow<IReadOnlyList<IVault>> @@ -3242,7 +2513,6 @@ existing classes or even new classes with specific responsibilities. - @@ -3263,7 +2533,7 @@ existing classes or even new classes with specific responsibilities. -(1.0, 0.0, 0.0, 1.0, 1238.0, 17.0) +(1.0, 0.0, 0.0, 1.0, 1070.5, 17.0) (0.0, 0.0) @@ -3301,7 +2571,7 @@ existing classes or even new classes with specific responsibilities. (1.0, 0.0, 0.0, 1.0, 1254.0690161527355, -112.28501339841085) -[(128.93098384726454, 402.78501339841085), (128.93098384726454, 263.28501339841085)] +[(-38.56901615273546, 394.28501339841085), (-38.56901615273546, 263.28501339841085)] @@ -3337,32 +2607,6 @@ existing classes or even new classes with specific responsibilities. T - - - - - -1 - - -0 - - -0 - - -hasNext - - -Boolean - - -1 - - -1 - - @@ -3449,10 +2693,10 @@ existing classes or even new classes with specific responsibilities. -(1.0, 0.0, 0.0, 1.0, 959.5327755485932, 1132.134334488268) +(1.0, 0.0, 0.0, 1.0, 956.5727755485931, 1132.134334488268) -[(-23.65277554859324, 80.865665511732), (0.45722445140677337, 190.865665511732)] +[(-179.07277554859309, 97.865665511732), (-179.07277554859309, 207.865665511732)] @@ -3504,4 +2748,823 @@ existing classes or even new classes with specific responsibilities. + + + + + +createStorage + + + + + + + + + + +return + + + + + +IStorage + + + + +in + + +name + + + + + +String + + + + +return + + + + + +IStorage + + + + +return + + + + + +IStorage + + + + + + + +1 + + +isEncrypted + + +Boolean + + + + + + + + + +IStorageUnlockManager + + +- uuid to opened storage + + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 990.0, 1382.5) + + +(0.0, 0.0) + + +409.0 + + +125.0 + + + + + + + + +0 + + + + + + + +0 + + +0 + + + + + +(1.0, 0.0, 0.0, 1.0, -159.4625174399573, 1222.4829062905674) + + +[(1088.1025174399574, 7.517093709432629), (1276.9625174399573, 160.01709370943263)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GetAllRawStoragesUseCase + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 0.0, 1895.0) + + +(0.0, 0.0) + + +295.0 + + +66.0 + + + + + +0 + + + + + + + +0 + + + + + +0 + + +0 + + + + + +(1.0, 0.0, 0.0, 1.0, 552.0090583921045, 1954.4598112542567) + + +[(-289.6890583921045, -169.4598112542567), (-378.2590583921045, -59.45981125425669)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 + + +0 + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 1328.1356031213516, 1393.2212077158106) + + +[(-1015.6356031213516, 156.77879228418942), (-1015.6356031213516, 266.7787922841894)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +EncryptKey + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 1379.0, 38.5) + + +(0.0, 0.0) + + +109.0 + + +91.0 + + + + + +0 + + + + + + + + + + +Key + + +String + + + + + + + +Close + + + + + + + + + + +return + + + + + +Boolean + + + + +in + + +uuid + + + + + +String + + + + + + + +Open + + + + + + + + + + + +return + + +0 + + +0 + + + + + +IStorage + + +1 + + +1 + + + + +in + + +uuid + + + + + +String + + + + +in + + +key + + + + + +EncryptKey + + + + + + + ++ OpenedStorages: StateFlow<Map<String, IStorage>> + + + + +0 + + + + + +0 + + +0 + + + + + +(1.0, 0.0, 0.0, 1.0, 76.1644392789674, 1603.616666567455) + + +[(286.5155607210326, 181.383333432545), (375.0855607210326, 291.383333432545)] + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 313.5, 1895.0) + + +(0.0, 0.0) + + +328.0 + + +66.0 + + + + + +0 + + + + + + + + + + + + +GetLocalVaultUseCase + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +storages: StateFlow<List<IStorage>> + + + + + + + +1 + + +localVault + + +StateFlow<IVault> + + + + +IVaultInfo + + + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 135.0, 1041.0) + + +(0.0, 0.0) + + +355.0 + + +134.0 + + + + + +0 + + + + + +0 + + + + + + + +0 + + +0 + + + + + +(1.0, 0.0, 0.0, 1.0, 29.099681659149553, 1343.3520695479824) + + +[(283.40031834085045, -3.35206954798241), (283.40031834085045, -168.3520695479824)] + + + + + + + + + + + + + +1 + + +type + + +VaultType + + + + + + + +1 + + +uuid + + +String + + + + + + + +1 + + ++ storages: StateFlow<List<IStorage>> + + + + + + + +1 + + +isAvailable + + +StateFlow<Boolean> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 + + +0 + + +hasNext + + +Boolean + + +1 + + +1 + + \ No newline at end of file