66 lines
2.0 KiB
Plaintext
66 lines
2.0 KiB
Plaintext
@startuml fig_01_start_sync
|
||
' Увеличенный растр для вставки в отчёт (Word / печать)
|
||
scale 3
|
||
title
|
||
Wallenc — старт приложения и фоновая синхронизация
|
||
end title
|
||
|
||
skinparam defaultFontName "DejaVu Sans"
|
||
skinparam activity {
|
||
BackgroundColor #F8F8F8
|
||
BorderColor #333333
|
||
DiamondBackgroundColor #E8F4FF
|
||
}
|
||
skinparam noteBackgroundColor #FFFDE7
|
||
skinparam noteBorderColor #F9A825
|
||
|
||
start
|
||
|
||
:Старт приложения (Android);
|
||
|
||
:Инициализация Room,
|
||
загрузка метаданных vault;
|
||
|
||
if (Есть LocalVault / storage?) then (нет)
|
||
:Первый запуск;
|
||
else (да)
|
||
endif
|
||
|
||
if (Нужен удалённый провайдер
|
||
и нет учётной записи?) then (да)
|
||
:Экран удалённых vault /
|
||
OAuth Яндекс;
|
||
else (нет)
|
||
endif
|
||
|
||
partition "**Основной поток (UI)**" {
|
||
:(A) Main: LocalVault — список storage,
|
||
вкладка удалённых — список IVault;
|
||
:Действия с **storage**
|
||
(шифрование, открытие, файлы…);
|
||
}
|
||
|
||
fork
|
||
partition "**Фон: синхронизация (по таймеру)**" #E8F5E9 {
|
||
note right
|
||
**Реализовано:** StorageSyncEngine,
|
||
журнал изменений по путям, merge ревизий
|
||
• Room: DbStorageSyncGroup (UUID группы)
|
||
• WorkManager / debounce — запуск sync
|
||
• Ключи шифрования провайдеру не передаются
|
||
Подробный алгоритм — гл. 4, рис. 35
|
||
end note
|
||
:Запуск sync (Worker / debounce);
|
||
:StorageSyncEngine.syncAllGroups;
|
||
while (Есть группа синхронизации?) is (да)
|
||
:Слияние журналов → победитель по пути;
|
||
:findSourceStorage → applyEntry
|
||
на отстающие Storage;
|
||
endwhile (нет)
|
||
}
|
||
end fork
|
||
|
||
stop
|
||
|
||
@enduml
|