@adminide-stack/yantra-mobile 12.0.54-alpha.8 → 12.0.55-alpha.0
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.
- package/lib/components/CustomDrawer.js +230 -168
- package/lib/components/CustomDrawer.js.map +1 -1
- package/lib/components/NavigationHeader/HeaderMoreMenu.js +15 -5
- package/lib/components/NavigationHeader/HeaderMoreMenu.js.map +1 -1
- package/lib/components/NavigationHeader/HeaderSettingsMenu.js +2 -2
- package/lib/components/NavigationHeader/HeaderSettingsMenu.js.map +1 -1
- package/lib/components/NavigationHeader/HeaderSkillsButton.js +5 -2
- package/lib/components/NavigationHeader/HeaderSkillsButton.js.map +1 -1
- package/lib/components/NavigationHeader/HeaderTasksButton.js +4 -1
- package/lib/components/NavigationHeader/HeaderTasksButton.js.map +1 -1
- package/lib/components/NavigationHeader/HeaderToolbarButton.js +4 -1
- package/lib/components/NavigationHeader/HeaderToolbarButton.js.map +1 -1
- package/lib/components/NavigationHeader/NavigationHeader.js +5 -5
- package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
- package/lib/components/ProfileAvatar.js +44 -0
- package/lib/components/ProfileAvatar.js.map +1 -0
- package/lib/compute.js +109 -7
- package/lib/compute.js.map +1 -1
- package/lib/features/agent-chat/NativeAgentChat.js +46 -7
- package/lib/features/agent-chat/NativeAgentChat.js.map +1 -1
- package/lib/features/apps/AppsCatalog.js +10 -0
- package/lib/features/apps/AppsCatalog.js.map +1 -1
- package/lib/features/apps/mobileAppCatalog.js +7 -0
- package/lib/features/apps/mobileAppCatalog.js.map +1 -1
- package/lib/features/travel/nativeTravelRegistry.js +15 -0
- package/lib/features/travel/nativeTravelRegistry.js.map +1 -0
- package/lib/graphql/typePolicies.js +35 -1
- package/lib/graphql/typePolicies.js.map +1 -1
- package/lib/hooks/useAccountDefaultSettings.js +2 -0
- package/lib/hooks/useAccountDefaultSettings.js.map +1 -1
- package/lib/hooks/usePrerequisiteIds.js +4 -1
- package/lib/hooks/usePrerequisiteIds.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/routes.json +113 -3
- package/lib/screens/Account/index.js +393 -0
- package/lib/screens/Account/index.js.map +1 -0
- package/lib/screens/Account/splitDisplayName.js +15 -0
- package/lib/screens/Account/splitDisplayName.js.map +1 -0
- package/lib/screens/CanvasBoard/index.js +6 -1
- package/lib/screens/CanvasBoard/index.js.map +1 -1
- package/lib/screens/Chat/index.js +4 -3
- package/lib/screens/Chat/index.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +39 -21
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/lib/screens/Home/components/HomeSuggestions.js +1 -1
- package/lib/screens/Home/components/HomeSuggestions.js.map +1 -1
- package/lib/screens/ShoppingNative/index.js +3 -1
- package/lib/screens/ShoppingNative/index.js.map +1 -1
- package/lib/screens/TravelNative/index.js +70 -0
- package/lib/screens/TravelNative/index.js.map +1 -0
- package/lib/screens/TravelNative/useTravelHostChat.js +66 -0
- package/lib/screens/TravelNative/useTravelHostChat.js.map +1 -0
- package/lib/theme/AppThemeProvider.js +74 -0
- package/lib/theme/AppThemeProvider.js.map +1 -0
- package/lib/theme/appTheme.js +9 -0
- package/lib/theme/appTheme.js.map +1 -0
- package/lib/theme/mobileTokens.js +52 -13
- package/lib/theme/mobileTokens.js.map +1 -1
- package/lib/utils/authUserDisplay.js +27 -9
- package/lib/utils/authUserDisplay.js.map +1 -1
- package/lib/utils/drawerNavigation.js +42 -0
- package/lib/utils/drawerNavigation.js.map +1 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typePolicies.js","sources":["../../src/graphql/typePolicies.ts"],"sourcesContent":["/**\n * Apollo cache field policies — same contract as account/browser.\n *\n * Without these, `cache-first` treats `channelsByUser` / `messages` as a miss\n * (pagination args re-key the list; `fullName @client` has no reader) and the\n * history screen + thread details refetch on every visit.\n */\n\nfunction mergeConnectionEdges(existing: any, incoming: any, { readField }: any) {\n if (!existing) return incoming;\n\n const existingEdges = existing.edges ?? [];\n const incomingEdges = incoming.edges ?? [];\n\n const seenIds = new Set<string>();\n const merged = [...incomingEdges];\n\n incomingEdges.forEach((edge: any) => {\n const node = readField('node', edge);\n const id = node ? readField('id', node) : undefined;\n if (id) seenIds.add(id as string);\n });\n\n existingEdges.forEach((edge: any) => {\n const node = readField('node', edge);\n const id = node ? readField('id', node) : undefined;\n if (id && !seenIds.has(id as string)) {\n merged.push(edge);\n }\n });\n\n return {\n ...incoming,\n edges: merged,\n };\n}\n\nfunction mergeNewsArticlesList(existing: any, incoming: any, { args }: any) {\n const skip = args?.filter?.skip ?? 0;\n const mergedData = existing?.data ? existing.data.slice(0) : [];\n const incomingData = incoming?.data ?? [];\n\n incomingData.forEach((item: any, index: number) => {\n mergedData[skip + index] = item;\n });\n\n return {\n ...incoming,\n data: mergedData,\n };\n}\n\n// Chat-history list: `channelsByUser` returns a flat list of normalized Channel\n// refs (each has an `id`). Append paginated pages by their `skip` offset into one\n// canonical list so loadMore (skip>0, network-only) extends the cache instead of\n// clobbering page 1. A fresh page-1 load (skip 0) replaces the list so pull-to-\n// refresh does not keep a stale tail. Pairs with `keyArgs` which drops\n// limit/skip/sort so all pages of the same (role, criteria) share one cache entry.\nfunction mergeChannelsByUser(existing: any[] | undefined, incoming: any[], { args }: any) {\n const skip = args?.skip ?? 0;\n if (skip === 0) return incoming ?? [];\n const merged = existing ? existing.slice(0) : [];\n (incoming ?? []).forEach((channel: any, index: number) => {\n merged[skip + index] = channel;\n });\n return merged;\n}\n\nfunction mergeMessagesConnection(existing: any, incoming: any, { args }: any) {\n if (!incoming) return existing;\n const skip = args?.skip ?? 0;\n if (skip === 0 || !existing) return incoming;\n\n const mergedData = existing?.data ? existing.data.slice(0) : [];\n const incomingData = incoming?.data ?? [];\n incomingData.forEach((item: any, index: number) => {\n mergedData[skip + index] = item;\n });\n return {\n ...incoming,\n data: mergedData,\n };\n}\n\nexport const typePolicies = {\n Query: {\n fields: {\n // Chat sessions: ignore pagination args so cache stores one canonical list per archive filter\n getAccountChatSessions: {\n keyArgs: ['includeArchived'],\n merge: mergeConnectionEdges,\n },\n // Chat messages (account API): keyed by sessionId, ignore pagination args\n getAccountChatMessages: {\n keyArgs: ['sessionId'],\n merge: mergeConnectionEdges,\n },\n getAccountNewsArticles: {\n keyArgs: ['filter', ['topic']],\n merge: mergeNewsArticlesList,\n },\n // Chat-history channels: one canonical list per (role, criteria)\n // — criteria carries { type, orgName }. Ignore limit/skip/sort so\n // cache-first serves the same list across navigations and loadMore\n // appends instead of replacing.\n channelsByUser: {\n keyArgs: ['role', 'criteria'],\n merge: mergeChannelsByUser,\n },\n // History titles (`editedBy` + type) and thread details (`channelId`)\n // must not share a cache slot. Drop skip/limit so pages merge.\n messages: {\n keyArgs: ['channelId', 'editedBy', 'type', 'props', 'sort', 'parentId'],\n merge: mergeMessagesConnection,\n },\n },\n },\n // `MessengerUser` selects `fullName @client`. With no local resolver the cache\n // cannot satisfy that field, so every UserAccount read is \"incomplete\" — which\n // makes cache-first treat channelsByUser / messages as a miss and refetch on\n // every navigation. Compute fullName locally so the cache reads back complete.\n UserAccount: {\n fields: {\n fullName: {\n read(_existing: string | undefined, { readField }: any): string {\n const given = (readField('givenName') as string | undefined) ?? '';\n const family = (readField('familyName') as string | undefined) ?? '';\n const joined = `${given} ${family}`.replace(/\\s+/g, ' ').trim();\n return joined || (readField('username') as string | undefined) || '';\n },\n },\n },\n },\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"typePolicies.js","sources":["../../src/graphql/typePolicies.ts"],"sourcesContent":["/**\n * Apollo cache field policies — same contract as account/browser.\n *\n * Without these, `cache-first` treats `channelsByUser` / `messages` as a miss\n * (pagination args re-key the list; `fullName @client` has no reader) and the\n * history screen + thread details refetch on every visit.\n */\n\nfunction mergeConnectionEdges(existing: any, incoming: any, { readField }: any) {\n if (!existing) return incoming;\n\n const existingEdges = existing.edges ?? [];\n const incomingEdges = incoming.edges ?? [];\n\n const seenIds = new Set<string>();\n const merged = [...incomingEdges];\n\n incomingEdges.forEach((edge: any) => {\n const node = readField('node', edge);\n const id = node ? readField('id', node) : undefined;\n if (id) seenIds.add(id as string);\n });\n\n existingEdges.forEach((edge: any) => {\n const node = readField('node', edge);\n const id = node ? readField('id', node) : undefined;\n if (id && !seenIds.has(id as string)) {\n merged.push(edge);\n }\n });\n\n return {\n ...incoming,\n edges: merged,\n };\n}\n\nfunction mergeNewsArticlesList(existing: any, incoming: any, { args }: any) {\n const skip = args?.filter?.skip ?? 0;\n const mergedData = existing?.data ? existing.data.slice(0) : [];\n const incomingData = incoming?.data ?? [];\n\n incomingData.forEach((item: any, index: number) => {\n mergedData[skip + index] = item;\n });\n\n return {\n ...incoming,\n data: mergedData,\n };\n}\n\n// Chat-history list: `channelsByUser` returns a flat list of normalized Channel\n// refs (each has an `id`). Append paginated pages by their `skip` offset into one\n// canonical list so loadMore (skip>0, network-only) extends the cache instead of\n// clobbering page 1. A fresh page-1 load (skip 0) replaces the list so pull-to-\n// refresh does not keep a stale tail. Pairs with `keyArgs` which drops\n// limit/skip/sort so all pages of the same (role, criteria) share one cache entry.\nfunction mergeChannelsByUser(existing: any[] | undefined, incoming: any[], { args }: any) {\n const skip = args?.skip ?? 0;\n if (skip === 0) return incoming ?? [];\n const merged = existing ? existing.slice(0) : [];\n (incoming ?? []).forEach((channel: any, index: number) => {\n merged[skip + index] = channel;\n });\n return merged;\n}\n\n/** Marketplace catalog (`formTemplateSubmissions`): one list per group+search. */\nexport function mergeFormTemplateSubmissions(existing: any, incoming: any, { args }: any) {\n const offset = args?.filter?.offset ?? 0;\n if (offset === 0 || !existing) return incoming;\n const mergedNodes = existing?.nodes ? existing.nodes.slice(0) : [];\n const incomingNodes = incoming?.nodes ?? [];\n incomingNodes.forEach((item: any, index: number) => {\n mergedNodes[offset + index] = item;\n });\n return {\n ...incoming,\n nodes: mergedNodes,\n };\n}\n\n/** Canvas Native board gallery: one list; load-more offsets append. */\nexport function mergeNativeCanvasBoards(existing: any, incoming: any, { args }: any) {\n return mergeFormTemplateSubmissions(existing, incoming, { args });\n}\n\nfunction mergeMessagesConnection(existing: any, incoming: any, { args }: any) {\n if (!incoming) return existing;\n const skip = args?.skip ?? 0;\n if (skip === 0 || !existing) return incoming;\n\n const mergedData = existing?.data ? existing.data.slice(0) : [];\n const incomingData = incoming?.data ?? [];\n incomingData.forEach((item: any, index: number) => {\n mergedData[skip + index] = item;\n });\n return {\n ...incoming,\n data: mergedData,\n };\n}\n\nexport const typePolicies = {\n Query: {\n fields: {\n // Chat sessions: ignore pagination args so cache stores one canonical list per archive filter\n getAccountChatSessions: {\n keyArgs: ['includeArchived'],\n merge: mergeConnectionEdges,\n },\n // Chat messages (account API): keyed by sessionId, ignore pagination args\n getAccountChatMessages: {\n keyArgs: ['sessionId'],\n merge: mergeConnectionEdges,\n },\n getAccountNewsArticles: {\n keyArgs: ['filter', ['topic']],\n merge: mergeNewsArticlesList,\n },\n // Video-studio templates: ignore limit/offset so cache-first serves the\n // same gallery after leaving Canvas. loadMore (offset>0) appends.\n formTemplateSubmissions: {\n keyArgs: ['filter', ['group', 'search']],\n merge: mergeFormTemplateSubmissions,\n },\n // Canvas board gallery (Native): ignore offset/limit so cache-first\n // paints the grid; later pages merge by offset.\n nativeCanvasBoards: {\n keyArgs: false,\n merge: mergeNativeCanvasBoards,\n },\n // Chat-history channels: one canonical list per (role, criteria)\n // — criteria carries { type, orgName }. Ignore limit/skip/sort so\n // cache-first serves the same list across navigations and loadMore\n // appends instead of replacing.\n channelsByUser: {\n keyArgs: ['role', 'criteria'],\n merge: mergeChannelsByUser,\n },\n // History titles (`editedBy` + type) and thread details (`channelId`)\n // must not share a cache slot. Drop skip/limit so pages merge.\n messages: {\n keyArgs: ['channelId', 'editedBy', 'type', 'props', 'sort', 'parentId'],\n merge: mergeMessagesConnection,\n },\n },\n },\n // `MessengerUser` selects `fullName @client`. With no local resolver the cache\n // cannot satisfy that field, so every UserAccount read is \"incomplete\" — which\n // makes cache-first treat channelsByUser / messages as a miss and refetch on\n // every navigation. Compute fullName locally so the cache reads back complete.\n UserAccount: {\n fields: {\n fullName: {\n read(_existing: string | undefined, { readField }: any): string {\n const given = (readField('givenName') as string | undefined) ?? '';\n const family = (readField('familyName') as string | undefined) ?? '';\n const joined = `${given} ${family}`.replace(/\\s+/g, ' ').trim();\n return joined || (readField('username') as string | undefined) || '';\n },\n },\n },\n },\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,8 @@ function useAccountDefaultSettings(params) {
|
|
|
31
31
|
organization: readStringField(data == null ? void 0 : data.organization),
|
|
32
32
|
project: readProjectField(data),
|
|
33
33
|
projectId: readStringField(data == null ? void 0 : data.projectId),
|
|
34
|
+
/** Env tag every credential / system token is scoped by — empty means the default. */
|
|
35
|
+
environment: readStringField(data == null ? void 0 : data.environment),
|
|
34
36
|
loading,
|
|
35
37
|
error,
|
|
36
38
|
refetch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAccountDefaultSettings.js","sources":["../../src/hooks/useAccountDefaultSettings.ts"],"sourcesContent":["import { useSettings } from '@adminide-stack/platform-client';\nimport { ContributionSchemaId } from 'common';\nimport type { SettingsUriInput } from '../utils/cdecodeUri';\n\n/**\n * Browser reference (`packages-modules/account/browser/src/hooks/usePrerequisiteId.ts`):\n *\n * ```ts\n * useSettingsLoader({\n * configKey: 'account.default',\n * schemaId: ContributionSchemaId.Configuration,\n * resourceUri: undefined,\n * includeMarketplace: true,\n * });\n * ```\n *\n * On mobile there is no Remix loader, so we use `useSettings` — the same GraphQL\n * `pageSettings` query that `useSettingsLoader` runs when `immediate: true`.\n */\nconst ACCOUNT_DEFAULT_OPTIONS = {\n schemaId: ContributionSchemaId.Configuration,\n configKey: 'account.default',\n includeMarketplace: true,\n} as const;\n\nexport type AccountDefaultSettings = {\n organization: string;\n project: string;\n projectId: string;\n};\n\nfunction readStringField(value: unknown): string {\n return typeof value === 'string' ? value.trim() : '';\n}\n\nfunction readProjectField(value: { project?: unknown; projectId?: unknown } | undefined): string {\n if (!value) return '';\n if (typeof value.project === 'string') return value.project.trim();\n if (typeof value.projectId === 'string') return value.projectId.trim();\n return '';\n}\n\n/**\n * Loads `account.default` for a resource URI (org context, account bootstrap, etc.).\n */\nexport function useAccountDefaultSettings(params: { resourceUri?: SettingsUriInput; skip?: boolean }) {\n const query = useSettings<{\n organization?: string;\n project?: string;\n projectId?: string;\n }>({\n resourceUri: params.resourceUri as never,\n skip: params.skip ?? !params.resourceUri,\n options: ACCOUNT_DEFAULT_OPTIONS,\n });\n\n const { data, loading, error } = query;\n const { refetch } = query as typeof query & { refetch?: () => Promise<unknown> };\n\n return {\n organization: readStringField(data?.organization),\n project: readProjectField(data),\n projectId: readStringField(data?.projectId),\n loading,\n error,\n refetch,\n };\n}\n"],"names":[],"mappings":"oGAmBA,MAAM,uBAA0B,GAAA;AAAA,EAC9B,UAAU,oBAAqB,CAAA,aAAA;AAAA,EAC/B,SAAW,EAAA,iBAAA;AAAA,EACX,kBAAoB,EAAA;AACtB,CAAA;
|
|
1
|
+
{"version":3,"file":"useAccountDefaultSettings.js","sources":["../../src/hooks/useAccountDefaultSettings.ts"],"sourcesContent":["import { useSettings } from '@adminide-stack/platform-client';\nimport { ContributionSchemaId } from 'common';\nimport type { SettingsUriInput } from '../utils/cdecodeUri';\n\n/**\n * Browser reference (`packages-modules/account/browser/src/hooks/usePrerequisiteId.ts`):\n *\n * ```ts\n * useSettingsLoader({\n * configKey: 'account.default',\n * schemaId: ContributionSchemaId.Configuration,\n * resourceUri: undefined,\n * includeMarketplace: true,\n * });\n * ```\n *\n * On mobile there is no Remix loader, so we use `useSettings` — the same GraphQL\n * `pageSettings` query that `useSettingsLoader` runs when `immediate: true`.\n */\nconst ACCOUNT_DEFAULT_OPTIONS = {\n schemaId: ContributionSchemaId.Configuration,\n configKey: 'account.default',\n includeMarketplace: true,\n} as const;\n\nexport type AccountDefaultSettings = {\n organization: string;\n project: string;\n projectId: string;\n environment: string;\n};\n\nfunction readStringField(value: unknown): string {\n return typeof value === 'string' ? value.trim() : '';\n}\n\nfunction readProjectField(value: { project?: unknown; projectId?: unknown } | undefined): string {\n if (!value) return '';\n if (typeof value.project === 'string') return value.project.trim();\n if (typeof value.projectId === 'string') return value.projectId.trim();\n return '';\n}\n\n/**\n * Loads `account.default` for a resource URI (org context, account bootstrap, etc.).\n */\nexport function useAccountDefaultSettings(params: { resourceUri?: SettingsUriInput; skip?: boolean }) {\n const query = useSettings<{\n organization?: string;\n project?: string;\n projectId?: string;\n environment?: string;\n }>({\n resourceUri: params.resourceUri as never,\n skip: params.skip ?? !params.resourceUri,\n options: ACCOUNT_DEFAULT_OPTIONS,\n });\n\n const { data, loading, error } = query;\n const { refetch } = query as typeof query & { refetch?: () => Promise<unknown> };\n\n return {\n organization: readStringField(data?.organization),\n project: readProjectField(data),\n projectId: readStringField(data?.projectId),\n /** Env tag every credential / system token is scoped by — empty means the default. */\n environment: readStringField(data?.environment),\n loading,\n error,\n refetch,\n };\n}\n"],"names":[],"mappings":"oGAmBA,MAAM,uBAA0B,GAAA;AAAA,EAC9B,UAAU,oBAAqB,CAAA,aAAA;AAAA,EAC/B,SAAW,EAAA,iBAAA;AAAA,EACX,kBAAoB,EAAA;AACtB,CAAA;AAOA,SAAS,gBAAgB,KAAwB,EAAA;AAC/C,EAAA,OAAO,OAAO,KAAA,KAAU,QAAW,GAAA,KAAA,CAAM,MAAS,GAAA,EAAA;AACpD;AACA,SAAS,iBAAiB,KAGH,EAAA;AACrB,EAAI,IAAA,CAAC,OAAc,OAAA,EAAA;AACnB,EAAA,IAAI,OAAO,KAAM,CAAA,OAAA,KAAY,UAAiB,OAAA,KAAA,CAAM,QAAQ,IAAK,EAAA;AACjE,EAAA,IAAI,OAAO,KAAM,CAAA,SAAA,KAAc,UAAiB,OAAA,KAAA,CAAM,UAAU,IAAK,EAAA;AACrE,EAAO,OAAA,EAAA;AACT;AAKO,SAAS,0BAA0B,MAGvC,EAAA;AAjDH,EAAA,IAAA,EAAA;AAkDE,EAAA,MAAM,QAAQ,WAKX,CAAA;AAAA,IACD,aAAa,MAAO,CAAA,WAAA;AAAA,IACpB,IAAM,EAAA,CAAA,EAAA,GAAA,MAAA,CAAO,IAAP,KAAA,IAAA,GAAA,EAAA,GAAe,CAAC,MAAO,CAAA,WAAA;AAAA,IAC7B,OAAS,EAAA;AAAA,GACV,CAAA;AACD,EAAM,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACE,GAAA,KAAA;AACJ,EAAM,MAAA;AAAA,IACJ;AAAA,GACE,GAAA,KAAA;AAGJ,EAAO,OAAA;AAAA,IACL,YAAA,EAAc,eAAgB,CAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,YAAY,CAAA;AAAA,IAChD,OAAA,EAAS,iBAAiB,IAAI,CAAA;AAAA,IAC9B,SAAA,EAAW,eAAgB,CAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,SAAS,CAAA;AAAA;AAAA,IAE1C,WAAA,EAAa,eAAgB,CAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,WAAW,CAAA;AAAA,IAC9C,OAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF;AACF"}
|
|
@@ -55,6 +55,7 @@ function usePrerequisiteIds() {
|
|
|
55
55
|
const {
|
|
56
56
|
organization: orgFromContextSettings,
|
|
57
57
|
project: projectFromContextSettings,
|
|
58
|
+
environment: envFromContextSettings,
|
|
58
59
|
loading: contextSettingsLoading,
|
|
59
60
|
refetch: refetchContextSettings
|
|
60
61
|
} = useAccountDefaultSettings({
|
|
@@ -68,6 +69,7 @@ function usePrerequisiteIds() {
|
|
|
68
69
|
const {
|
|
69
70
|
organization: orgFromAccountSettings,
|
|
70
71
|
project: projectFromAccountSettings,
|
|
72
|
+
environment: envFromAccountSettings,
|
|
71
73
|
loading: accountSettingsLoading,
|
|
72
74
|
refetch: refetchAccountSettings
|
|
73
75
|
} = useAccountDefaultSettings({
|
|
@@ -110,6 +112,7 @@ function usePrerequisiteIds() {
|
|
|
110
112
|
const orgName = orgFromContextSettings || orgFromAccountSettings || orgFromMembership || orgFromContextPath || null;
|
|
111
113
|
const rawSettingsProjectIdRaw = projectFromContextSettings || projectFromAccountSettings || null;
|
|
112
114
|
const rawSettingsProjectId = !__DEV__ && rawSettingsProjectIdRaw === TESTING_PROJECT_UUID ? null : rawSettingsProjectIdRaw;
|
|
115
|
+
const tagId = (envFromContextSettings || envFromAccountSettings || "").trim() || TAG_ID;
|
|
113
116
|
useEffect(() => {
|
|
114
117
|
if (!isAuthenticated || orgName || !effectiveUserId) return;
|
|
115
118
|
const timer = setInterval(() => {
|
|
@@ -293,7 +296,7 @@ function usePrerequisiteIds() {
|
|
|
293
296
|
projectId,
|
|
294
297
|
orgName,
|
|
295
298
|
accountUserId: effectiveUserId != null ? effectiveUserId : null,
|
|
296
|
-
tagId
|
|
299
|
+
tagId,
|
|
297
300
|
loading: isLoading,
|
|
298
301
|
/** True while org slug is still unknown (Home should wait before syncing route). */
|
|
299
302
|
orgLoading: isOrgLoading,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePrerequisiteIds.js","sources":["../../src/hooks/usePrerequisiteIds.ts"],"sourcesContent":["import { DEFAULT_PRODUCTION_TAG_ID } from '@adminide-stack/core/lib/constants/defaultIds.js';\nimport { useContextData } from '@adminide-stack/platform-client/lib/hooks/useContextData.js';\nimport {\n orgChangeAction,\n resourceGroupChangeAction,\n} from '@adminide-stack/platform-client/lib/redux/actions/org-action.js';\nimport { isAuthenticatedSelector } from '@adminide-stack/user-auth0-client';\nimport { ConfigurationTarget, ContributionSchemaId } from 'common';\nimport {\n useAccountProfileQuery,\n useCreateVaultMutation,\n useGetProjectsLazyQuery,\n useGetUserOrganizationsQuery,\n useGetUserOrganizationsWithDetailsQuery,\n useQuickCreateProjectForAccountBkMutation,\n useWriteSettingsMutation,\n} from 'common/graphql';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useAccountDefaultSettings } from './useAccountDefaultSettings';\nimport { isUnhydratedCdecodeUri, settingsUriForAccount, toUriInput } from '../utils/cdecodeUri';\n\nconst uuidToObjectId = (uuid: string) => uuid.replace(/-/g, '').substring(0, 24);\n\nconst PROJECT_NAME = 'DEFAULT_YANTRA_PROJECT';\nconst TAG_ID = uuidToObjectId(DEFAULT_PRODUCTION_TAG_ID);\n/** SystemContributionExtensionNames.Account — owns `account.default.*`. */\nconst ACCOUNT_EXTENSION = 'account';\n\n/**\n * DEV ONLY — known working project UUID for local mobile bootstrap when create/list\n * cannot resolve `projectId`. Never use on staging/prod: createSecretApiToken needs a\n * real project that resolves to a Mongo ObjectId (unknown UUID → ObjectId cast 400).\n */\nconst TESTING_PROJECT_UUID = '9a8ac704-1040-4836-9b72-48b771ca91b1';\n\nconst ORG_RESOLVE_POLL_MS = 2000;\nconst PROFILE_POLL_MS = 1500;\n\n// ── Module-level project fix (parity with browser) ───────────────────────────\n// Several screens/hooks mount `usePrerequisiteIds` at once. Per-instance refs race\n// and can create multiple orphan projects. Keep a single-flight guard + user id so\n// adopt/create/persist runs once per account session.\n// Resolved project must also be shared — otherwise WebBuilderPrewarm can \"win\" the\n// flight and HomeScreen never sees projectId (submit stuck on \"not ready\").\nlet projectFixInFlight = false;\nlet projectFixUserId: string | null = null;\nlet sharedResolvedProjectId: string | null = null;\nconst sharedProjectListeners = new Set<() => void>();\n\nfunction publishSharedResolvedProjectId(projectUuid: string): void {\n sharedResolvedProjectId = projectUuid;\n sharedProjectListeners.forEach((listener) => listener());\n}\n\nfunction pickDefaultOrgSlug(\n orgs: Array<{ name?: string | null; title?: string | null } | null | undefined> | null | undefined,\n): string | null {\n if (!orgs?.length) return null;\n const first = orgs.find((o) => typeof o?.name === 'string' && o.name.trim().length > 0);\n return first?.name?.trim() ?? null;\n}\n\n/**\n * Org + project prerequisites for mobile (parity with browser `usePrerequisiteIds`).\n *\n * Settings use the same `account.default` config as web (`useSettingsLoader` → `useSettings` on mobile).\n * After verify-user, account-level settings (`//accounts/{id}#settings`) and org membership are polled\n * until `organization` is available, then route context is synced on Home.\n *\n * Scenario: org set but no `account.default.project` → adopt an existing project in the org\n * (or create one), persist settings, and bind resourceGroup — same as browser Scenario 2.\n */\nexport function usePrerequisiteIds() {\n const dispatch = useDispatch();\n const isAuthenticated = useSelector(isAuthenticatedSelector);\n\n const { data: contextData, complete: contextComplete } = useContextData();\n const contextLoading = !contextComplete;\n const cdecodeUri = contextData?.cdecodeUri;\n const contextUserId = contextData?.userId ?? null;\n\n const contextResourceUri = useMemo(() => {\n if (isUnhydratedCdecodeUri(cdecodeUri)) return undefined;\n return toUriInput(cdecodeUri);\n }, [cdecodeUri]);\n\n const {\n data: accountProfileData,\n loading: userLoading,\n refetch: refetchProfile,\n } = useAccountProfileQuery({\n fetchPolicy: 'cache-and-network',\n errorPolicy: 'all',\n skip: !isAuthenticated,\n });\n const profileUserId = accountProfileData?.accountProfile?.user?.id ?? null;\n const effectiveUserId = isAuthenticated ? profileUserId || contextUserId : null;\n\n useEffect(() => {\n if (!isAuthenticated || profileUserId) return;\n const timer = setInterval(() => {\n refetchProfile().catch(() => undefined);\n }, PROFILE_POLL_MS);\n return () => clearInterval(timer);\n }, [isAuthenticated, profileUserId, refetchProfile]);\n\n // Step 1 (web): account.default via settings loader — context cdecodeUri when hydrated\n const {\n organization: orgFromContextSettings,\n project: projectFromContextSettings,\n loading: contextSettingsLoading,\n refetch: refetchContextSettings,\n } = useAccountDefaultSettings({\n resourceUri: contextResourceUri,\n skip: !isAuthenticated || !contextResourceUri,\n });\n\n const accountResourceUri = useMemo(() => {\n if (!effectiveUserId || orgFromContextSettings) return undefined;\n return settingsUriForAccount(effectiveUserId);\n }, [effectiveUserId, orgFromContextSettings]);\n\n // Mobile bootstrap: read account.default from account document before org is on the route\n const {\n organization: orgFromAccountSettings,\n project: projectFromAccountSettings,\n loading: accountSettingsLoading,\n refetch: refetchAccountSettings,\n } = useAccountDefaultSettings({\n resourceUri: accountResourceUri,\n skip: !isAuthenticated || !accountResourceUri,\n });\n\n const {\n data: orgsData,\n loading: orgsLoading,\n refetch: refetchOrgs,\n } = useGetUserOrganizationsWithDetailsQuery({\n skip: !isAuthenticated || !effectiveUserId,\n fetchPolicy: 'cache-and-network',\n });\n\n const {\n data: orgsByUserData,\n loading: orgsByUserLoading,\n refetch: refetchOrgsByUser,\n } = useGetUserOrganizationsQuery({\n variables: { userId: effectiveUserId ?? undefined },\n skip: !isAuthenticated || !effectiveUserId,\n fetchPolicy: 'cache-and-network',\n });\n\n const orgFromMembership = useMemo(() => {\n const fromDetails = pickDefaultOrgSlug(orgsData?.getUserOrganizationsWithDetails);\n if (fromDetails) return fromDetails;\n return pickDefaultOrgSlug(orgsByUserData?.getUserOrganizations);\n }, [orgsData, orgsByUserData]);\n\n const orgFromContextPath = useMemo(() => {\n if (isUnhydratedCdecodeUri(cdecodeUri)) return null;\n const { path } = toUriInput(cdecodeUri);\n const match = path.match(/^\\/([^/]+)\\//);\n return match?.[1]?.trim() || null;\n }, [cdecodeUri]);\n\n const orgName = orgFromContextSettings || orgFromAccountSettings || orgFromMembership || orgFromContextPath || null;\n\n const rawSettingsProjectIdRaw = projectFromContextSettings || projectFromAccountSettings || null;\n // Staging may have persisted the local testing UUID; treat it as unset so bootstrap can mint a real project.\n const rawSettingsProjectId =\n !__DEV__ && rawSettingsProjectIdRaw === TESTING_PROJECT_UUID ? null : rawSettingsProjectIdRaw;\n\n useEffect(() => {\n if (!isAuthenticated || orgName || !effectiveUserId) return;\n const timer = setInterval(() => {\n refetchContextSettings?.()?.catch(() => undefined);\n refetchAccountSettings?.()?.catch(() => undefined);\n refetchOrgs().catch(() => undefined);\n refetchOrgsByUser().catch(() => undefined);\n }, ORG_RESOLVE_POLL_MS);\n return () => clearInterval(timer);\n }, [\n isAuthenticated,\n orgName,\n effectiveUserId,\n refetchContextSettings,\n refetchAccountSettings,\n refetchOrgs,\n refetchOrgsByUser,\n ]);\n\n const settingsProjectId = rawSettingsProjectId;\n\n const [resolvedProjectId, setResolvedProjectId] = useState<string | null>(() => sharedResolvedProjectId);\n const [isInitializingProject, setIsInitializingProject] = useState(false);\n\n // Cross-instance sync: when another hook wins the project bootstrap, adopt it.\n useEffect(() => {\n const onShared = () => {\n if (sharedResolvedProjectId) setResolvedProjectId(sharedResolvedProjectId);\n };\n sharedProjectListeners.add(onShared);\n onShared();\n return () => {\n sharedProjectListeners.delete(onShared);\n };\n }, []);\n\n // New account session → clear shared fallback so we don't leak another user's project.\n useEffect(() => {\n if (!effectiveUserId) return;\n if (projectFixUserId && projectFixUserId !== effectiveUserId) {\n sharedResolvedProjectId = null;\n projectFixInFlight = false;\n setResolvedProjectId(null);\n }\n }, [effectiveUserId]);\n\n const projectId = settingsProjectId || resolvedProjectId || sharedResolvedProjectId;\n const settingsLoading = contextSettingsLoading || accountSettingsLoading;\n // Wait for settings to settle so we don't create before an existing default loads.\n const needsProjectCreation = !settingsLoading && !!orgName && !rawSettingsProjectId && !projectId;\n\n const [fetchProjects] = useGetProjectsLazyQuery();\n const [createProject, { error: createError, loading: projectCreating }] =\n useQuickCreateProjectForAccountBkMutation();\n const [createVault, { error: vaultCreateError }] = useCreateVaultMutation();\n const [writeSettings] = useWriteSettingsMutation();\n\n const accountSettingsUri = useMemo(() => {\n if (!effectiveUserId) return null;\n return settingsUriForAccount(effectiveUserId);\n }, [effectiveUserId]);\n\n const persistDefaults = useCallback(\n async (orgToSet: string, projectUuid: string) => {\n if (!accountSettingsUri) return;\n await writeSettings({\n variables: {\n // The URI scalar's TS type is the vscode URI class, but the wire\n // format is this serializable POJO (same shape toUriInput emits).\n editingUri:\n accountSettingsUri as unknown as import('@vscode-alt/monaco-editor/esm/vs/base/common/uri.js').URI,\n settings: {\n 'account.default.organization': orgToSet,\n 'account.default.project': projectUuid,\n },\n target: ConfigurationTarget.USER,\n schemaId: ContributionSchemaId.Configuration,\n extensionName: ACCOUNT_EXTENSION,\n },\n });\n },\n [accountSettingsUri, writeSettings],\n );\n\n const refetchDefaults = useCallback(async () => {\n await Promise.all([\n refetchContextSettings?.()?.catch(() => undefined) ?? Promise.resolve(),\n refetchAccountSettings?.()?.catch(() => undefined) ?? Promise.resolve(),\n ]);\n }, [refetchContextSettings, refetchAccountSettings]);\n\n // Scenario 2: default org present but no project → adopt existing (or create once),\n // then persist so reload / other mounts do not create orphan projects.\n useEffect(() => {\n if (!needsProjectCreation || !effectiveUserId || userLoading || !orgName) {\n return;\n }\n\n if (projectFixUserId !== effectiveUserId) {\n projectFixUserId = effectiveUserId;\n projectFixInFlight = false;\n sharedResolvedProjectId = null;\n }\n\n if (projectFixInFlight) {\n return;\n }\n\n projectFixInFlight = true;\n setIsInitializingProject(true);\n\n (async () => {\n try {\n const existing = await fetchProjects({ variables: { orgName, limit: 50 } });\n let projectUuid =\n (existing.data?.getProjects?.data || []).find((p) => p?.projectId)?.projectId ?? undefined;\n let newMongoProjectId: string | undefined;\n\n if (!projectUuid) {\n const created = await createProject({\n variables: {\n input: {\n accountId: effectiveUserId,\n projectName: PROJECT_NAME,\n },\n },\n });\n newMongoProjectId = created.data?.quickCreateProjectForAccount?.id ?? undefined;\n if (newMongoProjectId) {\n const after = await fetchProjects({ variables: { orgName, limit: 50 } });\n projectUuid =\n (after.data?.getProjects?.data || []).find((p) => p?.id === newMongoProjectId)?.projectId ??\n // createSecretApiToken accepts Mongo ObjectId directly when no UUID dashes.\n newMongoProjectId;\n await createVault({\n variables: {\n input: {\n orgName,\n projectId: newMongoProjectId,\n },\n },\n }).catch((error) =>\n console.error('[usePrerequisiteIds] Vault creation failed:', error?.message),\n );\n } else {\n console.warn('[usePrerequisiteIds] Project creation returned no id');\n }\n }\n\n if (!projectUuid) {\n if (__DEV__) {\n console.warn(\n `[usePrerequisiteIds] Could not resolve a project UUID — using testing project ${TESTING_PROJECT_UUID}`,\n );\n projectUuid = TESTING_PROJECT_UUID;\n } else {\n console.error(\n '[usePrerequisiteIds] Could not resolve a project UUID — refusing testing fallback outside __DEV__',\n );\n projectFixInFlight = false;\n return;\n }\n }\n\n setResolvedProjectId(projectUuid);\n publishSharedResolvedProjectId(projectUuid);\n await persistDefaults(orgName, projectUuid);\n dispatch(orgChangeAction({ orgName, userId: effectiveUserId }));\n dispatch(resourceGroupChangeAction({ resourceGroup: projectUuid }));\n await refetchDefaults();\n } catch (error) {\n console.error('[usePrerequisiteIds] Project bootstrap failed:', (error as Error)?.message);\n if (__DEV__) {\n console.warn(\n `[usePrerequisiteIds] Falling back to testing project ${TESTING_PROJECT_UUID} after bootstrap error`,\n );\n setResolvedProjectId(TESTING_PROJECT_UUID);\n publishSharedResolvedProjectId(TESTING_PROJECT_UUID);\n try {\n await persistDefaults(orgName, TESTING_PROJECT_UUID);\n dispatch(orgChangeAction({ orgName, userId: effectiveUserId }));\n dispatch(resourceGroupChangeAction({ resourceGroup: TESTING_PROJECT_UUID }));\n await refetchDefaults();\n } catch (persistError) {\n console.error(\n '[usePrerequisiteIds] Testing fallback persist failed:',\n (persistError as Error)?.message,\n );\n projectFixInFlight = false;\n }\n } else {\n projectFixInFlight = false;\n }\n } finally {\n setIsInitializingProject(false);\n }\n })();\n }, [\n createProject,\n createVault,\n dispatch,\n fetchProjects,\n needsProjectCreation,\n orgName,\n persistDefaults,\n refetchDefaults,\n effectiveUserId,\n userLoading,\n ]);\n\n const isOrgLoading =\n isAuthenticated &&\n !orgName &&\n (userLoading ||\n contextLoading ||\n settingsLoading ||\n orgsLoading ||\n orgsByUserLoading ||\n Boolean(effectiveUserId));\n\n const isProjectLoading =\n !!orgName &&\n !rawSettingsProjectId &&\n !projectId &&\n (isInitializingProject || projectCreating || settingsLoading);\n\n const isLoading = isOrgLoading || isProjectLoading;\n\n return {\n projectId,\n orgName,\n accountUserId: effectiveUserId ?? null,\n tagId: TAG_ID,\n loading: isLoading,\n /** True while org slug is still unknown (Home should wait before syncing route). */\n orgLoading: isOrgLoading,\n errors: { createError, vaultCreateError },\n };\n}\n"],"names":["_a","_b","_c","_d"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePrerequisiteIds.js","sources":["../../src/hooks/usePrerequisiteIds.ts"],"sourcesContent":["import { DEFAULT_PRODUCTION_TAG_ID } from '@adminide-stack/core/lib/constants/defaultIds.js';\nimport { useContextData } from '@adminide-stack/platform-client/lib/hooks/useContextData.js';\nimport {\n orgChangeAction,\n resourceGroupChangeAction,\n} from '@adminide-stack/platform-client/lib/redux/actions/org-action.js';\nimport { isAuthenticatedSelector } from '@adminide-stack/user-auth0-client';\nimport { ConfigurationTarget, ContributionSchemaId } from 'common';\nimport {\n useAccountProfileQuery,\n useCreateVaultMutation,\n useGetProjectsLazyQuery,\n useGetUserOrganizationsQuery,\n useGetUserOrganizationsWithDetailsQuery,\n useQuickCreateProjectForAccountBkMutation,\n useWriteSettingsMutation,\n} from 'common/graphql';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useAccountDefaultSettings } from './useAccountDefaultSettings';\nimport { isUnhydratedCdecodeUri, settingsUriForAccount, toUriInput } from '../utils/cdecodeUri';\n\nconst uuidToObjectId = (uuid: string) => uuid.replace(/-/g, '').substring(0, 24);\n\nconst PROJECT_NAME = 'DEFAULT_YANTRA_PROJECT';\nconst TAG_ID = uuidToObjectId(DEFAULT_PRODUCTION_TAG_ID);\n/** SystemContributionExtensionNames.Account — owns `account.default.*`. */\nconst ACCOUNT_EXTENSION = 'account';\n\n/**\n * DEV ONLY — known working project UUID for local mobile bootstrap when create/list\n * cannot resolve `projectId`. Never use on staging/prod: createSecretApiToken needs a\n * real project that resolves to a Mongo ObjectId (unknown UUID → ObjectId cast 400).\n */\nconst TESTING_PROJECT_UUID = '9a8ac704-1040-4836-9b72-48b771ca91b1';\n\nconst ORG_RESOLVE_POLL_MS = 2000;\nconst PROFILE_POLL_MS = 1500;\n\n// ── Module-level project fix (parity with browser) ───────────────────────────\n// Several screens/hooks mount `usePrerequisiteIds` at once. Per-instance refs race\n// and can create multiple orphan projects. Keep a single-flight guard + user id so\n// adopt/create/persist runs once per account session.\n// Resolved project must also be shared — otherwise WebBuilderPrewarm can \"win\" the\n// flight and HomeScreen never sees projectId (submit stuck on \"not ready\").\nlet projectFixInFlight = false;\nlet projectFixUserId: string | null = null;\nlet sharedResolvedProjectId: string | null = null;\nconst sharedProjectListeners = new Set<() => void>();\n\nfunction publishSharedResolvedProjectId(projectUuid: string): void {\n sharedResolvedProjectId = projectUuid;\n sharedProjectListeners.forEach((listener) => listener());\n}\n\nfunction pickDefaultOrgSlug(\n orgs: Array<{ name?: string | null; title?: string | null } | null | undefined> | null | undefined,\n): string | null {\n if (!orgs?.length) return null;\n const first = orgs.find((o) => typeof o?.name === 'string' && o.name.trim().length > 0);\n return first?.name?.trim() ?? null;\n}\n\n/**\n * Org + project prerequisites for mobile (parity with browser `usePrerequisiteIds`).\n *\n * Settings use the same `account.default` config as web (`useSettingsLoader` → `useSettings` on mobile).\n * After verify-user, account-level settings (`//accounts/{id}#settings`) and org membership are polled\n * until `organization` is available, then route context is synced on Home.\n *\n * Scenario: org set but no `account.default.project` → adopt an existing project in the org\n * (or create one), persist settings, and bind resourceGroup — same as browser Scenario 2.\n */\nexport function usePrerequisiteIds() {\n const dispatch = useDispatch();\n const isAuthenticated = useSelector(isAuthenticatedSelector);\n\n const { data: contextData, complete: contextComplete } = useContextData();\n const contextLoading = !contextComplete;\n const cdecodeUri = contextData?.cdecodeUri;\n const contextUserId = contextData?.userId ?? null;\n\n const contextResourceUri = useMemo(() => {\n if (isUnhydratedCdecodeUri(cdecodeUri)) return undefined;\n return toUriInput(cdecodeUri);\n }, [cdecodeUri]);\n\n const {\n data: accountProfileData,\n loading: userLoading,\n refetch: refetchProfile,\n } = useAccountProfileQuery({\n fetchPolicy: 'cache-and-network',\n errorPolicy: 'all',\n skip: !isAuthenticated,\n });\n const profileUserId = accountProfileData?.accountProfile?.user?.id ?? null;\n const effectiveUserId = isAuthenticated ? profileUserId || contextUserId : null;\n\n useEffect(() => {\n if (!isAuthenticated || profileUserId) return;\n const timer = setInterval(() => {\n refetchProfile().catch(() => undefined);\n }, PROFILE_POLL_MS);\n return () => clearInterval(timer);\n }, [isAuthenticated, profileUserId, refetchProfile]);\n\n // Step 1 (web): account.default via settings loader — context cdecodeUri when hydrated\n const {\n organization: orgFromContextSettings,\n project: projectFromContextSettings,\n environment: envFromContextSettings,\n loading: contextSettingsLoading,\n refetch: refetchContextSettings,\n } = useAccountDefaultSettings({\n resourceUri: contextResourceUri,\n skip: !isAuthenticated || !contextResourceUri,\n });\n\n const accountResourceUri = useMemo(() => {\n if (!effectiveUserId || orgFromContextSettings) return undefined;\n return settingsUriForAccount(effectiveUserId);\n }, [effectiveUserId, orgFromContextSettings]);\n\n // Mobile bootstrap: read account.default from account document before org is on the route\n const {\n organization: orgFromAccountSettings,\n project: projectFromAccountSettings,\n environment: envFromAccountSettings,\n loading: accountSettingsLoading,\n refetch: refetchAccountSettings,\n } = useAccountDefaultSettings({\n resourceUri: accountResourceUri,\n skip: !isAuthenticated || !accountResourceUri,\n });\n\n const {\n data: orgsData,\n loading: orgsLoading,\n refetch: refetchOrgs,\n } = useGetUserOrganizationsWithDetailsQuery({\n skip: !isAuthenticated || !effectiveUserId,\n fetchPolicy: 'cache-and-network',\n });\n\n const {\n data: orgsByUserData,\n loading: orgsByUserLoading,\n refetch: refetchOrgsByUser,\n } = useGetUserOrganizationsQuery({\n variables: { userId: effectiveUserId ?? undefined },\n skip: !isAuthenticated || !effectiveUserId,\n fetchPolicy: 'cache-and-network',\n });\n\n const orgFromMembership = useMemo(() => {\n const fromDetails = pickDefaultOrgSlug(orgsData?.getUserOrganizationsWithDetails);\n if (fromDetails) return fromDetails;\n return pickDefaultOrgSlug(orgsByUserData?.getUserOrganizations);\n }, [orgsData, orgsByUserData]);\n\n const orgFromContextPath = useMemo(() => {\n if (isUnhydratedCdecodeUri(cdecodeUri)) return null;\n const { path } = toUriInput(cdecodeUri);\n const match = path.match(/^\\/([^/]+)\\//);\n return match?.[1]?.trim() || null;\n }, [cdecodeUri]);\n\n const orgName = orgFromContextSettings || orgFromAccountSettings || orgFromMembership || orgFromContextPath || null;\n\n const rawSettingsProjectIdRaw = projectFromContextSettings || projectFromAccountSettings || null;\n // Staging may have persisted the local testing UUID; treat it as unset so bootstrap can mint a real project.\n const rawSettingsProjectId =\n !__DEV__ && rawSettingsProjectIdRaw === TESTING_PROJECT_UUID ? null : rawSettingsProjectIdRaw;\n\n /**\n * Env tag every credential read / vault-secret resolve / system-token mint is scoped by,\n * picked on web in Account > Preferences > Workspace and persisted as\n * `account.default.environment` (parity with the browser hook). Empty — the default, and\n * every account that never picked one — keeps the static root Production tag.\n */\n const tagId = (envFromContextSettings || envFromAccountSettings || '').trim() || TAG_ID;\n\n useEffect(() => {\n if (!isAuthenticated || orgName || !effectiveUserId) return;\n const timer = setInterval(() => {\n refetchContextSettings?.()?.catch(() => undefined);\n refetchAccountSettings?.()?.catch(() => undefined);\n refetchOrgs().catch(() => undefined);\n refetchOrgsByUser().catch(() => undefined);\n }, ORG_RESOLVE_POLL_MS);\n return () => clearInterval(timer);\n }, [\n isAuthenticated,\n orgName,\n effectiveUserId,\n refetchContextSettings,\n refetchAccountSettings,\n refetchOrgs,\n refetchOrgsByUser,\n ]);\n\n const settingsProjectId = rawSettingsProjectId;\n\n const [resolvedProjectId, setResolvedProjectId] = useState<string | null>(() => sharedResolvedProjectId);\n const [isInitializingProject, setIsInitializingProject] = useState(false);\n\n // Cross-instance sync: when another hook wins the project bootstrap, adopt it.\n useEffect(() => {\n const onShared = () => {\n if (sharedResolvedProjectId) setResolvedProjectId(sharedResolvedProjectId);\n };\n sharedProjectListeners.add(onShared);\n onShared();\n return () => {\n sharedProjectListeners.delete(onShared);\n };\n }, []);\n\n // New account session → clear shared fallback so we don't leak another user's project.\n useEffect(() => {\n if (!effectiveUserId) return;\n if (projectFixUserId && projectFixUserId !== effectiveUserId) {\n sharedResolvedProjectId = null;\n projectFixInFlight = false;\n setResolvedProjectId(null);\n }\n }, [effectiveUserId]);\n\n const projectId = settingsProjectId || resolvedProjectId || sharedResolvedProjectId;\n const settingsLoading = contextSettingsLoading || accountSettingsLoading;\n // Wait for settings to settle so we don't create before an existing default loads.\n const needsProjectCreation = !settingsLoading && !!orgName && !rawSettingsProjectId && !projectId;\n\n const [fetchProjects] = useGetProjectsLazyQuery();\n const [createProject, { error: createError, loading: projectCreating }] =\n useQuickCreateProjectForAccountBkMutation();\n const [createVault, { error: vaultCreateError }] = useCreateVaultMutation();\n const [writeSettings] = useWriteSettingsMutation();\n\n const accountSettingsUri = useMemo(() => {\n if (!effectiveUserId) return null;\n return settingsUriForAccount(effectiveUserId);\n }, [effectiveUserId]);\n\n const persistDefaults = useCallback(\n async (orgToSet: string, projectUuid: string) => {\n if (!accountSettingsUri) return;\n await writeSettings({\n variables: {\n // The URI scalar's TS type is the vscode URI class, but the wire\n // format is this serializable POJO (same shape toUriInput emits).\n editingUri:\n accountSettingsUri as unknown as import('@vscode-alt/monaco-editor/esm/vs/base/common/uri.js').URI,\n settings: {\n 'account.default.organization': orgToSet,\n 'account.default.project': projectUuid,\n },\n target: ConfigurationTarget.USER,\n schemaId: ContributionSchemaId.Configuration,\n extensionName: ACCOUNT_EXTENSION,\n },\n });\n },\n [accountSettingsUri, writeSettings],\n );\n\n const refetchDefaults = useCallback(async () => {\n await Promise.all([\n refetchContextSettings?.()?.catch(() => undefined) ?? Promise.resolve(),\n refetchAccountSettings?.()?.catch(() => undefined) ?? Promise.resolve(),\n ]);\n }, [refetchContextSettings, refetchAccountSettings]);\n\n // Scenario 2: default org present but no project → adopt existing (or create once),\n // then persist so reload / other mounts do not create orphan projects.\n useEffect(() => {\n if (!needsProjectCreation || !effectiveUserId || userLoading || !orgName) {\n return;\n }\n\n if (projectFixUserId !== effectiveUserId) {\n projectFixUserId = effectiveUserId;\n projectFixInFlight = false;\n sharedResolvedProjectId = null;\n }\n\n if (projectFixInFlight) {\n return;\n }\n\n projectFixInFlight = true;\n setIsInitializingProject(true);\n\n (async () => {\n try {\n const existing = await fetchProjects({ variables: { orgName, limit: 50 } });\n let projectUuid =\n (existing.data?.getProjects?.data || []).find((p) => p?.projectId)?.projectId ?? undefined;\n let newMongoProjectId: string | undefined;\n\n if (!projectUuid) {\n const created = await createProject({\n variables: {\n input: {\n accountId: effectiveUserId,\n projectName: PROJECT_NAME,\n },\n },\n });\n newMongoProjectId = created.data?.quickCreateProjectForAccount?.id ?? undefined;\n if (newMongoProjectId) {\n const after = await fetchProjects({ variables: { orgName, limit: 50 } });\n projectUuid =\n (after.data?.getProjects?.data || []).find((p) => p?.id === newMongoProjectId)?.projectId ??\n // createSecretApiToken accepts Mongo ObjectId directly when no UUID dashes.\n newMongoProjectId;\n await createVault({\n variables: {\n input: {\n orgName,\n projectId: newMongoProjectId,\n },\n },\n }).catch((error) =>\n console.error('[usePrerequisiteIds] Vault creation failed:', error?.message),\n );\n } else {\n console.warn('[usePrerequisiteIds] Project creation returned no id');\n }\n }\n\n if (!projectUuid) {\n if (__DEV__) {\n console.warn(\n `[usePrerequisiteIds] Could not resolve a project UUID — using testing project ${TESTING_PROJECT_UUID}`,\n );\n projectUuid = TESTING_PROJECT_UUID;\n } else {\n console.error(\n '[usePrerequisiteIds] Could not resolve a project UUID — refusing testing fallback outside __DEV__',\n );\n projectFixInFlight = false;\n return;\n }\n }\n\n setResolvedProjectId(projectUuid);\n publishSharedResolvedProjectId(projectUuid);\n await persistDefaults(orgName, projectUuid);\n dispatch(orgChangeAction({ orgName, userId: effectiveUserId }));\n dispatch(resourceGroupChangeAction({ resourceGroup: projectUuid }));\n await refetchDefaults();\n } catch (error) {\n console.error('[usePrerequisiteIds] Project bootstrap failed:', (error as Error)?.message);\n if (__DEV__) {\n console.warn(\n `[usePrerequisiteIds] Falling back to testing project ${TESTING_PROJECT_UUID} after bootstrap error`,\n );\n setResolvedProjectId(TESTING_PROJECT_UUID);\n publishSharedResolvedProjectId(TESTING_PROJECT_UUID);\n try {\n await persistDefaults(orgName, TESTING_PROJECT_UUID);\n dispatch(orgChangeAction({ orgName, userId: effectiveUserId }));\n dispatch(resourceGroupChangeAction({ resourceGroup: TESTING_PROJECT_UUID }));\n await refetchDefaults();\n } catch (persistError) {\n console.error(\n '[usePrerequisiteIds] Testing fallback persist failed:',\n (persistError as Error)?.message,\n );\n projectFixInFlight = false;\n }\n } else {\n projectFixInFlight = false;\n }\n } finally {\n setIsInitializingProject(false);\n }\n })();\n }, [\n createProject,\n createVault,\n dispatch,\n fetchProjects,\n needsProjectCreation,\n orgName,\n persistDefaults,\n refetchDefaults,\n effectiveUserId,\n userLoading,\n ]);\n\n const isOrgLoading =\n isAuthenticated &&\n !orgName &&\n (userLoading ||\n contextLoading ||\n settingsLoading ||\n orgsLoading ||\n orgsByUserLoading ||\n Boolean(effectiveUserId));\n\n const isProjectLoading =\n !!orgName &&\n !rawSettingsProjectId &&\n !projectId &&\n (isInitializingProject || projectCreating || settingsLoading);\n\n const isLoading = isOrgLoading || isProjectLoading;\n\n return {\n projectId,\n orgName,\n accountUserId: effectiveUserId ?? null,\n tagId,\n loading: isLoading,\n /** True while org slug is still unknown (Home should wait before syncing route). */\n orgLoading: isOrgLoading,\n errors: { createError, vaultCreateError },\n };\n}\n"],"names":["_a","_b","_c","_d"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {Feature}from'@common-stack/client-react';import YantraMobileModule from'./module.js';export{default as Home}from'./screens/Home/HomeScreen.js';export{default as NewChat}from'./screens/NewChat/index.js';export{default as ChatHistory}from'./screens/ChatHistory/index.js';export{default as Apps}from'./screens/Apps/index.js';export{default as WebBuilder}from'./screens/WebBuilder/index.js';export{GatewayContextProvider,useGatewayContext}from'./contexts/GatewayContext.js';export{CdecliConnectionProvider,useCdecliConnection}from'./contexts/CdecliConnectionContext.js';export{BUILTIN_MOBILE_GATEWAYS,MAX_CONCURRENT_TASKS,STORAGE_KEYS}from'./config/constants.js';export{config}from'./config/env-config.js';export{useCdecliAutoConnect}from'./hooks/useCdecliAutoConnect.js';export{useObtainSystemToken}from'./hooks/useObtainSystemToken.js';export{appendSurfaceAuthParams,buildCdecliTokenInjection,buildSurfaceGateRecoveryScript,mintSurfaceSystemToken,resolveSurfaceCatalogBackend}from'./hooks/mintSurfaceSystemToken.js';export{isInstanceNotFoundError,useGatewayConnection}from'./hooks/useGatewayConnection.js';export{usePrerequisiteIds}from'./hooks/usePrerequisiteIds.js';export{useWorkspaceProvisioner}from'./hooks/useWorkspaceProvisioner.js';export{useGatewayRegistry}from'./hooks/useGatewayRegistry.js';export{agentSessionManager}from'./services/agentSessionManager.js';export{ensureGatewayApiKeys,resetGatewayApiKeyBridge}from'./services/gatewayApiKeyBridge.js';export{GatewayClient}from'./services/gatewayClient.js';export{BRIDGE_PROTOCOL_VERSION,BRIDGE_READY_ACTION,DEFAULT_BRIDGE_TIMEOUT_MS,DEFAULT_CHUNK_SIZE,MessageType}from'./bridge/types.js';export{WebViewManager}from'./bridge/WebViewManager.js';export{NativeWebViewBridge}from'./bridge/NativeWebViewBridge.js';export{TypedBridge}from'./bridge/TypedBridge.js';export{CancellableRequest}from'./bridge/CancellableRequest.js';export{ChunkedMessageHandler}from'./bridge/ChunkedMessageHandler.js';export{BridgeDebugger}from'./bridge/BridgeDebugger.js';export{WEB_BRIDGE_BOOTSTRAP}from'./bridge/webBridgeBootstrap.js';export{AuthenticatedFetch}from'./bridge/AuthenticatedFetch.js';export{AuthBridgeHandler}from'./bridge/handlers/AuthBridgeHandler.js';export{NavigationBridgeHandler}from'./bridge/handlers/NavigationBridgeHandler.js';export{AnalyticsBridgeHandler}from'./bridge/handlers/AnalyticsBridgeHandler.js';export{getPackagerHost,resolveMobileWebUrl}from'./bridge/resolveMobileWebUrl.js';export{YANTRA_LOADER_SIZE_COMPACT,YANTRA_LOADER_SIZE_DEFAULT,YantraBrandLoader}from'./components/YantraBrandLoader.js';export{default as CustomDrawer}from'./components/CustomDrawer.js';export{isKeyboardControllerAvailable}from'./utils/keyboardController.js';export{getNativeCanvasExperience,getNativeCanvasViewer,preloadNativeCanvasExperience,registerCanvasExperiencePreload,registerNativeCanvasExperience,registerNativeCanvasViewer}from'./features/canvas/nativeViewerRegistry.js';export{getNativeCharactersExperience,registerNativeCharactersExperience}from'./features/characters/nativeCharactersRegistry.js';export{getNativeChatExperience,registerNativeChatExperience}from'./features/messaging/nativeChatRegistry.js';export{getNativeShoppingExperience,preloadNativeShoppingExperience,registerNativeShoppingExperience,registerShoppingExperiencePreload}from'./features/shopping/nativeShoppingRegistry.js';export{NativeAgentChat}from'./features/agent-chat/NativeAgentChat.js';export{resolveSurfaceAuthGraphqlUrl}from'./hooks/resolveSurfaceAuthGraphqlUrl.js';var index = new Feature(YantraMobileModule);export{index as default};//# sourceMappingURL=index.js.map
|
|
1
|
+
import {Feature}from'@common-stack/client-react';import YantraMobileModule from'./module.js';export{default as Home}from'./screens/Home/HomeScreen.js';export{default as NewChat}from'./screens/NewChat/index.js';export{default as Account}from'./screens/Account/index.js';export{default as ChatHistory}from'./screens/ChatHistory/index.js';export{default as Apps}from'./screens/Apps/index.js';export{default as WebBuilder}from'./screens/WebBuilder/index.js';export{GatewayContextProvider,useGatewayContext}from'./contexts/GatewayContext.js';export{CdecliConnectionProvider,useCdecliConnection}from'./contexts/CdecliConnectionContext.js';export{BUILTIN_MOBILE_GATEWAYS,MAX_CONCURRENT_TASKS,STORAGE_KEYS}from'./config/constants.js';export{config}from'./config/env-config.js';export{useCdecliAutoConnect}from'./hooks/useCdecliAutoConnect.js';export{useObtainSystemToken}from'./hooks/useObtainSystemToken.js';export{appendSurfaceAuthParams,buildCdecliTokenInjection,buildSurfaceGateRecoveryScript,mintSurfaceSystemToken,resolveSurfaceCatalogBackend}from'./hooks/mintSurfaceSystemToken.js';export{isInstanceNotFoundError,useGatewayConnection}from'./hooks/useGatewayConnection.js';export{usePrerequisiteIds}from'./hooks/usePrerequisiteIds.js';export{useWorkspaceProvisioner}from'./hooks/useWorkspaceProvisioner.js';export{useGatewayRegistry}from'./hooks/useGatewayRegistry.js';export{agentSessionManager}from'./services/agentSessionManager.js';export{ensureGatewayApiKeys,resetGatewayApiKeyBridge}from'./services/gatewayApiKeyBridge.js';export{GatewayClient}from'./services/gatewayClient.js';export{BRIDGE_PROTOCOL_VERSION,BRIDGE_READY_ACTION,DEFAULT_BRIDGE_TIMEOUT_MS,DEFAULT_CHUNK_SIZE,MessageType}from'./bridge/types.js';export{WebViewManager}from'./bridge/WebViewManager.js';export{NativeWebViewBridge}from'./bridge/NativeWebViewBridge.js';export{TypedBridge}from'./bridge/TypedBridge.js';export{CancellableRequest}from'./bridge/CancellableRequest.js';export{ChunkedMessageHandler}from'./bridge/ChunkedMessageHandler.js';export{BridgeDebugger}from'./bridge/BridgeDebugger.js';export{WEB_BRIDGE_BOOTSTRAP}from'./bridge/webBridgeBootstrap.js';export{AuthenticatedFetch}from'./bridge/AuthenticatedFetch.js';export{AuthBridgeHandler}from'./bridge/handlers/AuthBridgeHandler.js';export{NavigationBridgeHandler}from'./bridge/handlers/NavigationBridgeHandler.js';export{AnalyticsBridgeHandler}from'./bridge/handlers/AnalyticsBridgeHandler.js';export{getPackagerHost,resolveMobileWebUrl}from'./bridge/resolveMobileWebUrl.js';export{YANTRA_LOADER_SIZE_COMPACT,YANTRA_LOADER_SIZE_DEFAULT,YantraBrandLoader}from'./components/YantraBrandLoader.js';export{default as CustomDrawer}from'./components/CustomDrawer.js';export{AppThemeProvider,useAppTheme}from'./theme/AppThemeProvider.js';export{isKeyboardControllerAvailable}from'./utils/keyboardController.js';export{getNativeCanvasExperience,getNativeCanvasViewer,preloadNativeCanvasExperience,registerCanvasExperiencePreload,registerNativeCanvasExperience,registerNativeCanvasViewer}from'./features/canvas/nativeViewerRegistry.js';export{getNativeCharactersExperience,registerNativeCharactersExperience}from'./features/characters/nativeCharactersRegistry.js';export{getNativeChatExperience,registerNativeChatExperience}from'./features/messaging/nativeChatRegistry.js';export{getNativeShoppingExperience,preloadNativeShoppingExperience,registerNativeShoppingExperience,registerShoppingExperiencePreload}from'./features/shopping/nativeShoppingRegistry.js';export{getNativeTravelExperience,preloadNativeTravelExperience,registerNativeTravelExperience,registerTravelExperiencePreload}from'./features/travel/nativeTravelRegistry.js';export{NativeAgentChat}from'./features/agent-chat/NativeAgentChat.js';export{resolveSurfaceAuthGraphqlUrl}from'./hooks/resolveSurfaceAuthGraphqlUrl.js';var index = new Feature(YantraMobileModule);export{index as default};//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { Feature } from '@common-stack/client-react';\nimport YantraMobileModule from './module';\n\nexport default new Feature(YantraMobileModule);\nexport * from './screens';\nexport { GatewayContextProvider, useGatewayContext } from './contexts/GatewayContext';\nexport { CdecliConnectionProvider, useCdecliConnection } from './contexts/CdecliConnectionContext';\nexport * from './config/constants';\nexport { config } from './config/env-config';\nexport { useCdecliAutoConnect } from './hooks/useCdecliAutoConnect';\nexport { useObtainSystemToken } from './hooks/useObtainSystemToken';\nexport {\n mintSurfaceSystemToken,\n appendSurfaceAuthParams,\n buildCdecliTokenInjection,\n buildSurfaceGateRecoveryScript,\n resolveSurfaceCatalogBackend,\n resolveSurfaceAuthGraphqlUrl,\n} from './hooks/mintSurfaceSystemToken';\nexport { useGatewayConnection, isInstanceNotFoundError } from './hooks/useGatewayConnection';\nexport { usePrerequisiteIds } from './hooks/usePrerequisiteIds';\nexport { useWorkspaceProvisioner } from './hooks/useWorkspaceProvisioner';\nexport { useGatewayRegistry } from './hooks/useGatewayRegistry';\nexport * from './services';\nexport * from './bridge';\nexport {\n YantraBrandLoader,\n YANTRA_LOADER_SIZE_DEFAULT,\n YANTRA_LOADER_SIZE_COMPACT,\n} from './components/YantraBrandLoader';\nexport { default as CustomDrawer } from './components/CustomDrawer';\nexport { isKeyboardControllerAvailable } from './utils/keyboardController';\n// The canvas viewer seam. Exported from the index on purpose: the app (the MF\n// host) registers the federated viewer here and the CanvasBoard screen reads\n// it. Reachability from this entry is what makes rollup emit the registry as a\n// real shared module - as an internal-only file, `registerNativeCanvasViewer`\n// is never called inside the package, so rollup tree-shakes it and constant-\n// folds the screen down to its fallback branch.\nexport {\n registerNativeCanvasViewer,\n getNativeCanvasViewer,\n registerNativeCanvasExperience,\n getNativeCanvasExperience,\n registerCanvasExperiencePreload,\n preloadNativeCanvasExperience,\n} from './features/canvas/nativeViewerRegistry';\n// Characters seam - same reachability contract as the canvas registry above.\nexport {\n registerNativeCharactersExperience,\n getNativeCharactersExperience,\n} from './features/characters/nativeCharactersRegistry';\n// Chat seam - same reachability contract as the two registries above.\nexport { registerNativeChatExperience, getNativeChatExperience } from './features/messaging/nativeChatRegistry';\nexport {\n registerNativeShoppingExperience,\n getNativeShoppingExperience,\n registerShoppingExperiencePreload,\n preloadNativeShoppingExperience,\n} from './features/shopping/nativeShoppingRegistry';\nexport type { ShoppingExperienceProps } from './features/shopping/ShoppingExperience';\nexport type { ShoppingHostChat } from './features/shopping/hostChat';\nexport { NativeAgentChat } from './features/agent-chat';\nexport type { AgentChatMessage, AgentChatSuggestion, NativeAgentChatProps } from './features/agent-chat';\nexport type {\n ChatHostServices,\n ChatViewer,\n FederatedChatProps,\n NativeChatExperienceProps,\n} from './features/messaging/chatHost';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { Feature } from '@common-stack/client-react';\nimport YantraMobileModule from './module';\n\nexport default new Feature(YantraMobileModule);\nexport * from './screens';\nexport { GatewayContextProvider, useGatewayContext } from './contexts/GatewayContext';\nexport { CdecliConnectionProvider, useCdecliConnection } from './contexts/CdecliConnectionContext';\nexport * from './config/constants';\nexport { config } from './config/env-config';\nexport { useCdecliAutoConnect } from './hooks/useCdecliAutoConnect';\nexport { useObtainSystemToken } from './hooks/useObtainSystemToken';\nexport {\n mintSurfaceSystemToken,\n appendSurfaceAuthParams,\n buildCdecliTokenInjection,\n buildSurfaceGateRecoveryScript,\n resolveSurfaceCatalogBackend,\n resolveSurfaceAuthGraphqlUrl,\n} from './hooks/mintSurfaceSystemToken';\nexport { useGatewayConnection, isInstanceNotFoundError } from './hooks/useGatewayConnection';\nexport { usePrerequisiteIds } from './hooks/usePrerequisiteIds';\nexport { useWorkspaceProvisioner } from './hooks/useWorkspaceProvisioner';\nexport { useGatewayRegistry } from './hooks/useGatewayRegistry';\nexport * from './services';\nexport * from './bridge';\nexport {\n YantraBrandLoader,\n YANTRA_LOADER_SIZE_DEFAULT,\n YANTRA_LOADER_SIZE_COMPACT,\n} from './components/YantraBrandLoader';\nexport { default as CustomDrawer } from './components/CustomDrawer';\nexport { AppThemeProvider, useAppTheme } from './theme/AppThemeProvider';\nexport { isKeyboardControllerAvailable } from './utils/keyboardController';\n// The canvas viewer seam. Exported from the index on purpose: the app (the MF\n// host) registers the federated viewer here and the CanvasBoard screen reads\n// it. Reachability from this entry is what makes rollup emit the registry as a\n// real shared module - as an internal-only file, `registerNativeCanvasViewer`\n// is never called inside the package, so rollup tree-shakes it and constant-\n// folds the screen down to its fallback branch.\nexport {\n registerNativeCanvasViewer,\n getNativeCanvasViewer,\n registerNativeCanvasExperience,\n getNativeCanvasExperience,\n registerCanvasExperiencePreload,\n preloadNativeCanvasExperience,\n} from './features/canvas/nativeViewerRegistry';\n// Characters seam - same reachability contract as the canvas registry above.\nexport {\n registerNativeCharactersExperience,\n getNativeCharactersExperience,\n} from './features/characters/nativeCharactersRegistry';\n// Chat seam - same reachability contract as the two registries above.\nexport { registerNativeChatExperience, getNativeChatExperience } from './features/messaging/nativeChatRegistry';\nexport {\n registerNativeShoppingExperience,\n getNativeShoppingExperience,\n registerShoppingExperiencePreload,\n preloadNativeShoppingExperience,\n} from './features/shopping/nativeShoppingRegistry';\nexport type { ShoppingExperienceProps } from './features/shopping/ShoppingExperience';\nexport type { ShoppingHostChat } from './features/shopping/hostChat';\nexport {\n registerNativeTravelExperience,\n getNativeTravelExperience,\n registerTravelExperiencePreload,\n preloadNativeTravelExperience,\n} from './features/travel/nativeTravelRegistry';\nexport type { TravelExperienceProps } from './features/travel/TravelExperience';\nexport type { TravelHostChat } from './features/travel/hostChat';\nexport { NativeAgentChat } from './features/agent-chat';\nexport type { AgentChatMessage, AgentChatSuggestion, NativeAgentChatProps } from './features/agent-chat';\nexport type {\n ChatHostServices,\n ChatViewer,\n FederatedChatProps,\n NativeChatExperienceProps,\n} from './features/messaging/chatHost';\n"],"names":[],"mappings":"muHAEA,YAAe,IAAI,QAAQ,kBAAkB,CAAA"}
|
package/lib/routes.json
CHANGED
|
@@ -102,6 +102,61 @@
|
|
|
102
102
|
"hasComponent": true
|
|
103
103
|
}
|
|
104
104
|
},
|
|
105
|
+
{
|
|
106
|
+
"/:orgName/account": {
|
|
107
|
+
"key": "account",
|
|
108
|
+
"path": "/:orgName/account",
|
|
109
|
+
"name": "Account",
|
|
110
|
+
"exact": true,
|
|
111
|
+
"priority": 3,
|
|
112
|
+
"hideInMenu": true,
|
|
113
|
+
"auth": true,
|
|
114
|
+
"importPaths": {
|
|
115
|
+
"navigationHeader": "@adminide-stack/yantra-mobile/lib/components/NavigationHeader/NavigationHeader.js"
|
|
116
|
+
},
|
|
117
|
+
"customHeader": {
|
|
118
|
+
"name": "NavigationHeader",
|
|
119
|
+
"component": "$.importPaths.navigationHeader",
|
|
120
|
+
"props": {
|
|
121
|
+
"showTitle": false,
|
|
122
|
+
"showToggle": false,
|
|
123
|
+
"showFilter": false,
|
|
124
|
+
"isSearchBack": false,
|
|
125
|
+
"showBack": false,
|
|
126
|
+
"showGateway": false,
|
|
127
|
+
"showHistory": false,
|
|
128
|
+
"showNewChat": false
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"props": {
|
|
132
|
+
"initialParams": {
|
|
133
|
+
"orgName": null,
|
|
134
|
+
"hideNavigationHeader": true
|
|
135
|
+
},
|
|
136
|
+
"options": {
|
|
137
|
+
"title": "Account",
|
|
138
|
+
"headerTintColor": "black",
|
|
139
|
+
"headerTitleStyle": {
|
|
140
|
+
"fontWeight": "bold"
|
|
141
|
+
},
|
|
142
|
+
"drawerItemStyle": {
|
|
143
|
+
"display": "none"
|
|
144
|
+
},
|
|
145
|
+
"headerTitleAlign": "center",
|
|
146
|
+
"gestureEnabled": true,
|
|
147
|
+
"swipeEnabled": false,
|
|
148
|
+
"animation": "fade",
|
|
149
|
+
"animationTypeForReplace": "pop",
|
|
150
|
+
"keyboardHandlingEnabled": true
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"componentPath": "@adminide-stack/yantra-mobile/lib/screens/Account/index.js",
|
|
154
|
+
"hasComponent": true,
|
|
155
|
+
"queries": {
|
|
156
|
+
"AccountProfileDocument": "{}"
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
},
|
|
105
160
|
{
|
|
106
161
|
"/:orgName/chathistory": {
|
|
107
162
|
"key": "chathistory",
|
|
@@ -196,7 +251,8 @@
|
|
|
196
251
|
"swipeEnabled": false,
|
|
197
252
|
"animation": "fade",
|
|
198
253
|
"animationTypeForReplace": "pop",
|
|
199
|
-
"keyboardHandlingEnabled": false
|
|
254
|
+
"keyboardHandlingEnabled": false,
|
|
255
|
+
"unmountOnBlur": true
|
|
200
256
|
}
|
|
201
257
|
},
|
|
202
258
|
"componentPath": "@adminide-stack/yantra-mobile/lib/screens/Apps/index.js",
|
|
@@ -249,7 +305,8 @@
|
|
|
249
305
|
"swipeEnabled": false,
|
|
250
306
|
"animation": "fade",
|
|
251
307
|
"animationTypeForReplace": "pop",
|
|
252
|
-
"keyboardHandlingEnabled": false
|
|
308
|
+
"keyboardHandlingEnabled": false,
|
|
309
|
+
"unmountOnBlur": true
|
|
253
310
|
}
|
|
254
311
|
},
|
|
255
312
|
"componentPath": "@adminide-stack/yantra-mobile/lib/screens/CanvasBoard/index.js",
|
|
@@ -463,11 +520,64 @@
|
|
|
463
520
|
"swipeEnabled": false,
|
|
464
521
|
"animation": "fade",
|
|
465
522
|
"animationTypeForReplace": "pop",
|
|
466
|
-
"keyboardHandlingEnabled": false
|
|
523
|
+
"keyboardHandlingEnabled": false,
|
|
524
|
+
"unmountOnBlur": true
|
|
467
525
|
}
|
|
468
526
|
},
|
|
469
527
|
"componentPath": "@adminide-stack/yantra-mobile/lib/screens/ShoppingNative/index.js",
|
|
470
528
|
"hasComponent": true
|
|
471
529
|
}
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"/:orgName/c/travel-native": {
|
|
533
|
+
"key": "travel-native",
|
|
534
|
+
"path": "/:orgName/c/travel-native",
|
|
535
|
+
"name": "TravelNative",
|
|
536
|
+
"exact": true,
|
|
537
|
+
"priority": 4,
|
|
538
|
+
"hideInMenu": true,
|
|
539
|
+
"auth": true,
|
|
540
|
+
"menu_position": "side",
|
|
541
|
+
"importPaths": {
|
|
542
|
+
"navigationHeader": "@adminide-stack/yantra-mobile/lib/components/NavigationHeader/NavigationHeader.js"
|
|
543
|
+
},
|
|
544
|
+
"customHeader": {
|
|
545
|
+
"name": "NavigationHeader",
|
|
546
|
+
"component": "$.importPaths.navigationHeader",
|
|
547
|
+
"props": {
|
|
548
|
+
"showTitle": true,
|
|
549
|
+
"showToggle": false,
|
|
550
|
+
"showFilter": false,
|
|
551
|
+
"isSearchBack": false,
|
|
552
|
+
"showBack": true,
|
|
553
|
+
"showGateway": false,
|
|
554
|
+
"showHistory": false,
|
|
555
|
+
"showNewChat": false
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
"props": {
|
|
559
|
+
"initialParams": {
|
|
560
|
+
"orgName": null
|
|
561
|
+
},
|
|
562
|
+
"options": {
|
|
563
|
+
"title": "Travel",
|
|
564
|
+
"headerTintColor": "black",
|
|
565
|
+
"headerTitleStyle": {
|
|
566
|
+
"fontWeight": "bold"
|
|
567
|
+
},
|
|
568
|
+
"drawerItemStyle": {
|
|
569
|
+
"display": "none"
|
|
570
|
+
},
|
|
571
|
+
"headerTitleAlign": "left",
|
|
572
|
+
"gestureEnabled": false,
|
|
573
|
+
"swipeEnabled": false,
|
|
574
|
+
"animation": "fade",
|
|
575
|
+
"animationTypeForReplace": "pop",
|
|
576
|
+
"keyboardHandlingEnabled": false
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
"componentPath": "@adminide-stack/yantra-mobile/lib/screens/TravelNative/index.js",
|
|
580
|
+
"hasComponent": true
|
|
581
|
+
}
|
|
472
582
|
}
|
|
473
583
|
]
|