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 "無法開啟這個頁面"