diff --git a/src/components/admin/remnawave/GeoCheckModal.tsx b/src/components/admin/remnawave/GeoCheckModal.tsx index 33d6fe3..0bd6a32 100644 --- a/src/components/admin/remnawave/GeoCheckModal.tsx +++ b/src/components/admin/remnawave/GeoCheckModal.tsx @@ -32,7 +32,11 @@ export function GeoCheckModal({ node, onClose }: GeoCheckModalProps) { // В Mini App окно Telegram и так занимает экран целиком: отдельный // полноэкранный режим там только снимал отступы и залезал под хром. - const canFullscreen = !useIsTelegram(); + // Тот же признак закрывает и скачивание: в webview Telegram оно уводит + // из приложения вместо сохранения файла. + const isTelegram = useIsTelegram(); + const canFullscreen = !isTelegram; + const canDownload = !isTelegram; const fullscreen = canFullscreen && fullscreenRequested; const job = useGeoCheckJob(node.uuid); @@ -218,6 +222,7 @@ export function GeoCheckModal({ node, onClose }: GeoCheckModalProps) { nodeName={node.name} fullscreen={fullscreen} canFullscreen={canFullscreen} + canDownload={canDownload} onToggleFullscreen={() => setFullscreenRequested((v) => !v)} onRerun={job.retry} /> diff --git a/src/components/admin/remnawave/GeoCheckReport.tsx b/src/components/admin/remnawave/GeoCheckReport.tsx index c1894af..f3a8f03 100644 --- a/src/components/admin/remnawave/GeoCheckReport.tsx +++ b/src/components/admin/remnawave/GeoCheckReport.tsx @@ -30,6 +30,14 @@ interface GeoCheckReportProps { * во весь экран — режим лишь снимал отступы и лез под хром Telegram. */ canFullscreen: boolean; + /** + * Показывать ли скачивание. В webview Telegram атрибут `download` + * игнорируется: вместо сохранения файла webview уходит на blob и подменяет + * собой Mini App, вернуться можно только кнопкой «Назад». Штатный + * `downloadFile` из Bot API 8.0 тут не помогает — он требует HTTPS-ссылку + * на файл, а отчёт приходит base64 внутри JSON. + */ + canDownload: boolean; onToggleFullscreen: () => void; onRerun: () => void; } @@ -48,6 +56,7 @@ export function GeoCheckReport({ nodeName, fullscreen, canFullscreen, + canDownload, onToggleFullscreen, onRerun, }: GeoCheckReportProps) { @@ -170,16 +179,18 @@ export function GeoCheckReport({ )} - + {canDownload && ( + + )}