Skip to content

Импорт активов

Модальное окно импорта

Компонент: modules/importTransactionsPopup/components/ImportTransactionsPopup.vue

Интерфейс

  1. Зона загрузки файла — drag & drop или выбор через файловый менеджер
  2. Поле пароля — отображается если файл зашифрован (.ppp)
  3. Режим импорта:
    • Перезаписать — заменяет все существующие транзакции
    • Добавить — мержит с существующими, дедупликация по ID транзакции
  4. Кнопка импорта

Поддерживаемые форматы

РасширениеТипОписание
.ppPlainНезашифрованный JSON
.pppProtectedЗашифрованный (CryptoJS)

Максимальный размер файла: 5 MB.

Процесс импорта

mermaid
flowchart TD
    A["Пользователь загружает файл"] --> B{"Расширение?"}
    B -->|".pp"| C["JSON.parse()"]
    B -->|".ppp"| D["Запросить пароль"]
    D --> E["Расшифровка<br/>$global.$encrypt.decrypt()"]
    E --> F{"Версия формата?"}
    F -->|"v1/v2"| G["Прямая расшифровка"]
    F -->|"v3"| H["Извлечь content из JSON"]
    H --> G
    G --> C
    C --> I["insertTransactions()"]
    I --> J["Валидация кластера"]
    J --> K["Валидация каждой транзакции"]
    K --> L{"Режим?"}
    L -->|"Перезаписать"| M["setTransactions()"]
    L -->|"Добавить"| N["updateTransactions()<br/>Дедупликация по ID"]
    M --> O["localStorage обновлён"]
    N --> O

Версии формата шифрования

ВерсияФорматОписание
v1СтрокаПросто зашифрованная строка
v2СтрокаАналогично v1
v3JSON{ content: "зашифрованная строка", version: "v3" }

Обработка ошибок

  • Невалидный формат файла → toast уведомление
  • Неверный пароль → ошибка расшифровки
  • Невалидные транзакции → фильтруются, показывается предупреждение