diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8e73234..523e440 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.github.nullptroma.wallenc" - compileSdk = 34 + compileSdk = 35 defaultConfig { applicationId = "com.github.nullptroma.wallenc" diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 9516968..dbb75ff 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -7,7 +7,7 @@ plugins { android { namespace = "com.github.nullptroma.data" - compileSdk = 34 + compileSdk = 35 defaultConfig { minSdk = 24 diff --git a/domain/build.gradle.kts b/domain/build.gradle.kts index 1447936..d663175 100644 --- a/domain/build.gradle.kts +++ b/domain/build.gradle.kts @@ -7,7 +7,7 @@ plugins { android { namespace = "com.github.nullptroma.domain" - compileSdk = 34 + compileSdk = 35 defaultConfig { minSdk = 24 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f9f08c2..ba25c52 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,14 +1,14 @@ [versions] -agp = "8.6.1" +agp = "8.7.1" kotlin = "2.0.20" -coreKtx = "1.13.1" +coreKtx = "1.15.0" junit = "4.13.2" junitVersion = "1.2.1" espressoCore = "3.6.1" -lifecycleRuntimeKtx = "2.8.6" -activityCompose = "1.9.2" -composeBom = "2024.09.03" -navigation = "2.8.2" +lifecycleRuntimeKtx = "2.8.7" +activityCompose = "1.9.3" +composeBom = "2024.10.01" +navigation = "2.8.3" hiltNavigation = "1.2.0" yandexAuthSdk = "3.1.1" daggerHilt = "2.51.1" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c135043..b628fd0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Sat Sep 07 01:04:14 MSK 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/wallenc-uml.gaphor b/wallenc-uml.gaphor new file mode 100644 index 0000000..abff5ca --- /dev/null +++ b/wallenc-uml.gaphor @@ -0,0 +1,3507 @@ + + + + +ru + + +diagram { + /* line-style: sloppy 0.3; */ +} + +controlflow { + dash-style: 0; +} + + + + + +Wallenc + + + + + + + + + + + + + + + + + +1. Прецеденты + + + + + + + + + + + + + +2. Анализ Предметной области + + + + + + + + + + + + +3. Архитектурный Дизайн + + + + + + + + + + + + + +Мобильное приложение + + + + + + + + + + + + + + + + + + +uc + + + + + +Прецеденты + + + + + + + + + + +Анализируйте функциональные требования, +определив роли пользователей – акторов – и +связав их с их прецедентами. + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 93.76953125, 79.1953125) + + +(0.0, 0.0) + + +258.0 + + +93.0 + + + + + + + + + + +act + + + + + +Сценарии Прецедентов + + + + + + + + + +Моделируйте реализацию абстрактного прецедента, создав диаграммы деятельности, визуализирующие потоки действий для основных и второстепенных прецедентов. + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 58.0, 79.0) + + +(0.0, 0.0) + + +364.0 + + +95.0 + + + + + + + + + + +cls + + + + + +Сущности Домена + + + + + + + + + +Выполняйте анализ предметной области путём моделирования доменных объектов и их связей с помощью упрощённой диаграммы классов. Эта диаграмма будет служить визуальным словарём понятий. Это также станет отправной точкой для модели данных уровня проектирования. + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 0.0, 58.30000000000007) + + +(0.0, 0.0) + + +400.0 + + +110.0 + + + + + + + + + + +pkg + + + + + +Зависимости Пакета + + + + + + + + + +sd + + + + + +Взаимодействия + + + + + + + + + +Подготовьте диаграмму зависимостей пакетов, чтобы соответствующим образом сгруппировать классы реализации. Это поможет поддерживать хорошо структурированный код и избегать недостатков проектирования, таких как циклические зависимости или зависимости от нестабильных частей. + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 106.71484375, 51.49999999999997) + + +(0.0, 0.0) + + +271.5703125 + + +212.0 + + + + + + + + + + +Model component interactions for use case scenarios in order to find out new methods in +existing classes or even new classes with specific responsibilities. + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 43.0, 73.0) + + +(0.0, 0.0) + + +322.0 + + +93.0 + + + + + + + + + + +cls + + + + + +Взаимосвязь пакетов + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 100.0, 100.0) + + +(0.0, 0.0) + + +85.0 + + +70.0 + + + + + + + + + + +Domain + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +cls + + + + + +Domain Диаграмма классов + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Data + + + + + + + + + + + + + + + + + +cls + + + + + +Data Диаграмма Классов + + + + +(1.0, 0.0, 0.0, 1.0, -166.66017150878906, 7.74609375) + + +(0.0, 0.0) + + +226.0 + + +173.4 + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 171.25390625, 4.573046875000017) + + +(-9.948932077648351, 0.0) + + +171.94893207764835 + + +179.74609374999997 + + + + + + + + + + +IStorage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 724.0, 986.0) + + +(0.0, 0.0) + + +374.0 + + +227.0 + + + + + + + + +0 + + + + + + + +1 + + +size + + +StateFlow<Integer> + + + + + + + +1 + + +numberOfFiles + + +StateFlow<Integer> + + + + +IMetaInfo + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 762.45, 0.0) + + +(0.0, 0.0) + + +297.09999999999997 + + +168.0 + + + + + +0 + + + + + +0 + + + + + + + +1 + + +size + + +Integer + + + + + + + +1 + + +isDeleted + + +Boolean + + + + + + + +1 + + +isHidden + + +Boolean + + + + + + + +1 + + +lastModified + + +DateTime + + + + + + + +1 + + +name + + +StateFlow<String> + + + + + + + + + +IEncryptedVault + + +Хранилище, управляющее зашифрованными кошельками. Можеть быть как локальным, так и удалённым. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 156.5, 1331.5) + + +(0.0, 0.0) + + +439.0 + + +193.0 + + + + + + + + +0 + + + + + + + +1 + + +uuid + + +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 + + + + + + + +createStorage + + + + + + + + + + +in + + +name + + + + + +String + + + + +in + + +key + + + + + +EncryptKey + + + + + + + +0 + + +0 + + + + + +(1.0, 0.0, 0.0, 1.0, -133.3514760558922, 694.9345509958349) + + +[(530.2814760558922, 458.5654490041651), (516.6814760558922, 636.5654490041651)] + + + + + + + + + + + + + + + + + + + + + + + + + + +removeStorage + + + + + + + + + +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)] + + + + + + + + + + + + + + + + + + + + + + + +Деятельность + + + + + + + + + + +getAll + + + + + + + + + +return + + + + + +List<IStorage> + + + + + + + +createStorage + + + + + + + + + + +in + + +name + + + + + +String + + + + +in + + +key + + + + + +EncryptKey + + + + + + + +removeStorage + + + + + + + + + +in + + +storage + + + + + +IStorage + + + + +IStorageExplorer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 789.0, 1323.0) + + +(0.0, 0.0) + + +388.0 + + +210.0 + + + + + + + + +0 + + + + + + + +1 + + +currentPath + + +StateFlow<Uri> + + + + + + + ++ getFilesStream(): Flow<DataPackage<IFile>> + + + + +IFile + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 628.5, 286.5) + + +(0.0, 0.0) + + +257.0 + + +108.0 + + + + + + + + +0 + + + + + + + +1 + + +metaInfo + + +IMetaInfo + + + + +IDirectory + + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 904.0, 278.0) + + +(0.0, 0.0) + + +322.0 + + +125.0 + + + + + + + + +0 + + + + + + + +1 + + +0 + + +0 + + +elementsCount + + +Integer + + +1 + + +1 + + + + + + + +1 + + +metaInfo + + +IMetaInfo + + + + + + + ++ getDirsStream(): Flow<DataPackage<IDirectory>> + + + + +0 + + + + + +0 + + +0 + + + + + +(1.0, 0.0, 0.0, 1.0, 1545.0190727547713, 182.35724811729017) + + +[(-507.0190727547713, 220.64275188270983), (-554.8890727547713, 330.64275188270983)] + + + + + + + + + + + + + +changeDir + + + + + + + + + +in + + +path + + + + + +Uri + + + + + + + +goUp + + + + + + + +goToRoot + + + + + + + +1 + + +path + + +Uri + + + + + + + + + + +IStorageAccessor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 692.5, 513.0) + + +(0.0, 0.0) + + +437.0 + + +363.0 + + + + + + + + +0 + + + + + + + +1 + + +name + + +String + + + + + + + +getAllFiles + + + + + + + + + + + + +getAllDirs + + + + + + + + + + + + + + + + + + + + + + + + + +1 + + ++ totalSpace: StateFlow<Integer[0..1]> + + + + + + + +rename + + + + + + + + + +in + + +newName + + + + + +String + + + + + + + +1 + + ++ availableSpace: StateFlow<Integer[0..1]> + + + + + + + +touchFile + + + + + + + + + +in + + +path + + + + + +Uri + + + + + + + +touchDir + + + + + + + + + +in + + +path + + + + + +Uri + + + + + + + +delete + + + + + + + + + +in + + +path + + + + + +Uri + + + + + + + +getFileInfo + + + + + + + + + +in + + +path + + + + + +Uri + + + + + + + +getDirInfo + + + + + + + + + +in + + +path + + + + + +Uri + + + + + + + +openWrite + + + + + + + + + + +return + + + + + +Stream + + + + +in + + +path + + + + + +Uri + + + + + + + +openRead + + + + + + + + + + +return + + + + + +Stream + + + + +in + + +path + + + + + +Uri + + + + + + + +moveToTrash + + + + + + + + + +in + + +path + + + + + +Uri + + + + + + + +1 + + +accessor + + +IStorageAccessor + + + + + + + +1 + + +storage + + +IStorage + + +private + + + + +in + + +storage + + + + + +IStorage + + + + +return + + + + + +IReadOnlyList<IFile> + + + + +return + + + + + +IReadOnlyList<IDirectory> + + + + + + + +getFiles + + + + + + + + + + +return + + + + + +IReadOnlyList<IFile> + + + + +in + + +path + + + + + +Uri + + + + + + + +getDirs + + + + + + + + + + +return + + + + + +IReadOnlyList<IDirectory> + + + + +in + + +path + + + + + +Uri + + + + + + + +1 + + +isAvailable + + +StateFlow<Boolean> + + + + + + + +1 + + ++ filesUpdates: SharedFlow<DataPackage<IFile>> + + + + + + + +1 + + ++ dirsUpdates: SharedFlow<DataPackage<IDirectory>> + + + + +0 + + + + + +0 + + +0 + + + + + +(1.0, 0.0, 0.0, 1.0, 243.16039962225034, 245.31631894795726) + + +[(537.2296003777496, 149.18368105204274), (588.8196003777497, 267.68368105204274)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 + + +0 + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 797.1546434276883, 342.4519561875513) + + +[(113.84535657231174, 533.5480438124487), (113.84535657231174, 643.5480438124487)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 + + +0 + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 203.10890581080406, 345.69270684881207) + + +[(758.321094189196, -177.69270684881207), (824.5910941891959, -67.69270684881207)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +shared + + + + + + + + + + + + + + + + + + + +0 + + +0 + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 138.30896896823918, 350.69522175455927) + + +[(722.2610310317609, -182.69522175455927), (651.0510310317609, -64.19522175455927)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +shared + + + + + + + + + + + + + + + + +createStorage + + + + + + + + + + + +in + + +name + + + + + +String + + + + +in + + +key + + + + + +EncryptKey + + + + +in + + +uuid + + + + + +String + + + + +VaultType + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 0.0, 1049.5) + + +(0.0, 0.0) + + +174.0 + + +100.0 + + + + + +0 + + +0 + + + + + + + + + + +Local + + + + + + + +YandexRestApi + + + + + + + +1 + + +type + + +VaultType + + + + + + + + + + +0 + + +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)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +IVaultManager + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 169.0, 1643.0) + + +(0.0, 0.0) + + +450.0 + + +125.0 + + + + + + + + +0 + + + + + + + +addYandexVault + + + + + + + + + + +in + + +email + + + + + +String + + + + +in + + +token + + + + + +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)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + +DataPage<List<T>> + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 1244.0, 290.5) + + +(0.0, 0.0) + + +278.0 + + +100.0 + + + + + +0 + + + + + + + + + + +1 + + +pageLength + + +Integer + + + + + + + + + + +0 + + +0 + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 810.8769280866725, 1115.1125252125555) + + +[(-84.74692808667248, 97.88747478744449), (-277.5869280866725, 216.3874747874445)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +composite + + + + + + + + + + + + + + + + +0 + + +0 + + + + + + + + +* + + +* + + + + + + + +1 + + +uuid + + +String + + + + + + + ++ getFilesStream(in path: Uri): Flow<DataPackage<IFile>> + + + + + + + ++ getDirsStream(in path): Flow<DataPackage<IDirectory>> + + + + + + + +1 + + +storages: StateFlow<List<IStorage>> + + + + + + + +1 + + +isAvailable + + +StateFlow<Boolean> + + + + + + + +1 + + +isAvailable + + +StateFlow<Boolean> + + + + + + + +localVault + + +StateFlow<IEncryptedVault> + + + + + + + +remoteVaults: StateFlow<IReadOnlyList<IEncryptedVault>> + + + + +DataPackage<T> + + + + + + + + + + + + + + + + + + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 1238.0, 17.0) + + +(0.0, 0.0) + + +290.0 + + +134.0 + + + + + +0 + + + + + + + + + + +0 + + +0 + + + + + +(1.0, 0.0, 0.0, 1.0, 1254.0690161527355, -112.28501339841085) + + +[(128.93098384726454, 402.78501339841085), (128.93098384726454, 263.28501339841085)] + + + + + + + + + + + + + + + + + + + + + + + + + + +1 + + +data + + +T + + + + + + + +1 + + +0 + + +0 + + +hasNext + + +Boolean + + +1 + + +1 + + + + + + + +1 + + +pageNumber + + +Integer + + + + + + + +1 + + +0 + + +0 + + +isLoading + + +Boolean + + +1 + + +1 + + + + + + + +1 + + +0 + + +0 + + +isError + + +Boolean + + +1 + + +1 + + + + + + + + + + +0 + + +0 + + + + + + + + +(1.0, 0.0, 0.0, 1.0, 959.5327755485932, 1132.134334488268) + + +[(-23.65277554859324, 80.865665511732), (0.45722445140677337, 190.865665511732)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file