@startuml fig_03_navigation_hub
scale 2
title
Wallenc — навигация (Main) и доменная иерархия
VaultsManager → IVault → IStorage → файлы
end title

skinparam defaultFontName "DejaVu Sans"
skinparam activityBackgroundColor #F8F8F8
skinparam activityBorderColor #333333
skinparam noteBackgroundColor #FCE4EC
skinparam noteBorderColor #C2185B

start

partition "**Main: нижняя навигация**" {
  :(A) Вкладка LocalVault
(один LocalVault на устройстве);
  note right
    На экране — список **IStorage**,
    не список vault
  end note

  repeat
    :Ожидание действия;
    backward:Назад с вложенного экрана;
    switch (Действие?)
    case (FAB)
      :createStorage()
новый **storage** в LocalVault;
    case (Выбор storage)
      :StorageHome:
файлы, 2FA, текстовые секреты;
    case (Вкладка «Удалённые vault»)
      :Список **IVault** (Yandex по OAuth);
      if (Нужен OAuth?) then (да)
        :Авторизация Яндекс;
      endif
      :Выбор vault → VaultBrowser;
      :Список **storage** в выбранном vault;
      :StorageHome;
    endswitch
  repeat while (Пользователь в Main?) is (да)
  -> нет;
}

stop

floating note right
  **Фон: StorageSyncEngine**
  • DbStorageSyncGroup: UUID **storage** в группе
  • Журнал изменений по путям, merge ревизий
  • Независимо от текущего экрана UI
  • Ключи шифрования провайдеру не передаются
end note

@enduml
