fix(game): own export chooser modal; PNG option outside in-app webviews only
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 59s
CI / conformance (pull_request) Successful in 9s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m26s
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Has been skipped
CI / integration (pull_request) Has been skipped
CI / ui (pull_request) Successful in 59s
CI / conformance (pull_request) Successful in 9s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m26s
Telegram's native showPopup delivers its callback with no user activation, so navigator.share (TG iOS) and clipboard writes (TG Android GCG copy) silently fail from it — the chooser is now always the app's own modal, keeping the button click's gesture alive for the delivery APIs. The data:URL preview modal is dropped: the Android TG/VK long-press menu mangles data: URLs (dead download, black-screen open, base64 clipboard garbage), so a binary PNG has no working client-side route in those webviews at all. The image option is withheld there until the server-rendered signed-URL delivery (Telegram downloadFile / VKWebAppDownloadFile) lands; the plain web and mobile browsers keep it. On-device findings by the owner on the test contour (TG iOS, TG Android, VK Android).
This commit is contained in:
@@ -331,8 +331,9 @@ Telegram.
|
||||
**двух форматах за одной кнопкой 📤** — файл GCG и отрисованная **PNG-картинка**
|
||||
финальной позиции; экспорт доступен **только после завершения партии** и никогда —
|
||||
для тренировочной партии с ИИ (экспорт идущей партии раскрыл бы журнал ходов, а
|
||||
партия с ИИ одноразовая). Выбор формата — нативный диалог там, где платформа его
|
||||
даёт (попап Telegram), иначе собственный модал приложения.
|
||||
партия с ИИ одноразовая). Выбор формата — всегда **собственный модал** приложения,
|
||||
сознательно не нативный попап Telegram: его коллбек приходит без user activation и
|
||||
молча ломает доставку через share/буфер, к которой ведёт выбор.
|
||||
|
||||
**Картинка** рендерится на клиенте (Canvas 2D, всегда светлая тема): финальная
|
||||
доска с классическими осями координат A..O / 1..15 слева — бонус-клетки чистой
|
||||
@@ -350,11 +351,12 @@ Telegram.
|
||||
Доставка по форматам: файлом **GCG** клиент делится через Web Share там, где
|
||||
платформа это поддерживает; в Android-приложении (Telegram / VK), где нет ни Web
|
||||
Share, ни рабочей загрузки файла, копирует текст GCG в буфер обмена (с
|
||||
подтверждающим тостом); иначе скачивает файл. **PNG** делится и скачивается так
|
||||
же, где возможно, но у бинарной картинки нет текстового фолбэка через буфер — в
|
||||
этих встроенных webview (и в десктопном iframe VK) вместо него **модал-превью**:
|
||||
картинка с подсказкой «долгое нажатие / правый клик — сохранить» и кнопкой
|
||||
копирования картинки там, где есть clipboard-image API. Статистика (только у постоянных аккаунтов):
|
||||
подтверждающим тостом); иначе скачивает файл. **PNG** делится и скачивается так же,
|
||||
но у бинарной картинки нет текстового фолбэка через буфер вовсе — поэтому пункт
|
||||
«картинка» пока **скрыт во встроенных webview** (Telegram / VK) и предлагается
|
||||
только в обычном вебе и мобильных браузерах; туда он вернётся с серверным рендером
|
||||
и доставкой по подписанному URL (Telegram `downloadFile` /
|
||||
`VKWebAppDownloadFile`). Статистика (только у постоянных аккаунтов):
|
||||
победы, поражения, ничьи, макс. очков за партию и макс. очков за один ход (лучший
|
||||
ход, уже включающий все образованные им слова и бонус за все фишки). Также
|
||||
показываются **число ходов** игрока (его выкладки — пасы и обмены не считаются) и
|
||||
|
||||
Reference in New Issue
Block a user