diff --git a/apps/mobile/app/(authenticated)/_layout.tsx b/apps/mobile/app/(authenticated)/_layout.tsx
index 34b15a67067..7beee0e9ce3 100644
--- a/apps/mobile/app/(authenticated)/_layout.tsx
+++ b/apps/mobile/app/(authenticated)/_layout.tsx
@@ -104,6 +104,10 @@ export default function AuthenticatedLayout() {
name="workspace/[id]/file"
options={{ ...glassHeaderOptions, title: "" }}
/>
+
{});
router.replace("/(auth)/sign-in");
} catch (error) {
console.error("[auth/signOut] Failed to sign out:", error);
diff --git a/apps/mobile/screens/(authenticated)/components/ContentImage/ContentImage.tsx b/apps/mobile/screens/(authenticated)/components/ContentImage/ContentImage.tsx
new file mode 100644
index 00000000000..e8e05540417
--- /dev/null
+++ b/apps/mobile/screens/(authenticated)/components/ContentImage/ContentImage.tsx
@@ -0,0 +1,34 @@
+import { Image as ExpoImage, type ImageProps } from "expo-image";
+import { withUniwind } from "uniwind";
+
+const StyledImage = withUniwind(ExpoImage);
+
+interface ContentImageProps extends Omit {
+ url: string | null | undefined;
+ /**
+ * The server's storage key for the bytes, when it names one
+ * (`Superset-Storage-Key`, `storageKey` in API responses). It becomes the
+ * disk-cache key, so a rotated ticket in the URL is never a fresh
+ * download.
+ */
+ storageKey?: string | null;
+ className?: string;
+}
+
+/** Every remote image the app renders goes through here, cached by identity, not URL. */
+export function ContentImage({
+ url,
+ storageKey,
+ className,
+ ...props
+}: ContentImageProps) {
+ if (!url) return null;
+ return (
+
+ );
+}
diff --git a/apps/mobile/screens/(authenticated)/components/ContentImage/index.ts b/apps/mobile/screens/(authenticated)/components/ContentImage/index.ts
new file mode 100644
index 00000000000..88f97214a52
--- /dev/null
+++ b/apps/mobile/screens/(authenticated)/components/ContentImage/index.ts
@@ -0,0 +1 @@
+export { ContentImage } from "./ContentImage";
diff --git a/apps/mobile/screens/(authenticated)/components/OrganizationAvatar/OrganizationAvatar.tsx b/apps/mobile/screens/(authenticated)/components/OrganizationAvatar/OrganizationAvatar.tsx
index da8313e052f..1faceae600f 100644
--- a/apps/mobile/screens/(authenticated)/components/OrganizationAvatar/OrganizationAvatar.tsx
+++ b/apps/mobile/screens/(authenticated)/components/OrganizationAvatar/OrganizationAvatar.tsx
@@ -1,7 +1,7 @@
-import { Image } from "expo-image";
import { View } from "react-native";
import { Text } from "@/components/ui/text";
import { useTheme } from "@/hooks/useTheme";
+import { ContentImage } from "../ContentImage";
export function OrganizationAvatar({
name,
@@ -20,10 +20,7 @@ export function OrganizationAvatar({
className="overflow-hidden rounded-md border border-foreground/10 bg-muted"
style={{ width: size, height: size }}
>
-
+
);
}
diff --git a/apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx b/apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
new file mode 100644
index 00000000000..c43ff5b1296
--- /dev/null
+++ b/apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
@@ -0,0 +1,81 @@
+import { useLingui } from "@lingui/react/macro";
+import { useQuery } from "@tanstack/react-query";
+import { Stack, useLocalSearchParams } from "expo-router";
+import { ActivityIndicator, Linking, View } from "react-native";
+import { WebView } from "react-native-webview";
+import { withUniwind } from "uniwind";
+import { Text } from "@/components/ui/text";
+import { apiClient } from "@/lib/trpc/client";
+
+const StyledWebView = withUniwind(WebView);
+
+// A ticket is stable within its window (an hour for the served alias), so
+// reopening the page inside it reuses the URL — and WebKit's cache — instead
+// of minting a fresh one.
+const VIEW_URL_STALE_MS = 55 * 60 * 1000;
+
+/**
+ * A published page, loaded top-level from its own origin: its storage, CSP
+ * and video playback work exactly as on the web, cached by WebKit. The
+ * ticket rides the URL's path, so the WebView needs no headers and no
+ * cookies. Navigation stays on the page's origin; anything else opens in
+ * the browser.
+ */
+export function PageViewerScreen() {
+ const { t } = useLingui();
+ const { id } = useLocalSearchParams<{ id: string }>();
+
+ const page = useQuery({
+ queryKey: ["cloud", "page", "get", id],
+ enabled: !!id,
+ staleTime: VIEW_URL_STALE_MS,
+ networkMode: "always",
+ queryFn: () => apiClient.page.get.query({ id: id as string }),
+ });
+
+ const viewUrl = page.data?.viewUrl;
+ const pageOrigin = viewUrl ? new URL(viewUrl).origin : null;
+
+ return (
+
+
+ {page.isError ? (
+
+
+ {t({
+ id: "dashboard.pageViewer.pageOpenFailedTitle",
+ message: "This page could not be opened",
+ })}
+
+
+ {t({
+ id: "dashboard.pageViewer.pageMissingDescription",
+ message:
+ "It may have been deleted, or it belongs to another organization.",
+ })}
+
+
+ ) : viewUrl ? (
+ {
+ if (pageOrigin && request.url.startsWith(pageOrigin)) return true;
+ if (request.url.startsWith("about:")) return true;
+ void Linking.openURL(request.url).catch(() => {});
+ return false;
+ }}
+ webviewDebuggingEnabled={__DEV__}
+ />
+ ) : (
+
+
+
+ )}
+
+ );
+}
diff --git a/apps/mobile/screens/(authenticated)/page/[id]/index.ts b/apps/mobile/screens/(authenticated)/page/[id]/index.ts
new file mode 100644
index 00000000000..947ebfc8d35
--- /dev/null
+++ b/apps/mobile/screens/(authenticated)/page/[id]/index.ts
@@ -0,0 +1 @@
+export { PageViewerScreen } from "./PageViewerScreen";
diff --git a/apps/mobile/screens/RootLayout/RootLayout.tsx b/apps/mobile/screens/RootLayout/RootLayout.tsx
index c4f0228769c..3c219e4ab38 100644
--- a/apps/mobile/screens/RootLayout/RootLayout.tsx
+++ b/apps/mobile/screens/RootLayout/RootLayout.tsx
@@ -6,6 +6,7 @@ import {
QueryClient,
QueryClientProvider,
} from "@tanstack/react-query";
+import { Image } from "expo-image";
import { getLocales } from "expo-localization";
import { Stack } from "expo-router";
import { ThemeProvider } from "expo-router/react-navigation";
@@ -17,6 +18,11 @@ import { NAV_THEME } from "@/lib/theme";
Uniwind.setTheme("dark");
+// Bound the image disk cache (default is unlimited) so page thumbnails and
+// attachments cannot grow without limit; ContentImage keys entries by
+// storage key, so rotated ticket URLs never duplicate bytes.
+void Image.configureCache({ maxDiskSize: 512 * 1024 * 1024 });
+
import { PostHogUserIdentifier } from "./components/PostHogUserIdentifier";
import { PostHogProvider } from "./providers/PostHogProvider";
diff --git a/packages/i18n/locales/cs/messages.po b/packages/i18n/locales/cs/messages.po
index 350481004a9..bae46fcfba8 100644
--- a/packages/i18n/locales/cs/messages.po
+++ b/packages/i18n/locales/cs/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Stránky"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Mohla být smazána nebo patří jiné organizaci."
@@ -6156,6 +6157,7 @@ msgstr "Tato stránka už neexistuje"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Tuto stránku se nepodařilo otevřít"
diff --git a/packages/i18n/locales/de/messages.po b/packages/i18n/locales/de/messages.po
index 44618611a06..fe5a9ee81da 100644
--- a/packages/i18n/locales/de/messages.po
+++ b/packages/i18n/locales/de/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Seiten"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Sie wurde möglicherweise gelöscht oder gehört zu einer anderen Organisation."
@@ -6156,6 +6157,7 @@ msgstr "Diese Seite existiert nicht mehr"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Diese Seite konnte nicht geöffnet werden"
diff --git a/packages/i18n/locales/en/messages.po b/packages/i18n/locales/en/messages.po
index 18e4a8cdedc..7242c94e258 100644
--- a/packages/i18n/locales/en/messages.po
+++ b/packages/i18n/locales/en/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Pages"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "It may have been deleted, or it belongs to another organization."
@@ -6156,6 +6157,7 @@ msgstr "This page no longer exists"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "This page could not be opened"
diff --git a/packages/i18n/locales/es/messages.po b/packages/i18n/locales/es/messages.po
index cb2289b59f8..67ebb0dc018 100644
--- a/packages/i18n/locales/es/messages.po
+++ b/packages/i18n/locales/es/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Páginas"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Puede que se haya eliminado o que pertenezca a otra organización."
@@ -6156,6 +6157,7 @@ msgstr "Esta página ya no existe"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "No se pudo abrir esta página"
diff --git a/packages/i18n/locales/fr/messages.po b/packages/i18n/locales/fr/messages.po
index ea8914ddf8b..9b93cd7b348 100644
--- a/packages/i18n/locales/fr/messages.po
+++ b/packages/i18n/locales/fr/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Pages"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Elle a peut-être été supprimée, ou elle appartient à une autre organisation."
@@ -6156,6 +6157,7 @@ msgstr "Cette page n'existe plus"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Impossible d'ouvrir cette page"
diff --git a/packages/i18n/locales/id/messages.po b/packages/i18n/locales/id/messages.po
index 6858492218a..8fff60ac564 100644
--- a/packages/i18n/locales/id/messages.po
+++ b/packages/i18n/locales/id/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Halaman"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Mungkin sudah dihapus, atau milik organisasi lain."
@@ -6156,6 +6157,7 @@ msgstr "Halaman ini sudah tidak ada"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Halaman ini tidak bisa dibuka"
diff --git a/packages/i18n/locales/it/messages.po b/packages/i18n/locales/it/messages.po
index 462c5734ace..e1717915f35 100644
--- a/packages/i18n/locales/it/messages.po
+++ b/packages/i18n/locales/it/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Pagine"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Potrebbe essere stata eliminata oppure appartiene a un'altra organizzazione."
@@ -6156,6 +6157,7 @@ msgstr "Questa pagina non esiste più"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Impossibile aprire questa pagina"
diff --git a/packages/i18n/locales/ja/messages.po b/packages/i18n/locales/ja/messages.po
index 14c31ba5024..9246cff819c 100644
--- a/packages/i18n/locales/ja/messages.po
+++ b/packages/i18n/locales/ja/messages.po
@@ -6146,6 +6146,7 @@ msgstr "ページ"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "削除されたか、別の組織に属している可能性があります。"
@@ -6156,6 +6157,7 @@ msgstr "このページは存在しません"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "このページを開けませんでした"
diff --git a/packages/i18n/locales/ko/messages.po b/packages/i18n/locales/ko/messages.po
index 0c6714a674d..9945fa726d1 100644
--- a/packages/i18n/locales/ko/messages.po
+++ b/packages/i18n/locales/ko/messages.po
@@ -6146,6 +6146,7 @@ msgstr "페이지"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "삭제되었거나 다른 조직에 속한 페이지일 수 있습니다."
@@ -6156,6 +6157,7 @@ msgstr "이 페이지는 더 이상 존재하지 않습니다"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "이 페이지를 열 수 없습니다"
diff --git a/packages/i18n/locales/nl/messages.po b/packages/i18n/locales/nl/messages.po
index 96ec6d80fbe..a374c8608a4 100644
--- a/packages/i18n/locales/nl/messages.po
+++ b/packages/i18n/locales/nl/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Pagina's"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Mogelijk is die verwijderd, of hoort die bij een andere organisatie."
@@ -6156,6 +6157,7 @@ msgstr "Deze pagina bestaat niet meer"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Deze pagina kon niet worden geopend"
diff --git a/packages/i18n/locales/pl/messages.po b/packages/i18n/locales/pl/messages.po
index 1728fa7f0ac..402997be6c7 100644
--- a/packages/i18n/locales/pl/messages.po
+++ b/packages/i18n/locales/pl/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Strony"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Mogła zostać usunięta lub należy do innej organizacji."
@@ -6156,6 +6157,7 @@ msgstr "Ta strona już nie istnieje"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Nie udało się otworzyć tej strony"
diff --git a/packages/i18n/locales/pt-BR/messages.po b/packages/i18n/locales/pt-BR/messages.po
index 6f80607c594..98c9a81fac2 100644
--- a/packages/i18n/locales/pt-BR/messages.po
+++ b/packages/i18n/locales/pt-BR/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Páginas"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Ela pode ter sido excluída ou pertence a outra organização."
@@ -6156,6 +6157,7 @@ msgstr "Esta página não existe mais"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Não foi possível abrir esta página"
diff --git a/packages/i18n/locales/ru/messages.po b/packages/i18n/locales/ru/messages.po
index 356ec0dcaaa..97162df2834 100644
--- a/packages/i18n/locales/ru/messages.po
+++ b/packages/i18n/locales/ru/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Страницы"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Возможно, она удалена или принадлежит другой организации."
@@ -6156,6 +6157,7 @@ msgstr "Этой страницы больше нет"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Не удалось открыть эту страницу"
diff --git a/packages/i18n/locales/tr/messages.po b/packages/i18n/locales/tr/messages.po
index 00f362ea7cb..a9bbc3fba50 100644
--- a/packages/i18n/locales/tr/messages.po
+++ b/packages/i18n/locales/tr/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Sayfalar"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Silinmiş olabilir veya başka bir kuruluşa ait olabilir."
@@ -6156,6 +6157,7 @@ msgstr "Bu sayfa artık mevcut değil"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Bu sayfa açılamadı"
diff --git a/packages/i18n/locales/vi/messages.po b/packages/i18n/locales/vi/messages.po
index f7721d8d21f..bb87d6983a3 100644
--- a/packages/i18n/locales/vi/messages.po
+++ b/packages/i18n/locales/vi/messages.po
@@ -6146,6 +6146,7 @@ msgstr "Trang"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "Có thể nó đã bị xóa, hoặc thuộc về một tổ chức khác."
@@ -6156,6 +6157,7 @@ msgstr "Trang này không còn tồn tại"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "Không thể mở trang này"
diff --git a/packages/i18n/locales/zh-CN/messages.po b/packages/i18n/locales/zh-CN/messages.po
index d464acffb28..d11a767ebf3 100644
--- a/packages/i18n/locales/zh-CN/messages.po
+++ b/packages/i18n/locales/zh-CN/messages.po
@@ -6146,6 +6146,7 @@ msgstr "页面"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "它可能已被删除,或属于另一个组织。"
@@ -6156,6 +6157,7 @@ msgstr "这个页面已不存在"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "无法打开这个页面"
diff --git a/packages/i18n/locales/zh-TW/messages.po b/packages/i18n/locales/zh-TW/messages.po
index 6a0ee87691b..aec5cf3ca63 100644
--- a/packages/i18n/locales/zh-TW/messages.po
+++ b/packages/i18n/locales/zh-TW/messages.po
@@ -6146,6 +6146,7 @@ msgstr "頁面"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageMissingDescription"
msgstr "它可能已被刪除,或屬於另一個組織。"
@@ -6156,6 +6157,7 @@ msgstr "這個頁面已不存在"
#. js-lingui-explicit-id
#: ../../apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/PageViewer/PageViewer.tsx
+#: ../../apps/mobile/screens/(authenticated)/page/[id]/PageViewerScreen.tsx
msgid "dashboard.pageViewer.pageOpenFailedTitle"
msgstr "無法開啟這個頁面"