From 3275aff121a348622eb62d3a73c1970300b0dc01 Mon Sep 17 00:00:00 2001 From: TerryM Date: Fri, 5 Jun 2026 19:15:10 +0800 Subject: [PATCH] fix: hide download URL in in-app browser guide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stop exposing the internal /apnew/api/.../download URL in the guide. The dialog no longer renders the file URL or copies it to the clipboard; instead the user copies the current page link (window.location.href) and opens it in their system browser, then taps download again — which uses the real fetch+blob path. Updated step copy and intro in all 7 locales to match the new flow. --- src/components/InAppDownloadGuide.tsx | 30 +++++++++++---------------- src/locales/en.ts | 13 ++++++------ src/locales/id.ts | 14 +++++++------ src/locales/ja.ts | 15 +++++++------- src/locales/ko.ts | 15 +++++++------- src/locales/ms.ts | 13 ++++++------ src/locales/vi.ts | 14 +++++++------ src/locales/zh-CN.ts | 14 +++++++------ 8 files changed, 66 insertions(+), 62 deletions(-) diff --git a/src/components/InAppDownloadGuide.tsx b/src/components/InAppDownloadGuide.tsx index 65acbc5..04b63e2 100644 --- a/src/components/InAppDownloadGuide.tsx +++ b/src/components/InAppDownloadGuide.tsx @@ -47,13 +47,13 @@ export function InAppDownloadGuideProvider({ }) { const { t } = useI18n(); const { showToast } = useToast(); - const [detail, setDetail] = useState(null); + const [open, setOpen] = useState(false); useEffect(() => { const onShow = (event: Event) => { const ce = event as CustomEvent; if (!ce.detail) return; - setDetail(ce.detail); + setOpen(true); }; window.addEventListener(IN_APP_DOWNLOAD_GUIDE_EVENT, onShow); return () => @@ -61,19 +61,19 @@ export function InAppDownloadGuideProvider({ }, []); useEffect(() => { - if (!detail) return; + if (!open) return; const onKey = (event: KeyboardEvent) => { - if (event.key === "Escape") setDetail(null); + if (event.key === "Escape") setOpen(false); }; window.addEventListener("keydown", onKey); return () => window.removeEventListener("keydown", onKey); - }, [detail]); + }, [open]); - const close = () => setDetail(null); + const close = () => setOpen(false); - const handleCopy = async () => { - if (!detail) return; - const ok = await copyTextToClipboard(detail.url); + const handleCopyPageLink = async () => { + if (typeof window === "undefined") return; + const ok = await copyTextToClipboard(window.location.href); if (ok) { showToast(t("inAppDownloadCopied")); } else { @@ -89,7 +89,7 @@ export function InAppDownloadGuideProvider({ return ( <> {children} - {detail + {open ? createPortal(
-
-

- {detail.url} -

-
-
diff --git a/src/locales/en.ts b/src/locales/en.ts index ef79b74..177dfcd 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -266,15 +266,16 @@ export const enDict: Dict = { backToHome: "Back to Home", inAppDownloadTitle: "Please open in your system browser to download", inAppDownloadIntro: - "Your current in-app browser cannot download files. Copy the link below and open it in your system browser — the file will save directly.", + "Your current in-app browser cannot download files. Open this page in your system browser, then tap download again.", inAppDownloadIntroNamed: - "{browser} cannot download files directly. Copy the link below and open it in your system browser — the file will save directly.", + "{browser} cannot download files directly. Open this page in your system browser, then tap download again.", inAppDownloadStepCopy: - 'Tap "Copy link" below — that is the direct file download URL.', + 'Tap the menu (top-right) and choose "Open in default browser".', inAppDownloadStepOpen: - "Open your system browser (Safari, Chrome, etc.) and paste the link into the address bar.", + "If that option is missing, tap “Copy page link” below and open it in Safari, Chrome, or another browser.", inAppDownloadStepDownload: - "The file will start downloading to your downloads folder automatically.", - inAppDownloadCopied: "Link copied", + "Once the page opens in your system browser, tap the download button again to save the file.", + inAppDownloadCopyPageLink: "Copy page link", + inAppDownloadCopied: "Page link copied", inAppDownloadCopyFail: "Could not copy the link, please copy it manually", }; diff --git a/src/locales/id.ts b/src/locales/id.ts index 583f9b0..94442ba 100644 --- a/src/locales/id.ts +++ b/src/locales/id.ts @@ -269,14 +269,16 @@ export const idDict: Dict = { backToHome: "Kembali ke Beranda", inAppDownloadTitle: "Silakan buka di peramban sistem untuk mengunduh", inAppDownloadIntro: - "Peramban dalam aplikasi saat ini tidak dapat mengunduh berkas. Salin tautan di bawah dan buka di peramban sistem — berkas akan langsung tersimpan.", + "Peramban dalam aplikasi saat ini tidak dapat mengunduh berkas. Buka halaman ini di peramban sistem, lalu ketuk unduh lagi.", inAppDownloadIntroNamed: - "{browser} tidak dapat mengunduh berkas secara langsung. Salin tautan di bawah dan buka di peramban sistem — berkas akan langsung tersimpan.", + "{browser} tidak dapat mengunduh berkas secara langsung. Buka halaman ini di peramban sistem, lalu ketuk unduh lagi.", inAppDownloadStepCopy: - 'Ketuk "Salin tautan" di bawah (ini adalah URL unduhan langsung berkas).', + 'Buka menu di kanan atas dan pilih "Buka di peramban".', inAppDownloadStepOpen: - "Buka peramban sistem (Safari, Chrome, dll.) dan tempel tautan ke bilah alamat.", - inAppDownloadStepDownload: "Berkas akan otomatis terunduh ke folder Unduhan.", - inAppDownloadCopied: "Tautan disalin", + "Jika opsi itu tidak ada, ketuk “Salin tautan halaman” di bawah lalu buka di Safari, Chrome, dll.", + inAppDownloadStepDownload: + "Setelah halaman terbuka di peramban sistem, ketuk tombol unduh lagi untuk menyimpan berkas.", + inAppDownloadCopyPageLink: "Salin tautan halaman", + inAppDownloadCopied: "Tautan halaman disalin", inAppDownloadCopyFail: "Tidak dapat menyalin, silakan salin secara manual", }; diff --git a/src/locales/ja.ts b/src/locales/ja.ts index 2a7943c..34d44f4 100644 --- a/src/locales/ja.ts +++ b/src/locales/ja.ts @@ -270,14 +270,15 @@ export const jaDict: Dict = { backToHome: "ホームへ戻る", inAppDownloadTitle: "システムブラウザで開いてダウンロードしてください", inAppDownloadIntro: - "現在のアプリ内ブラウザではファイルをダウンロードできません。下のリンクをコピーし、システムブラウザで開けば自動的にダウンロードされます。", + "現在のアプリ内ブラウザはファイルをダウンロードできません。このページをシステムブラウザで開き、もう一度ダウンロードしてください。", inAppDownloadIntroNamed: - "{browser} のアプリ内ブラウザではファイルをダウンロードできません。下のリンクをコピーし、システムブラウザで開けば自動的にダウンロードされます。", - inAppDownloadStepCopy: - "下の「リンクをコピー」をタップします(ファイルの直接ダウンロード URL です)。", + "{browser} はファイルを直接ダウンロードできません。このページをシステムブラウザで開き、もう一度ダウンロードしてください。", + inAppDownloadStepCopy: "右上のメニューを開き、「ブラウザで開く」を選びます。", inAppDownloadStepOpen: - "システムブラウザ(Safari、Chrome など)を開き、アドレスバーにリンクを貼り付けます。", - inAppDownloadStepDownload: "ファイルは自動的にダウンロード先に保存されます。", - inAppDownloadCopied: "リンクをコピーしました", + "該当の項目がなければ、下の「ページリンクをコピー」をタップし、Safari や Chrome で開いてください。", + inAppDownloadStepDownload: + "システムブラウザでページが開いたら、もう一度ダウンロードボタンをタップしてファイルを保存します。", + inAppDownloadCopyPageLink: "ページリンクをコピー", + inAppDownloadCopied: "ページリンクをコピーしました", inAppDownloadCopyFail: "コピーに失敗しました。手動でコピーしてください", }; diff --git a/src/locales/ko.ts b/src/locales/ko.ts index 4e5b395..e60c7f2 100644 --- a/src/locales/ko.ts +++ b/src/locales/ko.ts @@ -265,14 +265,15 @@ export const koDict: Dict = { backToHome: "홈으로", inAppDownloadTitle: "시스템 브라우저에서 열어 다운로드하세요", inAppDownloadIntro: - "현재 앱 내 브라우저로는 파일을 다운로드할 수 없습니다. 아래 링크를 복사해서 시스템 브라우저에서 열면 바로 저장됩니다.", + "현재 앱 내 브라우저는 파일을 다운로드할 수 없습니다. 시스템 브라우저에서 이 페이지를 다시 열어 다운로드 버튼을 눌러 주세요.", inAppDownloadIntroNamed: - "{browser} 앱 내 브라우저로는 파일을 다운로드할 수 없습니다. 아래 링크를 복사해서 시스템 브라우저에서 열면 바로 저장됩니다.", - inAppDownloadStepCopy: - '아래의 "링크 복사"를 누릅니다(파일 직접 다운로드 주소입니다).', + "{browser}는 파일을 직접 다운로드할 수 없습니다. 시스템 브라우저에서 이 페이지를 다시 열어 다운로드 버튼을 눌러 주세요.", + inAppDownloadStepCopy: '오른쪽 위 메뉴에서 "브라우저로 열기"를 선택하세요.', inAppDownloadStepOpen: - "시스템 브라우저(Safari, Chrome 등)를 열고 주소창에 링크를 붙여 넣습니다.", - inAppDownloadStepDownload: "파일이 자동으로 다운로드 폴더에 저장됩니다.", - inAppDownloadCopied: "링크를 복사했습니다", + "해당 옵션이 없다면 아래 “페이지 링크 복사”를 눌러 Safari나 Chrome 등에서 여세요.", + inAppDownloadStepDownload: + "시스템 브라우저에서 페이지가 열리면 다운로드 버튼을 다시 눌러 파일을 저장하세요.", + inAppDownloadCopyPageLink: "페이지 링크 복사", + inAppDownloadCopied: "페이지 링크가 복사되었습니다", inAppDownloadCopyFail: "복사하지 못했습니다. 직접 복사해 주세요", }; diff --git a/src/locales/ms.ts b/src/locales/ms.ts index f3761fc..72282c6 100644 --- a/src/locales/ms.ts +++ b/src/locales/ms.ts @@ -268,15 +268,16 @@ export const msDict: Dict = { backToHome: "Kembali ke Laman Utama", inAppDownloadTitle: "Sila buka dalam pelayar sistem untuk muat turun", inAppDownloadIntro: - "Pelayar dalam aplikasi semasa tidak dapat memuat turun fail. Salin pautan di bawah dan buka dalam pelayar sistem — fail akan disimpan terus.", + "Pelayar dalam aplikasi semasa tidak dapat memuat turun fail. Buka halaman ini dalam pelayar sistem, kemudian ketik muat turun semula.", inAppDownloadIntroNamed: - "{browser} tidak dapat memuat turun fail secara langsung. Salin pautan di bawah dan buka dalam pelayar sistem — fail akan disimpan terus.", + "{browser} tidak dapat memuat turun fail secara langsung. Buka halaman ini dalam pelayar sistem, kemudian ketik muat turun semula.", inAppDownloadStepCopy: - 'Ketik "Salin pautan" di bawah (ini adalah URL muat turun fail terus).', + 'Buka menu di atas kanan dan pilih "Buka dalam pelayar".', inAppDownloadStepOpen: - "Buka pelayar sistem (Safari, Chrome, dsb.) dan tampal pautan ke bar alamat.", + "Jika pilihan tersebut tiada, ketik “Salin pautan halaman” di bawah dan buka dalam Safari, Chrome, dll.", inAppDownloadStepDownload: - "Fail akan dimuat turun secara automatik ke folder Muat Turun.", - inAppDownloadCopied: "Pautan disalin", + "Selepas halaman dibuka dalam pelayar sistem, ketik butang muat turun semula untuk menyimpan fail.", + inAppDownloadCopyPageLink: "Salin pautan halaman", + inAppDownloadCopied: "Pautan halaman disalin", inAppDownloadCopyFail: "Tidak dapat menyalin, sila salin secara manual", }; diff --git a/src/locales/vi.ts b/src/locales/vi.ts index 3e1d376..0c0d07d 100644 --- a/src/locales/vi.ts +++ b/src/locales/vi.ts @@ -264,14 +264,16 @@ export const viDict: Dict = { backToHome: "Về trang chủ", inAppDownloadTitle: "Vui lòng mở bằng trình duyệt hệ thống để tải", inAppDownloadIntro: - "Trình duyệt trong ứng dụng hiện tại không thể tải tệp. Sao chép liên kết bên dưới và mở trong trình duyệt hệ thống — tệp sẽ tự động tải về.", + "Trình duyệt trong ứng dụng hiện tại không thể tải tệp. Hãy mở trang này trong trình duyệt hệ thống rồi nhấn tải lại.", inAppDownloadIntroNamed: - "{browser} không thể tải tệp trực tiếp. Sao chép liên kết bên dưới và mở trong trình duyệt hệ thống — tệp sẽ tự động tải về.", + "{browser} không thể tải tệp trực tiếp. Hãy mở trang này trong trình duyệt hệ thống rồi nhấn tải lại.", inAppDownloadStepCopy: - 'Nhấn "Sao chép liên kết" bên dưới (đây là URL tải tệp trực tiếp).', + 'Mở menu ở góc trên bên phải và chọn "Mở trong trình duyệt".', inAppDownloadStepOpen: - "Mở trình duyệt hệ thống (Safari, Chrome…) và dán liên kết vào thanh địa chỉ.", - inAppDownloadStepDownload: "Tệp sẽ tự động tải xuống thư mục Tải về.", - inAppDownloadCopied: "Đã sao chép liên kết", + "Nếu không có lựa chọn đó, nhấn “Sao chép liên kết trang” bên dưới rồi mở trong Safari, Chrome,…", + inAppDownloadStepDownload: + "Khi trang được mở trong trình duyệt hệ thống, hãy nhấn lại nút tải để lưu tệp.", + inAppDownloadCopyPageLink: "Sao chép liên kết trang", + inAppDownloadCopied: "Đã sao chép liên kết trang", inAppDownloadCopyFail: "Không sao chép được, vui lòng tự sao chép", }; diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 356c09d..0e3fc85 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -247,13 +247,15 @@ export const zhDict: Dict = { backToHome: "返回首页", inAppDownloadTitle: "请使用系统浏览器打开后下载", inAppDownloadIntro: - "当前内置浏览器无法下载文件。复制下方链接,到系统浏览器打开即可直接下载。", + "当前内置浏览器无法下载文件。请在系统浏览器中打开本页面,然后再次点击下载按钮。", inAppDownloadIntroNamed: - "{browser} 内置浏览器无法下载文件。复制下方链接,到系统浏览器打开即可直接下载。", - inAppDownloadStepCopy: "点击下方「复制链接」(这是文件的直接下载地址)。", + "{browser} 内置浏览器无法下载文件。请在系统浏览器中打开本页面,然后再次点击下载按钮。", + inAppDownloadStepCopy: "点击右上角菜单,选择「在默认浏览器中打开」。", inAppDownloadStepOpen: - "打开系统浏览器(Safari、Chrome 等),把链接粘贴到地址栏。", - inAppDownloadStepDownload: "文件会自动开始下载到下载文件夹。", - inAppDownloadCopied: "链接已复制", + "如果没有该选项,可点击下方「复制页面链接」,再到 Safari、Chrome 等浏览器中打开。", + inAppDownloadStepDownload: + "系统浏览器打开页面后,再次点击下载按钮即可把文件保存到下载文件夹。", + inAppDownloadCopyPageLink: "复制页面链接", + inAppDownloadCopied: "页面链接已复制", inAppDownloadCopyFail: "复制失败,请手动复制", };