@startuml wallenc_02_vault_lifecycle
scale 3
title
Wallenc — пользовательский поток: жизненный цикл vault
и точки постановки в очередь синхронизации (проект)
end title

skinparam defaultFontName "DejaVu Sans"
skinparam state {
  BackgroundColor #F8F8F8
  BorderColor #333333
}
skinparam noteBackgroundColor #E3F2FD
skinparam noteBorderColor #1565C0

state "(Б) Список vault" as List

List --> Create : Создать vault
Create --> List : Vault создан

List --> EncryptDlg : Включить шифрование
EncryptDlg --> Encrypting : Подтверждение, мастер-ключ
state Encrypting {
  state "Шифрование данных + запись метаданных" as EncWork
}
Encrypting --> List : Готово

note right of Encrypting
  После успешной записи **коммита**
  в историю Storage (проект):
  UUID storage → **очередь синхронизации**
  в Room (для таймера)
end note

List --> OpenDlg : Открыть зашифрованный
OpenDlg --> Opened : Ключ верный
OpenDlg --> List : Отмена / неверный ключ

state Opened {
  state "Просмотр / работа с содержимым" as Browse
}
Opened --> List : Закрыть vault / блокировка

List --> RenameDel : Переименовать / удалить
RenameDel --> List : Подтверждение

note bottom of List
  **Синхронизация (проект):** любое изменение,
  порождающее новый **коммит** в Storage,
  добавляет storage UUID в таблицу очереди;
  **SyncService** по таймеру обрабатывает очередь,
  сравнивает истории коммитов с удалённой копией
  и приводит зашифрованное содержимое
  к одному состоянию (без передачи ключей).
end note

@enduml
