From 0ad4abecb087d03b4834a8cb1aa2e5cec4c28790 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sun, 12 Jul 2026 13:02:31 +0000 Subject: [PATCH] fix(app): isolate the F-Droid runtime flag --- packages/app/src/components/add-host-method-modal.tsx | 3 ++- packages/app/src/components/welcome-screen.tsx | 3 ++- packages/app/src/constants/build-profile.ts | 4 ++++ packages/app/src/constants/platform.ts | 4 ---- 4 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 packages/app/src/constants/build-profile.ts diff --git a/packages/app/src/components/add-host-method-modal.tsx b/packages/app/src/components/add-host-method-modal.tsx index b04d3ae0d7..2834fc29f9 100644 --- a/packages/app/src/components/add-host-method-modal.tsx +++ b/packages/app/src/components/add-host-method-modal.tsx @@ -4,7 +4,8 @@ import { Pressable, Text, View } from "react-native"; import { StyleSheet, useUnistyles } from "react-native-unistyles"; import { QrCode, Link2, ClipboardPaste } from "lucide-react-native"; import { AdaptiveModalSheet, type SheetHeader } from "./adaptive-modal-sheet"; -import { isFdroidBuild, isNative } from "@/constants/platform"; +import { isFdroidBuild } from "@/constants/build-profile"; +import { isNative } from "@/constants/platform"; const styles = StyleSheet.create((theme) => ({ option: { diff --git a/packages/app/src/components/welcome-screen.tsx b/packages/app/src/components/welcome-screen.tsx index 5f0b9386e7..b4f4e9d465 100644 --- a/packages/app/src/components/welcome-screen.tsx +++ b/packages/app/src/components/welcome-screen.tsx @@ -15,7 +15,8 @@ import { formatVersionWithPrefix } from "@/desktop/updates/desktop-updates"; import { buildOpenProjectRoute } from "@/utils/host-routes"; import { PaseoLogo } from "@/components/icons/paseo-logo"; import { openExternalUrl } from "@/utils/open-external-url"; -import { isFdroidBuild, isWeb, isNative } from "@/constants/platform"; +import { isFdroidBuild } from "@/constants/build-profile"; +import { isWeb, isNative } from "@/constants/platform"; interface WelcomeAction { key: "scan-qr" | "direct-connection" | "paste-pairing-link"; diff --git a/packages/app/src/constants/build-profile.ts b/packages/app/src/constants/build-profile.ts new file mode 100644 index 0000000000..99f57dd670 --- /dev/null +++ b/packages/app/src/constants/build-profile.ts @@ -0,0 +1,4 @@ +import Constants from "expo-constants"; + +/** F-Droid build without proprietary camera, notification, or OTA dependencies. */ +export const isFdroidBuild = Constants.expoConfig?.extra?.fdroidBuild === true; diff --git a/packages/app/src/constants/platform.ts b/packages/app/src/constants/platform.ts index 3cb19680be..f70f78f6c5 100644 --- a/packages/app/src/constants/platform.ts +++ b/packages/app/src/constants/platform.ts @@ -1,4 +1,3 @@ -import Constants from "expo-constants"; import { Platform } from "react-native"; import { isElectronRuntime, isElectronRuntimeMac } from "@/desktop/host"; @@ -29,9 +28,6 @@ export const isNative = Platform.OS !== "web"; /** Development build/runtime — true in Metro dev bundles, false in production. */ export const isDev = Boolean((globalThis as { __DEV__?: boolean }).__DEV__); -/** F-Droid build without proprietary camera, notification, or OTA dependencies. */ -export const isFdroidBuild = Constants.expoConfig?.extra?.fdroidBuild === true; - // --------------------------------------------------------------------------- // Electron detection (cached — only caches `true`, keeps checking if false // because the desktop bridge may load after initial module evaluation)