@adminide-stack/yantra-mobile 12.0.38 → 12.0.39-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/lib/components/NavigationHeader/NavigationHeader.js +6 -2
  2. package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
  3. package/lib/features/templates/buildTemplateCards.js +150 -0
  4. package/lib/features/templates/buildTemplateCards.js.map +1 -0
  5. package/lib/features/templates/buildTemplateCards.ts +203 -0
  6. package/lib/features/templates/index.ts +1 -0
  7. package/lib/hooks/mintSurfaceSystemToken.js +1 -1
  8. package/lib/hooks/mintSurfaceSystemToken.js.map +1 -1
  9. package/lib/hooks/useCdecliAutoConnect.js +1 -1
  10. package/lib/hooks/useCdecliAutoConnect.js.map +1 -1
  11. package/lib/hooks/useMarketplaceTemplateCards.js +32 -0
  12. package/lib/hooks/useMarketplaceTemplateCards.js.map +1 -0
  13. package/lib/hooks/useMarketplaceTemplateGroups.js +32 -0
  14. package/lib/hooks/useMarketplaceTemplateGroups.js.map +1 -0
  15. package/lib/hooks/useObtainSystemToken.js +1 -1
  16. package/lib/hooks/useObtainSystemToken.js.map +1 -1
  17. package/lib/hooks/usePrerequisiteIds.js +29 -2
  18. package/lib/hooks/usePrerequisiteIds.js.map +1 -1
  19. package/lib/screens/Home/HomeScreen.js +164 -50
  20. package/lib/screens/Home/HomeScreen.js.map +1 -1
  21. package/lib/screens/Home/components/BuildTemplatesSection.js +156 -0
  22. package/lib/screens/Home/components/BuildTemplatesSection.js.map +1 -0
  23. package/lib/screens/Home/components/WebBuilderPrewarm.js +83 -0
  24. package/lib/screens/Home/components/WebBuilderPrewarm.js.map +1 -0
  25. package/lib/screens/WebBuilder/WebViewWithNavigation.js +4 -1
  26. package/lib/screens/WebBuilder/WebViewWithNavigation.js.map +1 -1
  27. package/lib/screens/WebBuilder/index.js +142 -36
  28. package/lib/screens/WebBuilder/index.js.map +1 -1
  29. package/lib/screens/WebBuilder/webbuilderBackHandler.js +11 -0
  30. package/lib/screens/WebBuilder/webbuilderBackHandler.js.map +1 -0
  31. package/lib/screens/WebBuilder/webbuilderWarmCache.js +84 -0
  32. package/lib/screens/WebBuilder/webbuilderWarmCache.js.map +1 -0
  33. package/lib/utils/cdecodeUri.js +11 -1
  34. package/lib/utils/cdecodeUri.js.map +1 -1
  35. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/screens/WebBuilder/index.tsx"],"sourcesContent":["/**\n * WebBuilder — native shell hosting the webbuilder-surface WebView.\n *\n * Mints the org system JWT (same as CDeCLI) and hands it to the surface via\n * `?token=&state=` (SurfaceLoginGate.captureLoginCallback) + localStorage\n * `cdecli_token`, so the standalone \"Sign in with Yantra\" gate is skipped.\n */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n ActivityIndicator,\n AppState,\n type AppStateStatus,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n useColorScheme,\n View,\n} from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\nimport {\n WebView,\n type WebViewMessageEvent,\n type WebViewNavigation,\n type WebViewErrorEvent,\n type WebViewHttpErrorEvent,\n} from 'react-native-webview';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { config } from '../../config/env-config';\nimport { mobileTokens } from '../../theme/mobileTokens';\nimport {\n AnalyticsBridgeHandler,\n AuthBridgeHandler,\n getPackagerHost,\n NativeWebViewBridge,\n NavigationBridgeHandler,\n resolveMobileWebUrl,\n WEB_BRIDGE_BOOTSTRAP,\n WebViewManager,\n} from '../../bridge';\nimport {\n appendSurfaceAuthParams,\n buildCdecliTokenInjection,\n buildSurfaceGateRecoveryScript,\n} from '../../hooks/mintSurfaceSystemToken';\nimport { useObtainSystemToken } from '../../hooks/useObtainSystemToken';\nimport { usePrerequisiteIds } from '../../hooks/usePrerequisiteIds';\nimport { WebViewWithNavigation } from './WebViewWithNavigation';\n\nexport type MicroFrontendCachePolicy = 'default' | 'reload' | 'cache-else-load';\n\nexport interface MicroFrontendConfig {\n url: string;\n preload?: boolean;\n cachePolicy?: MicroFrontendCachePolicy;\n}\n\nexport interface WebBuilderRouteParams {\n orgName?: string | null;\n /** Optional override URL; defaults to WEB_BUILDER_URL from env. */\n url?: string | null;\n /** Channel to open / continue in the surface (`?channelId=`). */\n channelId?: string | null;\n /** Yantra project UUID (`?projectId=`). Defaults to channelId on the surface if omitted. */\n projectId?: string | null;\n /** Optional first Agent prompt to auto-send after hydrate (`?message=`). */\n message?: string | null;\n}\n\nfunction makeHandoffState(): string {\n return `mobile-webview-${Date.now().toString(36)}`;\n}\n\nexport default function WebBuilderScreen() {\n const navigation = useNavigation<any>();\n const route = useRoute<any>();\n const colorScheme = useColorScheme();\n const isDark = colorScheme === 'dark';\n\n const webViewRef = useRef<WebView>(null);\n const bridgeRef = useRef<NativeWebViewBridge | null>(null);\n\n const [isLoading, setIsLoading] = useState(true);\n const [hasError, setHasError] = useState(false);\n const [errorDetail, setErrorDetail] = useState<string | null>(null);\n const [canGoBack, setCanGoBack] = useState(false);\n const [reloadKey, setReloadKey] = useState(0);\n const [authToken, setAuthToken] = useState<string | null>(null);\n const [authBackend, setAuthBackend] = useState<string | null>(null);\n const [authState, setAuthState] = useState<string>(() => makeHandoffState());\n const [authReady, setAuthReady] = useState(false);\n const [authError, setAuthError] = useState<string | null>(null);\n const [mintGeneration, setMintGeneration] = useState(0);\n\n const { orgName, projectId, tagId } = usePrerequisiteIds();\n // Same Apollo session the rest of the app uses (web harness pastes this JWT).\n // Raw fetch + SecureStore Auth0 Bearer gets 401 on local GraphQL; Apollo does not.\n const { obtainSystemToken, loading: systemTokenQueryLoading } = useObtainSystemToken(true);\n\n const packagerHost = getPackagerHost();\n\n const handoffParams = useMemo(() => {\n const params = route?.params as WebBuilderRouteParams | undefined;\n const channelId = typeof params?.channelId === 'string' ? params.channelId.trim() : '';\n const projectIdParam = typeof params?.projectId === 'string' ? params.projectId.trim() : '';\n const message = typeof params?.message === 'string' ? params.message.trim() : '';\n return {\n channelId: channelId || null,\n projectId: projectIdParam || null,\n message: message || null,\n };\n }, [route?.params]);\n\n const baseUrl = useMemo(() => {\n const fromParams = (route?.params as WebBuilderRouteParams | undefined)?.url;\n const raw = typeof fromParams === 'string' && fromParams.trim() ? fromParams.trim() : config.WEB_BUILDER_URL;\n const resolved = resolveMobileWebUrl(raw, packagerHost);\n // Stamp Chat → Build handoff before auth params so the surface can deep-link.\n if (!handoffParams.channelId && !handoffParams.message) return resolved;\n try {\n const url = new URL(resolved);\n if (handoffParams.channelId) url.searchParams.set('channelId', handoffParams.channelId);\n if (handoffParams.projectId) url.searchParams.set('projectId', handoffParams.projectId);\n if (handoffParams.message) url.searchParams.set('message', handoffParams.message);\n return url.toString();\n } catch {\n const sep = resolved.includes('?') ? '&' : '?';\n const parts: string[] = [];\n if (handoffParams.channelId) parts.push(`channelId=${encodeURIComponent(handoffParams.channelId)}`);\n if (handoffParams.projectId) parts.push(`projectId=${encodeURIComponent(handoffParams.projectId)}`);\n if (handoffParams.message) parts.push(`message=${encodeURIComponent(handoffParams.message)}`);\n return parts.length ? `${resolved}${sep}${parts.join('&')}` : resolved;\n }\n }, [route?.params, packagerHost, handoffParams]);\n\n /** Same GRAPHQL_URL the rest of the app uses — rewritten for device LAN. */\n const graphqlUrl = useMemo(() => resolveMobileWebUrl(config.GRAPHQL_URL, packagerHost), [packagerHost]);\n\n useEffect(() => {\n let cancelled = false;\n setAuthReady(false);\n setAuthError(null);\n const handoffState = makeHandoffState();\n setAuthState(handoffState);\n\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.log('[WebBuilder] surface=', baseUrl, 'graphql=', graphqlUrl);\n }\n\n // Wait for org/project (and initial GetUserSystemToken) so create/reveal can succeed.\n if (systemTokenQueryLoading) {\n return () => {\n cancelled = true;\n };\n }\n\n (async () => {\n try {\n const token = await obtainSystemToken();\n if (cancelled) return;\n if (!token?.trim()) {\n throw new Error(\n 'Could not obtain system token via Apollo. Ensure org/project are set (same as chat).',\n );\n }\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.log('[WebBuilder] Apollo system token length=', token.length);\n }\n setAuthToken(token.trim());\n setAuthBackend(graphqlUrl);\n setAuthReady(true);\n } catch (err) {\n if (cancelled) return;\n const message = err instanceof Error ? err.message : 'Token mint failed';\n // eslint-disable-next-line no-console\n console.warn('[WebBuilder] surface token mint failed:', message);\n setAuthError(message);\n setAuthToken(null);\n setAuthBackend(null);\n setAuthReady(true);\n }\n })();\n\n return () => {\n cancelled = true;\n };\n }, [baseUrl, graphqlUrl, obtainSystemToken, systemTokenQueryLoading, orgName, projectId, tagId, mintGeneration]);\n\n const mfeUrl = useMemo(() => {\n if (!authToken) return baseUrl;\n return appendSurfaceAuthParams(baseUrl, authToken, authState);\n }, [baseUrl, authToken, authState]);\n\n const injectedBeforeContent = useMemo(() => {\n const parts = [WEB_BRIDGE_BOOTSTRAP];\n if (authToken && authBackend) {\n parts.unshift(buildCdecliTokenInjection(authToken, authBackend, authState));\n }\n return parts.join('\\n');\n }, [authToken, authBackend, authState]);\n\n /** If the SPA still shows the login gate after load, force one handoff reload. */\n const reinjectAfterLoad = useMemo(() => {\n if (!authToken || !authBackend) return undefined;\n return buildSurfaceGateRecoveryScript(authToken, authBackend, authState);\n }, [authToken, authBackend, authState]);\n\n const mfeConfig: MicroFrontendConfig = useMemo(\n () => ({\n url: mfeUrl,\n cachePolicy: 'default',\n }),\n [mfeUrl],\n );\n\n const webViewManager = WebViewManager.getInstance();\n const surfaceColor = isDark ? '#0f172a' : mobileTokens.color.surface;\n const textColor = isDark ? '#f8fafc' : mobileTokens.color.text;\n const mutedColor = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n\n // Bridge + service handlers\n useEffect(() => {\n const bridge = new NativeWebViewBridge(webViewRef);\n bridgeRef.current = bridge;\n // eslint-disable-next-line no-new\n new AuthBridgeHandler(bridge);\n // eslint-disable-next-line no-new\n new NavigationBridgeHandler(bridge, () => navigation);\n // eslint-disable-next-line no-new\n new AnalyticsBridgeHandler(bridge);\n\n return () => {\n bridge.dispose();\n bridgeRef.current = null;\n };\n }, [navigation]);\n\n useEffect(() => {\n if (!authToken) return;\n const id = mfeConfig.url;\n webViewManager.registerWebView(id, webViewRef);\n return () => {\n webViewManager.unregisterWebView(id);\n };\n }, [authToken, mfeConfig.url, webViewManager]);\n\n useEffect(() => {\n const handleAppStateChange = (nextAppState: AppStateStatus) => {\n if (nextAppState === 'background') {\n webViewRef.current?.clearCache?.(true);\n }\n };\n const subscription = AppState.addEventListener('change', handleAppStateChange);\n return () => subscription.remove();\n }, []);\n\n useEffect(() => {\n if (!authReady || !authToken || hasError) return;\n const timer = setTimeout(() => {\n setIsLoading((loading) => {\n if (!loading) return loading;\n const detail = `Timed out loading ${mfeConfig.url}. Is WEB_BUILDER_URL reachable from this device?`;\n // eslint-disable-next-line no-console\n console.warn('[WebBuilder]', detail);\n setErrorDetail(detail);\n setHasError(true);\n return false;\n });\n }, 20000);\n return () => clearTimeout(timer);\n }, [authReady, authToken, hasError, mfeConfig.url, reloadKey]);\n\n const handleLoadStart = useCallback(() => {\n setIsLoading(true);\n setHasError(false);\n setErrorDetail(null);\n }, []);\n\n const handleLoadEnd = useCallback(() => {\n setIsLoading(false);\n webViewManager.updateUsage(mfeConfig.url);\n }, [mfeConfig.url, webViewManager]);\n\n const handleError = useCallback(\n (event: WebViewErrorEvent) => {\n const { description, code, url } = event.nativeEvent;\n const detail = [description, code != null ? `code ${code}` : null, url || mfeConfig.url]\n .filter(Boolean)\n .join(' · ');\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.warn('[WebBuilder] load error:', detail);\n }\n setErrorDetail(detail);\n setHasError(true);\n setIsLoading(false);\n },\n [mfeConfig.url],\n );\n\n const handleHttpError = useCallback(\n (event: WebViewHttpErrorEvent) => {\n const { statusCode, description, url } = event.nativeEvent;\n if (statusCode < 400) return;\n const detail = `HTTP ${statusCode}${description ? `: ${description}` : ''} · ${url || mfeConfig.url}`;\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.warn('[WebBuilder] http error:', detail);\n }\n setErrorDetail(detail);\n setHasError(true);\n setIsLoading(false);\n },\n [mfeConfig.url],\n );\n\n const handleMessage = useCallback((event: WebViewMessageEvent) => {\n bridgeRef.current?.handleMessage(event);\n }, []);\n\n const handleNavigationStateChange = useCallback((navState: WebViewNavigation) => {\n setCanGoBack(Boolean(navState.canGoBack));\n }, []);\n\n const handleRetry = useCallback(() => {\n setHasError(false);\n setErrorDetail(null);\n setAuthError(null);\n setAuthToken(null);\n setAuthBackend(null);\n setIsLoading(true);\n setMintGeneration((g) => g + 1);\n setReloadKey((k) => k + 1);\n }, []);\n\n const handleNativeGoBack = useCallback(() => {\n if (navigation.canGoBack()) {\n navigation.goBack();\n }\n }, [navigation]);\n\n const cacheMode =\n mfeConfig.cachePolicy === 'cache-else-load' ? ('LOAD_CACHE_ELSE_NETWORK' as const) : ('LOAD_DEFAULT' as const);\n\n const showAuthSpinner = !authReady;\n const showAuthFailure = authReady && !authToken;\n\n if (showAuthSpinner) {\n return (\n <SafeAreaView\n edges={['left', 'right', 'bottom']}\n style={[styles.container, { backgroundColor: surfaceColor }]}\n >\n <View style={styles.centered}>\n <ActivityIndicator size=\"large\" color={mobileTokens.color.primary} />\n <Text style={[styles.errorBody, { color: mutedColor, marginTop: 12 }]}>Preparing Web Builder…</Text>\n </View>\n </SafeAreaView>\n );\n }\n\n if (showAuthFailure || hasError) {\n return (\n <SafeAreaView\n edges={['left', 'right', 'bottom']}\n style={[styles.container, { backgroundColor: surfaceColor }]}\n >\n <View style={styles.centered}>\n <Text style={[styles.errorTitle, { color: textColor }]}>\n {showAuthFailure ? 'Could not open Web Builder' : 'Failed to load micro frontend'}\n </Text>\n <Text style={[styles.errorBody, { color: mutedColor }]}>\n {showAuthFailure\n ? authError ||\n 'Sign-in token could not be minted for the surface. Ensure you are logged in with an org.'\n : `Could not open ${baseUrl}. Check WEB_BUILDER_URL / network, then retry.`}\n </Text>\n {errorDetail ? (\n <Text style={[styles.errorMeta, { color: mutedColor }]} selectable>\n {errorDetail}\n </Text>\n ) : null}\n <Pressable\n onPress={handleRetry}\n style={[styles.retryButton, { backgroundColor: mobileTokens.color.primary }]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Retry loading WebBuilder\"\n >\n <Text style={styles.retryLabel}>Retry</Text>\n </Pressable>\n </View>\n </SafeAreaView>\n );\n }\n\n return (\n <SafeAreaView edges={['left', 'right', 'bottom']} style={[styles.container, { backgroundColor: surfaceColor }]}>\n <WebViewWithNavigation webViewRef={webViewRef} canGoBack={canGoBack} onGoBack={handleNativeGoBack} />\n\n {isLoading && (\n <View style={[styles.loadingOverlay, { backgroundColor: surfaceColor }]} pointerEvents=\"none\">\n <ActivityIndicator size=\"large\" color={mobileTokens.color.primary} />\n </View>\n )}\n\n <WebView\n key={`${reloadKey}-${authToken?.slice(-8) ?? 'none'}`}\n ref={webViewRef}\n source={{\n uri: mfeConfig.url,\n }}\n style={styles.webview}\n onLoadStart={handleLoadStart}\n onLoadEnd={handleLoadEnd}\n onError={handleError}\n onHttpError={handleHttpError}\n onMessage={handleMessage}\n onNavigationStateChange={handleNavigationStateChange}\n injectedJavaScriptBeforeContentLoaded={injectedBeforeContent}\n injectedJavaScript={reinjectAfterLoad}\n cacheEnabled={mfeConfig.cachePolicy !== 'reload'}\n cacheMode={cacheMode}\n javaScriptEnabled\n domStorageEnabled\n sharedCookiesEnabled\n thirdPartyCookiesEnabled\n startInLoadingState\n scalesPageToFit\n originWhitelist={['*']}\n mixedContentMode=\"always\"\n allowsInlineMediaPlayback={false}\n mediaPlaybackRequiresUserAction\n setSupportMultipleWindows={false}\n allowsBackForwardNavigationGestures\n {...(Platform.OS === 'android' ? { overScrollMode: 'never' as const } : null)}\n />\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n webview: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n loadingOverlay: {\n ...StyleSheet.absoluteFillObject,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1000,\n },\n centered: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n paddingHorizontal: 24,\n gap: 12,\n },\n errorTitle: {\n fontSize: 17,\n fontWeight: '600',\n textAlign: 'center',\n },\n errorBody: {\n fontSize: 14,\n textAlign: 'center',\n marginBottom: 4,\n lineHeight: 20,\n },\n errorMeta: {\n fontSize: 12,\n textAlign: 'center',\n marginBottom: 8,\n lineHeight: 16,\n },\n retryButton: {\n paddingHorizontal: 20,\n paddingVertical: 12,\n borderRadius: mobileTokens.radius.md,\n },\n retryLabel: {\n color: '#ffffff',\n fontSize: 15,\n fontWeight: '600',\n },\n});\n"],"names":["_a"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/screens/WebBuilder/index.tsx"],"sourcesContent":["/**\n * WebBuilder — native shell hosting the webbuilder-surface WebView.\n *\n * Mints the org system JWT (same as CDeCLI) and hands it to the surface via\n * `?token=&state=` (SurfaceLoginGate.captureLoginCallback) + localStorage\n * `cdecli_token`, so the standalone \"Sign in with Yantra\" gate is skipped.\n */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n ActivityIndicator,\n AppState,\n type AppStateStatus,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n useColorScheme,\n View,\n} from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\nimport {\n WebView,\n type WebViewMessageEvent,\n type WebViewNavigation,\n type WebViewErrorEvent,\n type WebViewHttpErrorEvent,\n} from 'react-native-webview';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { config } from '../../config/env-config';\nimport { mobileTokens } from '../../theme/mobileTokens';\nimport {\n AnalyticsBridgeHandler,\n AuthBridgeHandler,\n getPackagerHost,\n NativeWebViewBridge,\n NavigationBridgeHandler,\n resolveMobileWebUrl,\n WEB_BRIDGE_BOOTSTRAP,\n WebViewManager,\n} from '../../bridge';\nimport {\n appendSurfaceAuthParams,\n buildCdecliTokenInjection,\n buildSurfaceGateRecoveryScript,\n} from '../../hooks/mintSurfaceSystemToken';\nimport { useObtainSystemToken } from '../../hooks/useObtainSystemToken';\nimport { usePrerequisiteIds } from '../../hooks/usePrerequisiteIds';\nimport { WebViewWithNavigation } from './WebViewWithNavigation';\nimport { setWebBuilderBackHandler } from './webbuilderBackHandler';\nimport {\n getWarmWebBuilderSession,\n setWarmWebBuilderSession,\n warmWebBuilderSession,\n clearWarmWebBuilderSession,\n} from './webbuilderWarmCache';\n\nexport type MicroFrontendCachePolicy = 'default' | 'reload' | 'cache-else-load';\n\nexport interface MicroFrontendConfig {\n url: string;\n preload?: boolean;\n cachePolicy?: MicroFrontendCachePolicy;\n}\n\nexport interface WebBuilderRouteParams {\n orgName?: string | null;\n /** Optional override URL; defaults to WEB_BUILDER_URL from env. */\n url?: string | null;\n /** Channel to open / continue in the surface (`?channelId=`). */\n channelId?: string | null;\n /** Yantra project UUID (`?projectId=`). Defaults to channelId on the surface if omitted. */\n projectId?: string | null;\n /** Optional first Agent prompt to auto-send after hydrate (`?message=`). */\n message?: string | null;\n /** E2B snapshot for template remix (`?snapshotId=`). */\n snapshotId?: string | null;\n /** Yantra form / catalog template id (`?templateId=`). */\n templateId?: string | null;\n /** Display title for the handoff template (`?templateTitle=`). */\n templateTitle?: string | null;\n /** Stack template hint (`?seedTemplate=` e.g. vite-react). */\n seedTemplate?: string | null;\n deployUrl?: string | null;\n previewUrl?: string | null;\n}\n\nfunction makeHandoffState(): string {\n return `mobile-webview-${Date.now().toString(36)}`;\n}\n\nexport default function WebBuilderScreen() {\n const navigation = useNavigation<any>();\n const route = useRoute<any>();\n const colorScheme = useColorScheme();\n const isDark = colorScheme === 'dark';\n\n const webViewRef = useRef<WebView>(null);\n const bridgeRef = useRef<NativeWebViewBridge | null>(null);\n\n const [isLoading, setIsLoading] = useState(true);\n const [hasError, setHasError] = useState(false);\n const [errorDetail, setErrorDetail] = useState<string | null>(null);\n const [canGoBack, setCanGoBack] = useState(false);\n const previewOpenRef = useRef(false);\n const [reloadKey, setReloadKey] = useState(0);\n const warm = getWarmWebBuilderSession();\n const [authToken, setAuthToken] = useState<string | null>(() => warm?.token ?? null);\n const [authBackend, setAuthBackend] = useState<string | null>(() => warm?.backend ?? null);\n const [authState, setAuthState] = useState<string>(() => makeHandoffState());\n // If Home already warmed the session, skip the full-screen Preparing gate.\n const [authReady, setAuthReady] = useState(() => Boolean(warm?.token));\n const [authError, setAuthError] = useState<string | null>(null);\n const [mintGeneration, setMintGeneration] = useState(0);\n\n const { orgName, projectId, tagId } = usePrerequisiteIds();\n // Same Apollo session the rest of the app uses (web harness pastes this JWT).\n // Raw fetch + SecureStore Auth0 Bearer gets 401 on local GraphQL; Apollo does not.\n const { obtainSystemToken } = useObtainSystemToken(true);\n\n const packagerHost = getPackagerHost();\n\n const handoffParams = useMemo(() => {\n const params = route?.params as WebBuilderRouteParams | undefined;\n const read = (key: keyof WebBuilderRouteParams) => {\n const value = params?.[key];\n return typeof value === 'string' ? value.trim() : '';\n };\n const channelId = read('channelId');\n const projectIdParam = read('projectId');\n const message = read('message');\n const snapshotId = read('snapshotId');\n const templateId = read('templateId');\n const templateTitle = read('templateTitle');\n const seedTemplate = read('seedTemplate');\n const deployUrl = read('deployUrl');\n const previewUrl = read('previewUrl');\n return {\n channelId: channelId || null,\n projectId: projectIdParam || null,\n message: message || null,\n snapshotId: snapshotId || null,\n templateId: templateId || null,\n templateTitle: templateTitle || null,\n seedTemplate: seedTemplate || null,\n deployUrl: deployUrl || null,\n previewUrl: previewUrl || null,\n };\n }, [route?.params]);\n\n const routeOrgName = useMemo(() => {\n const raw = (route?.params as WebBuilderRouteParams | undefined)?.orgName;\n return typeof raw === 'string' && raw.trim() ? raw.trim() : null;\n }, [route?.params]);\n const effectiveOrgName = orgName || routeOrgName;\n const effectiveProjectId = projectId || handoffParams.projectId;\n\n const baseUrl = useMemo(() => {\n const fromParams = (route?.params as WebBuilderRouteParams | undefined)?.url;\n const raw = typeof fromParams === 'string' && fromParams.trim() ? fromParams.trim() : config.WEB_BUILDER_URL;\n const resolved = resolveMobileWebUrl(raw, packagerHost);\n const stamp = (url: URL) => {\n // Always mark mobile WebView embeds so the surface hides harness chrome\n // (cdecli JWT bar + @yantra/webbuilder-surface label).\n url.searchParams.set('embed', 'mobile');\n // Snapshot remix: omit channelId/projectId/previewUrl/deployUrl so the surface\n // mints a fresh listen channel+project from snapshotId (does not reconnect a\n // live sandbox or poll an empty mobile-precreated channel).\n const isRemix = Boolean(handoffParams.snapshotId);\n if (!isRemix && handoffParams.channelId) url.searchParams.set('channelId', handoffParams.channelId);\n if (!isRemix && handoffParams.projectId) url.searchParams.set('projectId', handoffParams.projectId);\n if (handoffParams.message) url.searchParams.set('message', handoffParams.message);\n if (handoffParams.snapshotId) url.searchParams.set('snapshotId', handoffParams.snapshotId);\n if (handoffParams.templateId) url.searchParams.set('templateId', handoffParams.templateId);\n if (handoffParams.templateTitle) url.searchParams.set('templateTitle', handoffParams.templateTitle);\n if (handoffParams.seedTemplate) url.searchParams.set('seedTemplate', handoffParams.seedTemplate);\n };\n try {\n const url = new URL(resolved);\n stamp(url);\n return url.toString();\n } catch {\n const sep = resolved.includes('?') ? '&' : '?';\n const parts: string[] = ['embed=mobile'];\n const isRemix = Boolean(handoffParams.snapshotId);\n if (!isRemix && handoffParams.channelId) {\n parts.push(`channelId=${encodeURIComponent(handoffParams.channelId)}`);\n }\n if (!isRemix && handoffParams.projectId) {\n parts.push(`projectId=${encodeURIComponent(handoffParams.projectId)}`);\n }\n if (handoffParams.message) parts.push(`message=${encodeURIComponent(handoffParams.message)}`);\n if (handoffParams.snapshotId) parts.push(`snapshotId=${encodeURIComponent(handoffParams.snapshotId)}`);\n if (handoffParams.templateId) parts.push(`templateId=${encodeURIComponent(handoffParams.templateId)}`);\n if (handoffParams.templateTitle) {\n parts.push(`templateTitle=${encodeURIComponent(handoffParams.templateTitle)}`);\n }\n if (handoffParams.seedTemplate) {\n parts.push(`seedTemplate=${encodeURIComponent(handoffParams.seedTemplate)}`);\n }\n return `${resolved}${sep}${parts.join('&')}`;\n }\n }, [route?.params, packagerHost, handoffParams]);\n\n /** Same GRAPHQL_URL the rest of the app uses — rewritten for device LAN. */\n const graphqlUrl = useMemo(() => resolveMobileWebUrl(config.GRAPHQL_URL, packagerHost), [packagerHost]);\n\n useEffect(() => {\n let cancelled = false;\n const handoffState = makeHandoffState();\n setAuthState(handoffState);\n setAuthError(null);\n\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.log('[WebBuilder] surface=', baseUrl, 'graphql=', graphqlUrl);\n }\n\n // Prefer Home prewarm — never clear authReady / show Preparing if we already have a token.\n const cached = getWarmWebBuilderSession();\n if (cached?.token) {\n setAuthToken(cached.token);\n setAuthBackend(cached.backend || graphqlUrl);\n setAuthReady(true);\n return () => {\n cancelled = true;\n };\n }\n\n (async () => {\n try {\n // Don't hard-block on GetUserSystemToken loading — warm falls back to raw mint.\n const session = await warmWebBuilderSession({\n graphqlUrl,\n orgName: effectiveOrgName,\n projectId: effectiveProjectId,\n tagId,\n obtainSystemToken,\n });\n if (cancelled) return;\n setAuthToken(session.token);\n setAuthBackend(session.backend);\n setWarmWebBuilderSession(session);\n setAuthReady(true);\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.log('[WebBuilder] session ready length=', session.token.length);\n }\n } catch (err) {\n if (cancelled) return;\n // Still missing org/project — keep preparing a short while until they arrive.\n if (!effectiveOrgName || !effectiveProjectId) {\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.log('[WebBuilder] waiting for org/project…');\n }\n return;\n }\n const message = err instanceof Error ? err.message : 'Token mint failed';\n // eslint-disable-next-line no-console\n console.warn('[WebBuilder] surface token mint failed:', message);\n setAuthError(message);\n setAuthToken(null);\n setAuthBackend(null);\n setAuthReady(true);\n }\n })();\n\n // Absolute ceiling so Preparing never hangs indefinitely.\n const failsafe = setTimeout(() => {\n if (cancelled) return;\n setAuthReady((ready) => {\n if (ready) return ready;\n setAuthError('Timed out preparing Web Builder. Ensure you are signed in with an org, then retry.');\n return true;\n });\n }, 20000);\n\n return () => {\n cancelled = true;\n clearTimeout(failsafe);\n };\n }, [baseUrl, graphqlUrl, obtainSystemToken, effectiveOrgName, effectiveProjectId, tagId, mintGeneration]);\n\n const mfeUrl = useMemo(() => {\n if (!authToken) return baseUrl;\n return appendSurfaceAuthParams(baseUrl, authToken, authState);\n }, [baseUrl, authToken, authState]);\n\n const injectedBeforeContent = useMemo(() => {\n const parts = [WEB_BRIDGE_BOOTSTRAP];\n if (authToken && authBackend) {\n parts.unshift(buildCdecliTokenInjection(authToken, authBackend, authState));\n }\n return parts.join('\\n');\n }, [authToken, authBackend, authState]);\n\n /** If the SPA still shows the login gate after load, force one handoff reload. */\n const reinjectAfterLoad = useMemo(() => {\n if (!authToken || !authBackend) return undefined;\n return buildSurfaceGateRecoveryScript(authToken, authBackend, authState);\n }, [authToken, authBackend, authState]);\n\n const mfeConfig: MicroFrontendConfig = useMemo(\n () => ({\n url: mfeUrl,\n cachePolicy: 'default',\n }),\n [mfeUrl],\n );\n\n const webViewManager = WebViewManager.getInstance();\n const surfaceColor = isDark ? '#0f172a' : mobileTokens.color.surface;\n const textColor = isDark ? '#f8fafc' : mobileTokens.color.text;\n const mutedColor = isDark ? '#94a3b8' : mobileTokens.color.textMuted;\n\n // Bridge + service handlers\n useEffect(() => {\n const bridge = new NativeWebViewBridge(webViewRef);\n bridgeRef.current = bridge;\n // eslint-disable-next-line no-new\n new AuthBridgeHandler(bridge);\n // eslint-disable-next-line no-new\n new NavigationBridgeHandler(bridge, () => navigation);\n // eslint-disable-next-line no-new\n new AnalyticsBridgeHandler(bridge);\n\n return () => {\n bridge.dispose();\n bridgeRef.current = null;\n };\n }, [navigation]);\n\n useEffect(() => {\n if (!authToken) return;\n const id = mfeConfig.url;\n webViewManager.registerWebView(id, webViewRef);\n return () => {\n webViewManager.unregisterWebView(id);\n };\n }, [authToken, mfeConfig.url, webViewManager]);\n\n useEffect(() => {\n const handleAppStateChange = (nextAppState: AppStateStatus) => {\n if (nextAppState === 'background') {\n webViewRef.current?.clearCache?.(true);\n }\n };\n const subscription = AppState.addEventListener('change', handleAppStateChange);\n return () => subscription.remove();\n }, []);\n\n useEffect(() => {\n if (!authReady || !authToken || hasError) return;\n const timer = setTimeout(() => {\n setIsLoading((loading) => {\n if (!loading) return loading;\n const detail = `Timed out loading ${mfeConfig.url}. Is WEB_BUILDER_URL reachable from this device?`;\n // eslint-disable-next-line no-console\n console.warn('[WebBuilder]', detail);\n setErrorDetail(detail);\n setHasError(true);\n return false;\n });\n }, 20000);\n return () => clearTimeout(timer);\n }, [authReady, authToken, hasError, mfeConfig.url, reloadKey]);\n\n const handleLoadStart = useCallback(() => {\n setIsLoading(true);\n setHasError(false);\n setErrorDetail(null);\n }, []);\n\n const handleLoadEnd = useCallback(() => {\n setIsLoading(false);\n webViewManager.updateUsage(mfeConfig.url);\n }, [mfeConfig.url, webViewManager]);\n\n const handleError = useCallback(\n (event: WebViewErrorEvent) => {\n const { description, code, url } = event.nativeEvent;\n const detail = [description, code != null ? `code ${code}` : null, url || mfeConfig.url]\n .filter(Boolean)\n .join(' · ');\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.warn('[WebBuilder] load error:', detail);\n }\n setErrorDetail(detail);\n setHasError(true);\n setIsLoading(false);\n },\n [mfeConfig.url],\n );\n\n const handleHttpError = useCallback(\n (event: WebViewHttpErrorEvent) => {\n const { statusCode, description, url } = event.nativeEvent;\n if (statusCode < 400) return;\n const detail = `HTTP ${statusCode}${description ? `: ${description}` : ''} · ${url || mfeConfig.url}`;\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.warn('[WebBuilder] http error:', detail);\n }\n setErrorDetail(detail);\n setHasError(true);\n setIsLoading(false);\n },\n [mfeConfig.url],\n );\n\n const handleMessage = useCallback((event: WebViewMessageEvent) => {\n try {\n const raw = event?.nativeEvent?.data;\n if (typeof raw === 'string' && raw.includes('wb-preview')) {\n const parsed = JSON.parse(raw) as { type?: string; open?: boolean };\n if (parsed?.type === 'wb-preview') {\n previewOpenRef.current = Boolean(parsed.open);\n }\n }\n } catch {\n /* non-JSON bridge frames are handled below */\n }\n bridgeRef.current?.handleMessage(event);\n }, []);\n\n const handleNavigationStateChange = useCallback((navState: WebViewNavigation) => {\n setCanGoBack(Boolean(navState.canGoBack));\n }, []);\n\n const handleRetry = useCallback(() => {\n clearWarmWebBuilderSession();\n setHasError(false);\n setErrorDetail(null);\n setAuthError(null);\n setAuthToken(null);\n setAuthBackend(null);\n setAuthReady(false);\n setIsLoading(true);\n setMintGeneration((g) => g + 1);\n setReloadKey((k) => k + 1);\n }, []);\n\n const handleNativeGoBack = useCallback(() => {\n if (navigation.canGoBack()) {\n navigation.goBack();\n }\n }, [navigation]);\n\n // Header back (iOS) must use WebView history / in-app preview before popping\n // this screen — otherwise Preview → back jumps straight to Home.\n useEffect(() => {\n setWebBuilderBackHandler(() => {\n if (canGoBack) {\n webViewRef.current?.goBack();\n return true;\n }\n if (previewOpenRef.current) {\n webViewRef.current?.injectJavaScript(`\n(function () {\n try { window.__yantraWbNativeBack && window.__yantraWbNativeBack(); } catch (e) {}\n})();\ntrue;\n`);\n previewOpenRef.current = false;\n return true;\n }\n return false;\n });\n return () => setWebBuilderBackHandler(null);\n }, [canGoBack]);\n\n const cacheMode =\n mfeConfig.cachePolicy === 'cache-else-load' ? ('LOAD_CACHE_ELSE_NETWORK' as const) : ('LOAD_DEFAULT' as const);\n\n const showAuthSpinner = !authReady;\n const showAuthFailure = authReady && !authToken;\n\n if (showAuthSpinner) {\n return (\n <SafeAreaView\n edges={['left', 'right', 'bottom']}\n style={[styles.container, { backgroundColor: surfaceColor }]}\n >\n <View style={styles.centered}>\n <ActivityIndicator size=\"large\" color={mobileTokens.color.primary} />\n <Text style={[styles.errorBody, { color: mutedColor, marginTop: 12 }]}>Preparing Web Builder…</Text>\n </View>\n </SafeAreaView>\n );\n }\n\n if (showAuthFailure || hasError) {\n return (\n <SafeAreaView\n edges={['left', 'right', 'bottom']}\n style={[styles.container, { backgroundColor: surfaceColor }]}\n >\n <View style={styles.centered}>\n <Text style={[styles.errorTitle, { color: textColor }]}>\n {showAuthFailure ? 'Could not open Web Builder' : 'Failed to load micro frontend'}\n </Text>\n <Text style={[styles.errorBody, { color: mutedColor }]}>\n {showAuthFailure\n ? authError ||\n 'Sign-in token could not be minted for the surface. Ensure you are logged in with an org.'\n : `Could not open ${baseUrl}. Check WEB_BUILDER_URL / network, then retry.`}\n </Text>\n {errorDetail ? (\n <Text style={[styles.errorMeta, { color: mutedColor }]} selectable>\n {errorDetail}\n </Text>\n ) : null}\n <Pressable\n onPress={handleRetry}\n style={[styles.retryButton, { backgroundColor: mobileTokens.color.primary }]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Retry loading WebBuilder\"\n >\n <Text style={styles.retryLabel}>Retry</Text>\n </Pressable>\n </View>\n </SafeAreaView>\n );\n }\n\n return (\n <SafeAreaView edges={['left', 'right', 'bottom']} style={[styles.container, { backgroundColor: surfaceColor }]}>\n <WebViewWithNavigation webViewRef={webViewRef} canGoBack={canGoBack} onGoBack={handleNativeGoBack} />\n\n {isLoading && (\n <View style={[styles.loadingOverlay, { backgroundColor: surfaceColor }]} pointerEvents=\"none\">\n <ActivityIndicator size=\"large\" color={mobileTokens.color.primary} />\n </View>\n )}\n\n <WebView\n key={`${reloadKey}-${handoffParams.channelId ?? 'none'}-${handoffParams.snapshotId ?? 'nosnap'}-${authToken?.slice(-8) ?? 'none'}`}\n ref={webViewRef}\n source={{\n uri: mfeConfig.url,\n }}\n style={styles.webview}\n onLoadStart={handleLoadStart}\n onLoadEnd={handleLoadEnd}\n onError={handleError}\n onHttpError={handleHttpError}\n onMessage={handleMessage}\n onNavigationStateChange={handleNavigationStateChange}\n injectedJavaScriptBeforeContentLoaded={injectedBeforeContent}\n injectedJavaScript={reinjectAfterLoad}\n cacheEnabled={mfeConfig.cachePolicy !== 'reload'}\n cacheMode={cacheMode}\n javaScriptEnabled\n domStorageEnabled\n sharedCookiesEnabled\n thirdPartyCookiesEnabled\n startInLoadingState\n scalesPageToFit\n originWhitelist={['*']}\n mixedContentMode=\"always\"\n allowsInlineMediaPlayback={false}\n mediaPlaybackRequiresUserAction\n setSupportMultipleWindows={false}\n allowsBackForwardNavigationGestures\n {...(Platform.OS === 'android' ? { overScrollMode: 'never' as const } : null)}\n />\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n webview: {\n flex: 1,\n backgroundColor: 'transparent',\n },\n loadingOverlay: {\n ...StyleSheet.absoluteFillObject,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1000,\n },\n centered: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n paddingHorizontal: 24,\n gap: 12,\n },\n errorTitle: {\n fontSize: 17,\n fontWeight: '600',\n textAlign: 'center',\n },\n errorBody: {\n fontSize: 14,\n textAlign: 'center',\n marginBottom: 4,\n lineHeight: 20,\n },\n errorMeta: {\n fontSize: 12,\n textAlign: 'center',\n marginBottom: 8,\n lineHeight: 16,\n },\n retryButton: {\n paddingHorizontal: 20,\n paddingVertical: 12,\n borderRadius: mobileTokens.radius.md,\n },\n retryLabel: {\n color: '#ffffff',\n fontSize: 15,\n fontWeight: '600',\n },\n});\n"],"names":["_a","_b"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ let handler = null;
2
+ function setWebBuilderBackHandler(next) {
3
+ handler = next;
4
+ }
5
+ function tryWebBuilderBack() {
6
+ try {
7
+ return (handler == null ? void 0 : handler()) === true;
8
+ } catch (e) {
9
+ return false;
10
+ }
11
+ }export{setWebBuilderBackHandler,tryWebBuilderBack};//# sourceMappingURL=webbuilderBackHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webbuilderBackHandler.js","sources":["../../../src/screens/WebBuilder/webbuilderBackHandler.ts"],"sourcesContent":["/**\n * Lets NavigationHeader prefer in-WebView back (preview / sandbox history)\n * before popping the native WebBuilder screen to Home.\n */\n\ntype BackHandler = () => boolean;\n\nlet handler: BackHandler | null = null;\n\nexport function setWebBuilderBackHandler(next: BackHandler | null): void {\n handler = next;\n}\n\n/** @returns true if the WebBuilder WebView consumed the back press */\nexport function tryWebBuilderBack(): boolean {\n try {\n return handler?.() === true;\n } catch {\n return false;\n }\n}\n"],"names":[],"mappings":"AAMA,IAAI,OAA8B,GAAA,IAAA;AAC3B,SAAS,yBAAyB,IAAgC,EAAA;AACvE,EAAU,OAAA,GAAA,IAAA;AACZ;AAGO,SAAS,iBAA6B,GAAA;AAC3C,EAAI,IAAA;AACF,IAAA,OAAA,CAAO,OAAgB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,EAAA,MAAA,IAAA;AAAA,GACjB,CAAA,OAAA,CAAA,EAAA;AACN,IAAO,OAAA,KAAA;AAAA;AAEX"}
@@ -0,0 +1,84 @@
1
+ const TTL_MS = 45 * 60 * 1e3;
2
+ let session = null;
3
+ let inflight = null;
4
+ function getWarmWebBuilderSession() {
5
+ var _a;
6
+ if (!((_a = session == null ? void 0 : session.token) == null ? void 0 : _a.trim())) return null;
7
+ if (Date.now() - session.warmedAt > TTL_MS) {
8
+ session = null;
9
+ return null;
10
+ }
11
+ return session;
12
+ }
13
+ function setWarmWebBuilderSession(next) {
14
+ session = {
15
+ token: next.token.trim(),
16
+ backend: next.backend.trim(),
17
+ warmedAt: next.warmedAt || Date.now()
18
+ };
19
+ }
20
+ function clearWarmWebBuilderSession() {
21
+ session = null;
22
+ inflight = null;
23
+ }
24
+ async function warmWebBuilderSession(input) {
25
+ const existing = getWarmWebBuilderSession();
26
+ if (existing) return existing;
27
+ if (inflight) return inflight;
28
+ inflight = (async () => {
29
+ var _a;
30
+ const backend = (input.graphqlUrl || "").trim();
31
+ if (!backend) {
32
+ throw new Error("GRAPHQL_URL is not configured");
33
+ }
34
+ let token = null;
35
+ if (input.obtainSystemToken) {
36
+ try {
37
+ token = ((_a = await input.obtainSystemToken()) == null ? void 0 : _a.trim()) || null;
38
+ } catch (err) {
39
+ if (__DEV__) {
40
+ console.warn("[WebBuilderWarm] Apollo mint failed, trying raw GraphQL:", err);
41
+ }
42
+ }
43
+ }
44
+ if (!token) {
45
+ const {
46
+ mintSurfaceSystemToken
47
+ } = await import('../../hooks/mintSurfaceSystemToken.js');
48
+ const minted = await mintSurfaceSystemToken({
49
+ graphqlUrl: backend,
50
+ orgName: input.orgName,
51
+ projectId: input.projectId,
52
+ tagId: input.tagId
53
+ });
54
+ token = minted.token.trim();
55
+ }
56
+ if (!token) {
57
+ throw new Error("Could not obtain system token for Web Builder");
58
+ }
59
+ const next = {
60
+ token,
61
+ backend,
62
+ warmedAt: Date.now()
63
+ };
64
+ setWarmWebBuilderSession(next);
65
+ return next;
66
+ })().finally(() => {
67
+ inflight = null;
68
+ });
69
+ return inflight;
70
+ }
71
+ function webbuilderPreloadUrl(surfaceBase) {
72
+ const raw = (surfaceBase || "").trim() || "http://localhost:5174/";
73
+ try {
74
+ const url = new URL(raw);
75
+ url.searchParams.set("embed", "mobile");
76
+ for (const key of ["message", "snapshotId", "channelId", "projectId", "templateId", "templateTitle", "seedTemplate", "token", "code", "state"]) {
77
+ url.searchParams.delete(key);
78
+ }
79
+ return url.toString();
80
+ } catch (e) {
81
+ const sep = raw.includes("?") ? "&" : "?";
82
+ return `${raw}${sep}embed=mobile`;
83
+ }
84
+ }export{clearWarmWebBuilderSession,getWarmWebBuilderSession,setWarmWebBuilderSession,warmWebBuilderSession,webbuilderPreloadUrl};//# sourceMappingURL=webbuilderWarmCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webbuilderWarmCache.js","sources":["../../../src/screens/WebBuilder/webbuilderWarmCache.ts"],"sourcesContent":["/**\n * Background warm cache for Web Builder surface auth.\n * Home (Build mode) mints ahead of time so navigate → WebView skips the\n * full-screen \"Preparing Web Builder…\" gate.\n */\n\nexport type WarmWebBuilderSession = {\n token: string;\n backend: string;\n warmedAt: number;\n};\n\nconst TTL_MS = 45 * 60 * 1000;\n\nlet session: WarmWebBuilderSession | null = null;\nlet inflight: Promise<WarmWebBuilderSession> | null = null;\n\nexport function getWarmWebBuilderSession(): WarmWebBuilderSession | null {\n if (!session?.token?.trim()) return null;\n if (Date.now() - session.warmedAt > TTL_MS) {\n session = null;\n return null;\n }\n return session;\n}\n\nexport function setWarmWebBuilderSession(next: WarmWebBuilderSession): void {\n session = {\n token: next.token.trim(),\n backend: next.backend.trim(),\n warmedAt: next.warmedAt || Date.now(),\n };\n}\n\nexport function clearWarmWebBuilderSession(): void {\n session = null;\n inflight = null;\n}\n\nexport type WarmWebBuilderInput = {\n graphqlUrl: string;\n orgName?: string | null;\n projectId?: string | null;\n tagId?: string | null;\n /** Prefer Apollo mint when provided (same session as chat). */\n obtainSystemToken?: () => Promise<string | null>;\n};\n\n/**\n * Ensure a system JWT + backend URL are ready for the WebBuilder WebView.\n * Dedupes concurrent callers (Home prewarm + WebBuilder mount).\n */\nexport async function warmWebBuilderSession(input: WarmWebBuilderInput): Promise<WarmWebBuilderSession> {\n const existing = getWarmWebBuilderSession();\n if (existing) return existing;\n if (inflight) return inflight;\n\n inflight = (async () => {\n const backend = (input.graphqlUrl || '').trim();\n if (!backend) {\n throw new Error('GRAPHQL_URL is not configured');\n }\n\n let token: string | null = null;\n if (input.obtainSystemToken) {\n try {\n token = (await input.obtainSystemToken())?.trim() || null;\n } catch (err) {\n if (__DEV__) {\n // eslint-disable-next-line no-console\n console.warn('[WebBuilderWarm] Apollo mint failed, trying raw GraphQL:', err);\n }\n }\n }\n\n if (!token) {\n const { mintSurfaceSystemToken } = await import('../../hooks/mintSurfaceSystemToken');\n const minted = await mintSurfaceSystemToken({\n graphqlUrl: backend,\n orgName: input.orgName,\n projectId: input.projectId,\n tagId: input.tagId,\n });\n token = minted.token.trim();\n }\n\n if (!token) {\n throw new Error('Could not obtain system token for Web Builder');\n }\n\n const next: WarmWebBuilderSession = {\n token,\n backend: backend,\n warmedAt: Date.now(),\n };\n setWarmWebBuilderSession(next);\n return next;\n })().finally(() => {\n inflight = null;\n });\n\n return inflight;\n}\n\n/** Stable surface origin for background preload (no handoff query yet). */\nexport function webbuilderPreloadUrl(surfaceBase: string): string {\n const raw = (surfaceBase || '').trim() || 'http://localhost:5174/';\n try {\n const url = new URL(raw);\n url.searchParams.set('embed', 'mobile');\n // Drop any leftover handoff from a previous session.\n for (const key of [\n 'message',\n 'snapshotId',\n 'channelId',\n 'projectId',\n 'templateId',\n 'templateTitle',\n 'seedTemplate',\n 'token',\n 'code',\n 'state',\n ]) {\n url.searchParams.delete(key);\n }\n return url.toString();\n } catch {\n const sep = raw.includes('?') ? '&' : '?';\n return `${raw}${sep}embed=mobile`;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -57,6 +57,16 @@ function isUnhydratedCdecodeUri(value) {
57
57
  }
58
58
  return Object.keys(uri).length === 0;
59
59
  }
60
+ function settingsUriForOrg(orgName) {
61
+ const slug = orgName.trim();
62
+ const path = slug ? `/${slug}/` : "/";
63
+ return {
64
+ scheme: "cdecode",
65
+ authority: "default",
66
+ path,
67
+ fragment: "settings"
68
+ };
69
+ }
60
70
  function settingsUriForAccount(accountId) {
61
71
  const id = accountId.trim();
62
72
  return {
@@ -65,4 +75,4 @@ function settingsUriForAccount(accountId) {
65
75
  path: id ? `//accounts/${id}` : "/",
66
76
  fragment: "settings"
67
77
  };
68
- }export{FALLBACK_SETTINGS_URI,isUnhydratedCdecodeUri,settingsUriForAccount,toUriInput};//# sourceMappingURL=cdecodeUri.js.map
78
+ }export{FALLBACK_SETTINGS_URI,isUnhydratedCdecodeUri,settingsUriForAccount,settingsUriForOrg,toUriInput};//# sourceMappingURL=cdecodeUri.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cdecodeUri.js","sources":["../../src/utils/cdecodeUri.ts"],"sourcesContent":["/** Helpers for Apollo `URIInput` / mobile `cdecodeUri` from `getContextData`. */\n\nexport type UriLike = {\n scheme?: unknown;\n authority?: unknown;\n path?: unknown;\n fragment?: unknown;\n external?: unknown;\n};\n\nexport type SettingsUriInput = {\n scheme: string;\n authority: string;\n path: string;\n fragment: string;\n};\n\nexport const FALLBACK_SETTINGS_URI: SettingsUriInput = {\n scheme: 'cdecode',\n authority: 'default',\n path: '/',\n fragment: 'settings',\n};\n\nexport function toUriInput(value: unknown): { scheme: string; authority: string; path: string; fragment: string } {\n const uri = value as UriLike | undefined;\n if (uri && typeof uri.scheme === 'string' && typeof uri.path === 'string') {\n return {\n scheme: uri.scheme,\n authority: typeof uri.authority === 'string' ? uri.authority : 'default',\n path: uri.path || '/',\n fragment: typeof uri.fragment === 'string' ? uri.fragment : 'settings',\n };\n }\n\n if (uri && typeof uri.external === 'string') {\n try {\n const parsed = new URL(uri.external);\n return {\n scheme: parsed.protocol.replace(':', '') || 'cdecode',\n authority: parsed.hostname || 'default',\n path: parsed.pathname || '/',\n fragment: parsed.hash ? parsed.hash.replace('#', '') : 'settings',\n };\n } catch {\n return { ...FALLBACK_SETTINGS_URI };\n }\n }\n\n return { ...FALLBACK_SETTINGS_URI };\n}\n\n/** Apollo returns `{}` before org context is hydrated — must not pass to `pageSettings`. */\nexport function isUnhydratedCdecodeUri(value: unknown): boolean {\n if (value == null) return true;\n if (typeof value !== 'object') return false;\n const uri = value as UriLike;\n if (typeof uri.scheme === 'string' && typeof uri.path === 'string') {\n return false;\n }\n if (typeof uri.external === 'string' && uri.external.trim().length > 0) {\n return false;\n }\n return Object.keys(uri).length === 0;\n}\n\nexport function settingsUriForOrg(orgName: string): SettingsUriInput {\n const slug = orgName.trim();\n const path = slug ? `/${slug}/` : '/';\n return {\n scheme: 'cdecode',\n authority: 'default',\n path,\n fragment: 'settings',\n };\n}\n\n/** Account-scoped settings where `registerAccountUser` writes `account.default.*`. */\nexport function settingsUriForAccount(accountId: string): SettingsUriInput {\n const id = accountId.trim();\n return {\n scheme: 'cdecode',\n authority: 'default',\n path: id ? `//accounts/${id}` : '/',\n fragment: 'settings',\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAeO,MAAM,qBAA0C,GAAA;AAAA,EACrD,MAAQ,EAAA,SAAA;AAAA,EACR,SAAW,EAAA,SAAA;AAAA,EACX,IAAM,EAAA,GAAA;AAAA,EACN,QAAU,EAAA;AACZ;AACO,SAAS,WAAW,KAKzB,EAAA;AACA,EAAA,MAAM,GAAM,GAAA,KAAA;AACZ,EAAI,IAAA,GAAA,IAAO,OAAO,GAAI,CAAA,MAAA,KAAW,YAAY,OAAO,GAAA,CAAI,SAAS,QAAU,EAAA;AACzE,IAAO,OAAA;AAAA,MACL,QAAQ,GAAI,CAAA,MAAA;AAAA,MACZ,WAAW,OAAO,GAAA,CAAI,SAAc,KAAA,QAAA,GAAW,IAAI,SAAY,GAAA,SAAA;AAAA,MAC/D,IAAA,EAAM,IAAI,IAAQ,IAAA,GAAA;AAAA,MAClB,UAAU,OAAO,GAAA,CAAI,QAAa,KAAA,QAAA,GAAW,IAAI,QAAW,GAAA;AAAA,KAC9D;AAAA;AAEF,EAAA,IAAI,GAAO,IAAA,OAAO,GAAI,CAAA,QAAA,KAAa,QAAU,EAAA;AAC3C,IAAI,IAAA;AACF,MAAA,MAAM,MAAS,GAAA,IAAI,GAAI,CAAA,GAAA,CAAI,QAAQ,CAAA;AACnC,MAAO,OAAA;AAAA,QACL,QAAQ,MAAO,CAAA,QAAA,CAAS,OAAQ,CAAA,GAAA,EAAK,EAAE,CAAK,IAAA,SAAA;AAAA,QAC5C,SAAA,EAAW,OAAO,QAAY,IAAA,SAAA;AAAA,QAC9B,IAAA,EAAM,OAAO,QAAY,IAAA,GAAA;AAAA,QACzB,QAAA,EAAU,OAAO,IAAO,GAAA,MAAA,CAAO,KAAK,OAAQ,CAAA,GAAA,EAAK,EAAE,CAAI,GAAA;AAAA,OACzD;AAAA,KACM,CAAA,OAAA,CAAA,EAAA;AACN,MAAA,OAAO,cACF,CAAA,EAAA,EAAA,qBAAA,CAAA;AAAA;AAEP;AAEF,EAAA,OAAO,cACF,CAAA,EAAA,EAAA,qBAAA,CAAA;AAEP;AAGO,SAAS,uBAAuB,KAAyB,EAAA;AAC9D,EAAI,IAAA,KAAA,IAAS,MAAa,OAAA,IAAA;AAC1B,EAAI,IAAA,OAAO,KAAU,KAAA,QAAA,EAAiB,OAAA,KAAA;AACtC,EAAA,MAAM,GAAM,GAAA,KAAA;AACZ,EAAA,IAAI,OAAO,GAAI,CAAA,MAAA,KAAW,YAAY,OAAO,GAAA,CAAI,SAAS,QAAU,EAAA;AAClE,IAAO,OAAA,KAAA;AAAA;AAET,EAAI,IAAA,OAAO,IAAI,QAAa,KAAA,QAAA,IAAY,IAAI,QAAS,CAAA,IAAA,EAAO,CAAA,MAAA,GAAS,CAAG,EAAA;AACtE,IAAO,OAAA,KAAA;AAAA;AAET,EAAA,OAAO,MAAO,CAAA,IAAA,CAAK,GAAG,CAAA,CAAE,MAAW,KAAA,CAAA;AACrC;AAaO,SAAS,sBAAsB,SAAqC,EAAA;AACzE,EAAM,MAAA,EAAA,GAAK,UAAU,IAAK,EAAA;AAC1B,EAAO,OAAA;AAAA,IACL,MAAQ,EAAA,SAAA;AAAA,IACR,SAAW,EAAA,SAAA;AAAA,IACX,IAAM,EAAA,EAAA,GAAK,CAAc,WAAA,EAAA,EAAE,CAAK,CAAA,GAAA,GAAA;AAAA,IAChC,QAAU,EAAA;AAAA,GACZ;AACF"}
1
+ {"version":3,"file":"cdecodeUri.js","sources":["../../src/utils/cdecodeUri.ts"],"sourcesContent":["/** Helpers for Apollo `URIInput` / mobile `cdecodeUri` from `getContextData`. */\n\nexport type UriLike = {\n scheme?: unknown;\n authority?: unknown;\n path?: unknown;\n fragment?: unknown;\n external?: unknown;\n};\n\nexport type SettingsUriInput = {\n scheme: string;\n authority: string;\n path: string;\n fragment: string;\n};\n\nexport const FALLBACK_SETTINGS_URI: SettingsUriInput = {\n scheme: 'cdecode',\n authority: 'default',\n path: '/',\n fragment: 'settings',\n};\n\nexport function toUriInput(value: unknown): { scheme: string; authority: string; path: string; fragment: string } {\n const uri = value as UriLike | undefined;\n if (uri && typeof uri.scheme === 'string' && typeof uri.path === 'string') {\n return {\n scheme: uri.scheme,\n authority: typeof uri.authority === 'string' ? uri.authority : 'default',\n path: uri.path || '/',\n fragment: typeof uri.fragment === 'string' ? uri.fragment : 'settings',\n };\n }\n\n if (uri && typeof uri.external === 'string') {\n try {\n const parsed = new URL(uri.external);\n return {\n scheme: parsed.protocol.replace(':', '') || 'cdecode',\n authority: parsed.hostname || 'default',\n path: parsed.pathname || '/',\n fragment: parsed.hash ? parsed.hash.replace('#', '') : 'settings',\n };\n } catch {\n return { ...FALLBACK_SETTINGS_URI };\n }\n }\n\n return { ...FALLBACK_SETTINGS_URI };\n}\n\n/** Apollo returns `{}` before org context is hydrated — must not pass to `pageSettings`. */\nexport function isUnhydratedCdecodeUri(value: unknown): boolean {\n if (value == null) return true;\n if (typeof value !== 'object') return false;\n const uri = value as UriLike;\n if (typeof uri.scheme === 'string' && typeof uri.path === 'string') {\n return false;\n }\n if (typeof uri.external === 'string' && uri.external.trim().length > 0) {\n return false;\n }\n return Object.keys(uri).length === 0;\n}\n\nexport function settingsUriForOrg(orgName: string): SettingsUriInput {\n const slug = orgName.trim();\n const path = slug ? `/${slug}/` : '/';\n return {\n scheme: 'cdecode',\n authority: 'default',\n path,\n fragment: 'settings',\n };\n}\n\n/** Account-scoped settings where `registerAccountUser` writes `account.default.*`. */\nexport function settingsUriForAccount(accountId: string): SettingsUriInput {\n const id = accountId.trim();\n return {\n scheme: 'cdecode',\n authority: 'default',\n path: id ? `//accounts/${id}` : '/',\n fragment: 'settings',\n };\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adminide-stack/yantra-mobile",
3
- "version": "12.0.38",
3
+ "version": "12.0.39-alpha.2",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -25,7 +25,7 @@
25
25
  "uuid": "^9.0.0"
26
26
  },
27
27
  "devDependencies": {
28
- "common": "^12.0.38"
28
+ "common": "12.0.39-alpha.1"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "@admin-layout/gluestack-ui-mobile": "*",
@@ -41,7 +41,7 @@
41
41
  "@messenger-box/platform-mobile": "*",
42
42
  "@react-native-async-storage/async-storage": "*",
43
43
  "@react-navigation/native": "*",
44
- "common": "12.0.37",
44
+ "common": "12.0.39-alpha.1",
45
45
  "expo-constants": "*",
46
46
  "expo-secure-store": "*",
47
47
  "lodash": "*",
@@ -55,5 +55,5 @@
55
55
  "typescript": {
56
56
  "definition": "lib/index.d.ts"
57
57
  },
58
- "gitHead": "13f91b50212d2e25cb71f84c422da03d2e9109ed"
58
+ "gitHead": "0f9c0cd55d84fd34b65e8f8cc883c0ea59d346b0"
59
59
  }