# Черновик будущих вложений в DM

## Важно

Этот документ описывает только ранний черновик идеи.

Сейчас в проекте **нет** поддержки вложений в личных сообщениях:

- в реализованном формате `SHiNE_DM` поле `attachmentsCount` пока всегда должно быть `0`;
- UI не показывает кнопку прикрепления файлов;
- сервер не принимает upload файлов для DM;
- сервер не раздаёт специальные DM-файлы по отдельным endpoints;
- сервер не хранит отдельные файловые связи для личных сообщений.

Этот документ нужен только для того, чтобы рядом с актуальной документацией было явно видно:

- какие идеи обсуждались;
- что это **не реализовано**;
- что формат, хранение и способ загрузки потом могут сильно измениться.

## Что обсуждалось

Рассматривался такой общий подход:

- у контентного DM есть внешний список вложений;
- во внешнем формате лежат только технические данные;
- человекочитаемые данные о файле живут внутри зашифрованного тела сообщения;
- один и тот же blob-файл теоретически мог бы переиспользоваться в нескольких сообщениях.

Черновой вариант внешнего списка:

- `attachmentsCount`
- далее для каждого вложения:
  - `encFileHashSHA256` (`32 bytes`)
  - `encFileSize` (`u64`)

Черновой вариант внутреннего маркера в тексте:

```text
<<file:file-format(1.0):type|fileName|origSize|origHashB64u|encHashB64u|encSize|keyB64u|nonceB64u>>
```

Где обсуждались поля:

- `type`
- `fileName`
- `origSize`
- `origHashB64u`
- `encHashB64u`
- `encSize`
- `keyB64u`
- `nonceB64u`

## Что может измениться

В будущем могут измениться любые части идеи:

- сам бинарный формат;
- способ привязки файлов к сообщению;
- момент загрузки файла относительно отправки сообщения;
- серверное хранение blob-файлов;
- права доступа к скачиванию;
- способ рендера вложения в UI.

Именно поэтому этот файл не надо воспринимать как актуальную спецификацию.

## Источник истины на сейчас

Актуальное состояние личных сообщений описано только в:

- `Dev_Docs/Personal_Messages/README.md`

Если между этим черновиком и основным README есть расхождение, верным считается `README.md`.
