Запись в буфер в мобильных версиях Telegram bot API
Есть webapp для телеграмм бота, в нём есть кнопка, которая копирует изображение в буфер, реализовано вот так:
axios.post(`${process.env.REACT_APP_SERVER_HOST}/photo`,
{
url: element.src,
},
{
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
responseType: "blob",
}
)
.then((res) => {
navigator.clipboard.write([
new ClipboardItem({
[res.data.type]: res.data,
}),
])
.then(() => console.log("copied"))
.catch((err) => {
setCopyErrorValue(String(err));
setCopyError(true);
});
})
.catch((err) => {
setCopyErrorValue(String(err));
setCopyError(true);
});
В этом коде я отправляю на сервер запрос с URI изображения, а в ответ приходит blob, который использую для копирования в буфер.
В десктопной версии телеграмм, при открытии приложения в боте всё работает как надо, изображение копируется в буфер. Ошибки появляются в мобильных версиях, причём разные для разных платформ:
- Для Android: notAllowedError: write permission denied.
- Для iOS: NotAllowedError: The request is not allowed by the user agent or the platform in the current context, possibly because the user denied permission.
Думал что дело в мобильных устройствах впринципе, но в мобильных версиях браузеров (всех, кроме firefox, в нём и на десктопной версии не поддерживает эту функцию) всё работает хорошо.
Пожалуйста, подскажите как решить проблему с доступом к буферу из мобильных версий telegram bot api webapp.