Скачивание файлов из мини-приложений в Telegram может зависеть от определённых ограничений и особенностей, связанных с безопасностью и функциональностью самой платформы. В отличие от веб-приложений, работающих в браузере, мини-приложения Telegram имеют ограничения на выполнение некоторых действий, таких как скачивание файлов напрямую.
В вашем коде скачивание файла осуществляется с использованием `createObjectURL` и создания элемента `<a>` для инициирования загрузки. Однако такие подходы могут не работать должным образом в мобильном приложении Telegram. Вместо этого вы можете попробовать несколько альтернативных решений:
1. **Использование ссылки для скачивания:** Вместо создания Blob-объекта и использования временной ссылки, вы можете вернуть URL-адрес файла, который будет доступен для скачивания. В случае успеха, Telegram уже предоставляет прямую ссылку для скачивания, и пользователь будет перенаправлен для скачивания файла в его браузере.
2. **Использование Telegram Bot API:** Если возможно, можете скачать файл через бота. Например, при помощи бота вы можете отправить файл пользователю в чат, где он сможет его скачать более привычным способом.
3. **Инструкция для пользователей:** Если функциональность не поддерживается на мобильном приложении, вы можете добавить уведомление, предлагающее пользователям скачать файл через браузер, если это возможно.
Вот пример того, как можно изменить функцию `downloadReport` для использования прямой ссылки:
```typescript
const downloadReport = async (isAuth: string) => {
if (!currentUser?.organizationId) return;
try {
const response = await ReportService.generatePdfReportByHRForUsers(
currentUser.organizationId,
'test',
isAuth
);
// Проверьте, возвращает ли ваш сервер прямой URL для скачивания.
if (response.data.fileUrl) {
// Перенаправьте пользователя на URL
window.open(response.data.fileUrl, '_blank');
toast.success('Отчет успешно скачан!'); // Или сообщение о том, что файл открыт в новом окне.
}
} catch (error) {
toast.error('Ошибка при скачивании отчета.');
console.error('Error downloading report:', error);
}
}
```
Перед использованием этого метода убедитесь, что `fileUrl` - это ссылка, по которой файл доступен для скачивания, и что у пользователей есть соответствующий доступ к данному ресурсу.