Appearance
Импорт активов
Модальное окно импорта
Компонент: modules/importTransactionsPopup/components/ImportTransactionsPopup.vue
Интерфейс
- Зона загрузки файла — drag & drop или выбор через файловый менеджер
- Поле пароля — отображается если файл зашифрован (
.ppp) - Режим импорта:
- Перезаписать — заменяет все существующие транзакции
- Добавить — мержит с существующими, дедупликация по ID транзакции
- Кнопка импорта
Поддерживаемые форматы
| Расширение | Тип | Описание |
|---|---|---|
.pp | Plain | Незашифрованный JSON |
.ppp | Protected | Зашифрованный (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 |
| v3 | JSON | { content: "зашифрованная строка", version: "v3" } |
Обработка ошибок
- Невалидный формат файла → toast уведомление
- Неверный пароль → ошибка расшифровки
- Невалидные транзакции → фильтруются, показывается предупреждение