Skip to content

feat(modules.board): add file on the board#172

Merged
unknownproperty merged 13 commits into
mainfrom
133
May 28, 2026
Merged

feat(modules.board): add file on the board#172
unknownproperty merged 13 commits into
mainfrom
133

Conversation

@ElizavetaAbramova

Copy link
Copy Markdown
Contributor

Добавлена возможность загружать файлы, на доске появляется (после загрузки на сервер) карточка с этим файлом, его название, расширение, объём и большая кнопка скачать.
На данный момент решено оставить следующий список разрешенных форматов: pdf, doc, docx, xls, xlsx, ppt, pptx, txt, csv, mp4, webm, mov, avi и ограничить размер файла (максимум 5 MiB).

Требуется тестирование!

Шаги вопроизведения:

  1. Открыть доску и выбрать "Загрузить файл" в меню
image
  1. Выбрать любой файл из списка разрешенных

  2. Дождаться загрузки файла на сервер, в это время видна карточка с текстом "Загрузка"

image
  1. После успешной загрузки карточка файла отображается на доске и по клику на иконку начинается скачивание файла
image
  1. При попытке загрузить файл не подходящий по условиям выше, файл не будет загружен и пользователь увидит следующее сообщение
image

@github-actions

github-actions Bot commented Apr 24, 2026

Copy link
Copy Markdown
Name Status Preview
xi.web ✔️Success✔️ Visit Preview

@unknownproperty unknownproperty left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Давай ограничим размеры объекта, иначе при растягивании он выглядит вот так. Можно сделать что-то близкое на аудио

Image

url: getUrl(fileId),
responseType: 'blob',
headers: {
...(token ? { 'x-storage-token': token } : {}),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Как будто проверка на токен лишняя, если в типах ты указываешь, что он должен быть обязательно

fileId,
fileName,
token,
}: DownloadFileVars): Promise<string> {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Далеко не уверен насчёт Promise<string>, как будто там и не только лишь строка может быть

export async function insertFile(editor: Editor, file: File, token: string) {
if (!ALLOWED_FILE_MIME_TYPES.has(file.type)) {
toast.error('Неподдерживаемый формат', {
description: 'Выберите файл (doc, xls, ppt и др.).',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Выберите файл
Как будто тут немного некорректно, ведь файл уже выбран

toast.error('Ошибка загрузки файла', { description: msg, duration: 5000 });
editor.deleteShapes([shapeId]);
}
})();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не очень мне нравится конструкция выше, учитывая, что у тебя уже insertFile идёт как async функция, а в итоге у тебя тут ещё одна конструкция async await

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

я брала как пример pickAndInsertPdf и pickAndInsertAudio за основу, там такие же конструкции. Думаешь, стоить изменить?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Значится стоит надавать по шапке мне самому же, ибо audio и pdf писал я, а если быть точнее за Cursor'ом не уследил

Мне не сильно всё равно нравится async у insertFile, но в целом, можем итак оставить. Иначе было бы хорошо переписать это везде

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в последнем коммите попробовала улучшить, убрала IIFE, немного разделила отвественность функций

@unknownproperty
unknownproperty merged commit a621849 into main May 28, 2026
6 checks passed
@unknownproperty
unknownproperty deleted the 133 branch May 28, 2026 18:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants