@planningcenter/chat-react-native 4.5.0-rc.5 → 4.5.0-rc.7

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.
@@ -43,9 +43,9 @@ export function useFeatures() {
43
43
  return t2;
44
44
  }
45
45
  export const featuresQueryOptions = apiClient => queryOptions({
46
- queryKey: getFeaturesQueryKey(),
46
+ queryKey: getFeaturesQueryKey(featureNames),
47
47
  queryFn: () => {
48
- return apiClient.chat.get(getFeaturesRequestArgs()).catch(error => ({
48
+ return apiClient.chat.get(getFeaturesRequestArgs(featureNames)).catch(error => ({
49
49
  ...stableEmptyFeatures,
50
50
  failure: {
51
51
  status: error?.status
@@ -74,6 +74,7 @@ export const availableFeatures = {
74
74
  manual_archiving: 'QA_MOBILE_manual_archiving',
75
75
  manual_archiving_rollout: 'ROLLOUT_MOBILE_manual_archiving'
76
76
  };
77
+ const featureNames = Object.values(availableFeatures);
77
78
  const stableEmptyFeatures = {
78
79
  data: [],
79
80
  links: {},
@@ -1 +1 @@
1
- {"version":3,"file":"use_features.js","names":["queryOptions","useSuspenseQuery","useCallback","getFeaturesRequestArgs","getFeaturesQueryKey","FIVE_MINUTES","ONE_MINUTE","useApiClient","useFeatures","$","_c","apiClient","t0","featuresQueryOptions","data","features","t1","featureName","some","feature","name","enabled","featureEnabled","t2","queryKey","queryFn","chat","get","catch","error","stableEmptyFeatures","failure","status","staleTime","query","state","gcTime","Infinity","availableFeatures","gender_specific_conversations","message_reporting","granular_notifications_ui","custom_conversation_avatars","conversation_safety_lock","video_moderation","dm_search_clear_fix","search","search_rollout","filter_dropdown","filter_dropdown_rollout","manual_archiving","manual_archiving_rollout","links","meta","count","totalCount"],"sources":["../../src/hooks/use_features.ts"],"sourcesContent":["import { queryOptions, useSuspenseQuery } from '@tanstack/react-query'\nimport { useCallback } from 'react'\nimport { ApiCollection } from '../types'\nimport type { FeatureResource } from '../types/resources/feature_resource'\nimport { getFeaturesRequestArgs, getFeaturesQueryKey } from '../utils/request/get_features'\nimport { FIVE_MINUTES, ONE_MINUTE } from '../utils/time'\nimport { ApiClient, useApiClient } from './use_api_client'\n\ntype FeatureName = (typeof availableFeatures)[keyof typeof availableFeatures]\n\ntype FeaturesCollection = ApiCollection<FeatureResource> & {\n failure?: { status?: number }\n}\n\nexport function useFeatures() {\n const apiClient = useApiClient()\n const { data } = useSuspenseQuery(featuresQueryOptions(apiClient))\n\n const features = data.data\n\n const featureEnabled = useCallback(\n (featureName: FeatureName) =>\n features.some(feature => feature.name === featureName && feature.enabled),\n [features]\n )\n\n return {\n features,\n featureEnabled,\n }\n}\n\nexport const featuresQueryOptions = (apiClient: ApiClient) =>\n queryOptions({\n queryKey: getFeaturesQueryKey(),\n queryFn: (): Promise<FeaturesCollection> => {\n return apiClient.chat\n .get<ApiCollection<FeatureResource>>(getFeaturesRequestArgs())\n .catch(error => ({ ...stableEmptyFeatures, failure: { status: error?.status } }))\n },\n staleTime: query => {\n const failure = query.state.data?.failure\n if (!failure) return FIVE_MINUTES\n\n return failure.status === 429 ? ONE_MINUTE : 0\n },\n gcTime: Infinity,\n })\n\nexport const availableFeatures = {\n gender_specific_conversations: 'ROLLOUT_gender_specific_conversations',\n message_reporting: 'ROLLOUT_MOBILE_message_reporting',\n granular_notifications_ui: 'ROLLOUT_granular_notification_preferences_ui',\n custom_conversation_avatars: 'ROLLOUT_custom_conversation_avatars',\n conversation_safety_lock: 'ROLLOUT_conversation_safety_lock',\n video_moderation: 'ROLLOUT_MOBILE_video_moderation',\n dm_search_clear_fix: 'ROLLOUT_MOBILE_dm_search_clear_fix',\n search: 'QA_MOBILE_search',\n search_rollout: 'ROLLOUT_MOBILE_search',\n filter_dropdown: 'QA_MOBILE_filter_dropdown',\n filter_dropdown_rollout: 'ROLLOUT_MOBILE_filter_dropdown',\n manual_archiving: 'QA_MOBILE_manual_archiving',\n manual_archiving_rollout: 'ROLLOUT_MOBILE_manual_archiving',\n} as const satisfies Record<string, `${'QA' | 'ROLLOUT'}_${string}`>\n\nconst stableEmptyFeatures: ApiCollection<FeatureResource> = {\n data: [],\n links: {},\n meta: {\n count: 0,\n totalCount: 0,\n },\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"use_features.js","names":["queryOptions","useSuspenseQuery","useCallback","getFeaturesRequestArgs","getFeaturesQueryKey","FIVE_MINUTES","ONE_MINUTE","useApiClient","useFeatures","$","_c","apiClient","t0","featuresQueryOptions","data","features","t1","featureName","some","feature","name","enabled","featureEnabled","t2","queryKey","featureNames","queryFn","chat","get","catch","error","stableEmptyFeatures","failure","status","staleTime","query","state","gcTime","Infinity","availableFeatures","gender_specific_conversations","message_reporting","granular_notifications_ui","custom_conversation_avatars","conversation_safety_lock","video_moderation","dm_search_clear_fix","search","search_rollout","filter_dropdown","filter_dropdown_rollout","manual_archiving","manual_archiving_rollout","Object","values","links","meta","count","totalCount"],"sources":["../../src/hooks/use_features.ts"],"sourcesContent":["import { queryOptions, useSuspenseQuery } from '@tanstack/react-query'\nimport { useCallback } from 'react'\nimport { ApiCollection } from '../types'\nimport type { FeatureResource } from '../types/resources/feature_resource'\nimport { getFeaturesRequestArgs, getFeaturesQueryKey } from '../utils/request/get_features'\nimport { FIVE_MINUTES, ONE_MINUTE } from '../utils/time'\nimport { ApiClient, useApiClient } from './use_api_client'\n\ntype FeatureName = (typeof availableFeatures)[keyof typeof availableFeatures]\n\ntype FeaturesCollection = ApiCollection<FeatureResource> & {\n failure?: { status?: number }\n}\n\nexport function useFeatures() {\n const apiClient = useApiClient()\n const { data } = useSuspenseQuery(featuresQueryOptions(apiClient))\n\n const features = data.data\n\n const featureEnabled = useCallback(\n (featureName: FeatureName) =>\n features.some(feature => feature.name === featureName && feature.enabled),\n [features]\n )\n\n return {\n features,\n featureEnabled,\n }\n}\n\nexport const featuresQueryOptions = (apiClient: ApiClient) =>\n queryOptions({\n queryKey: getFeaturesQueryKey(featureNames),\n queryFn: (): Promise<FeaturesCollection> => {\n return apiClient.chat\n .get<ApiCollection<FeatureResource>>(getFeaturesRequestArgs(featureNames))\n .catch(error => ({ ...stableEmptyFeatures, failure: { status: error?.status } }))\n },\n staleTime: query => {\n const failure = query.state.data?.failure\n if (!failure) return FIVE_MINUTES\n\n return failure.status === 429 ? ONE_MINUTE : 0\n },\n gcTime: Infinity,\n })\n\nexport const availableFeatures = {\n gender_specific_conversations: 'ROLLOUT_gender_specific_conversations',\n message_reporting: 'ROLLOUT_MOBILE_message_reporting',\n granular_notifications_ui: 'ROLLOUT_granular_notification_preferences_ui',\n custom_conversation_avatars: 'ROLLOUT_custom_conversation_avatars',\n conversation_safety_lock: 'ROLLOUT_conversation_safety_lock',\n video_moderation: 'ROLLOUT_MOBILE_video_moderation',\n dm_search_clear_fix: 'ROLLOUT_MOBILE_dm_search_clear_fix',\n search: 'QA_MOBILE_search',\n search_rollout: 'ROLLOUT_MOBILE_search',\n filter_dropdown: 'QA_MOBILE_filter_dropdown',\n filter_dropdown_rollout: 'ROLLOUT_MOBILE_filter_dropdown',\n manual_archiving: 'QA_MOBILE_manual_archiving',\n manual_archiving_rollout: 'ROLLOUT_MOBILE_manual_archiving',\n} as const satisfies Record<string, `${'QA' | 'ROLLOUT'}_${string}`>\n\nconst featureNames = Object.values(availableFeatures)\n\nconst stableEmptyFeatures: ApiCollection<FeatureResource> = {\n data: [],\n links: {},\n meta: {\n count: 0,\n totalCount: 0,\n },\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import { StaticParamList } from '@react-navigation/native';
2
2
  import { NativeStackNavigationOptions } from '@react-navigation/native-stack';
3
3
  import { CardStyleInterpolators } from '@react-navigation/stack';
4
+ import React from 'react';
4
5
  import { AttachmentActionsScreen } from '../screens/attachment_actions/attachment_actions_screen';
5
6
  import { AvatarPickerScreen } from '../screens/avatar_picker/avatar_picker_screen';
6
7
  import { BugReportScreen } from '../screens/bug_report_screen';
@@ -291,6 +292,7 @@ export declare const ChatStack: import("@react-navigation/core").TypedNavigator<
291
292
  };
292
293
  }>;
293
294
  readonly if: () => boolean;
295
+ readonly layout: ({ children }: import("@react-navigation/core").ScreenLayoutArgs<import("@react-navigation/routers").ParamListBase, string, NativeStackNavigationOptions, import("@react-navigation/native-stack").NativeStackNavigationProp<import("@react-navigation/routers").ParamListBase, string, string | undefined>>) => React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
294
296
  readonly options: {
295
297
  readonly headerShown: false;
296
298
  readonly presentation: "modal";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAGL,4BAA4B,EAC7B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAShE,OAAO,EACL,uBAAuB,EAExB,MAAM,yDAAyD,CAAA;AAChE,OAAO,EACL,kBAAkB,EAGnB,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AACtF,OAAO,EACL,yBAAyB,EAE1B,MAAM,sDAAsD,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAWlF,OAAO,EACL,yCAAyC,EAE1C,MAAM,0DAA0D,CAAA;AACjE,OAAO,EAEL,kBAAkB,EAEnB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EAAE,+CAA+C,EAAE,MAAM,gGAAgG,CAAA;AAIhK,OAAO,EACL,4BAA4B,EAE7B,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAEnF,OAAO,EACL,kCAAkC,EAEnC,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAA;AAC/F,OAAO,EACL,oBAAoB,EAErB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAA8B,MAAM,kCAAkC,CAAA;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAA;AACvF,OAAO,EAAE,eAAe,EAA0B,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,YAAY,EAAuB,MAAM,iCAAiC,CAAA;AACnF,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EACL,yBAAyB,EAE1B,MAAM,yCAAyC,CAAA;AAGhD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAA;AAO/D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;kCALA,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmF3D,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;kCArFW,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAA5B,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgT3D,CAAA;AAEF,KAAK,kBAAkB,GAAG,eAAe,CAAC,OAAO,SAAS,CAAC,CAAA;AAE3D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAe,CAAC;QACxB,UAAU,aAAc,SAAQ,kBAAkB;SAAG;KACtD;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAGL,4BAA4B,EAC7B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,OAAO,EACL,uBAAuB,EAExB,MAAM,yDAAyD,CAAA;AAChE,OAAO,EACL,kBAAkB,EAGnB,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AACtF,OAAO,EACL,yBAAyB,EAE1B,MAAM,sDAAsD,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAWlF,OAAO,EACL,yCAAyC,EAE1C,MAAM,0DAA0D,CAAA;AACjE,OAAO,EAEL,kBAAkB,EAEnB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EAAE,+CAA+C,EAAE,MAAM,gGAAgG,CAAA;AAIhK,OAAO,EACL,4BAA4B,EAE7B,MAAM,4CAA4C,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAEnF,OAAO,EACL,kCAAkC,EAEnC,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAA;AAC/F,OAAO,EACL,oBAAoB,EAErB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAA8B,MAAM,kCAAkC,CAAA;AAClG,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAA;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAA;AACvF,OAAO,EAAE,eAAe,EAA0B,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,YAAY,EAAuB,MAAM,iCAAiC,CAAA;AACnF,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EACL,yBAAyB,EAE1B,MAAM,yCAAyC,CAAA;AAGhD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAA;AAO/D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;kCALA,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmF3D,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;kCArFW,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAA5B,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiT3D,CAAA;AAEF,KAAK,kBAAkB,GAAG,eAAe,CAAC,OAAO,SAAS,CAAC,CAAA;AAE3D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,eAAe,CAAC;QACxB,UAAU,aAAc,SAAQ,kBAAkB;SAAG;KACtD;CACF"}
@@ -290,6 +290,9 @@ export const ChatStack = createNativeStackNavigator({
290
290
  New: {
291
291
  screen: NewConversationStack,
292
292
  if: useQualifiedByAge,
293
+ layout: ({
294
+ children
295
+ }) => children,
293
296
  options: {
294
297
  headerShown: false,
295
298
  presentation: 'modal'
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createNativeStackNavigator","CardStyleInterpolators","React","composeOptions","withMinimalBack","withRightClose","withRightDone","useDirectMessagesEligible","useQualifiedByAge","AttachmentActionsScreen","AttachmentActionsScreenOptions","AvatarPickerScreen","AvatarPickerScreenOptions","AvatarPickerCreateScreenOptions","BugReportScreen","BugReportScreenOptions","MessageReadReceiptsScreen","MessageReadReceiptsScreenOptions","ConversationDetailsScreen","ConversationFilterReceipientsScreenOptions","ConversationFilterRecipientsScreen","ConversationFiltersScreen","ConversationFiltersScreenOptions","ConversationNewScreen","ConversationNotificationLevelSelectScreen","ConversationNotificationLevelSelectScreenOptions","ConversationScreen","ConversationScreenTitle","ConversationNewEntryScreen","ConversationSelectDirectMessageRecipientsScreen","ConversationSelectGroupRecipientsScreen","ConversationSelectTeamsILeadRecipientsScreen","ConversationSelectTypeScreen","ConversationSelectTypeScreenOptions","ConversationsScreen","GetHelpScreen","GroupNotificationLevelSelectScreen","GroupNotificationLevelSelectScreenOptions","GroupNotificationSettingsScreen","MessageActionsScreen","MessageActionsScreenOptions","MessageReportScreen","MessageReportScreenOptions","NotFound","NotificationSettingsScreen","PreferredAppSelectionScreen","ReactionsScreen","ReactionsScreenOptions","SearchScreen","SearchScreenOptions","SendGiphyScreen","SendGiphyScreenOptions","SettingsScreen","SystemMessagePeopleScreen","SystemMessagePeopleScreenOptions","TeamConversationScreen","isLiquidGlassEnabled","ScreenLayoutWithChatAccessGate","jsx","_jsx","globalScreenOptions","headerBackButtonDisplayMode","headerShadowVisible","NewConversationStack","initialRouteName","screenOptions","screenLayout","screens","ConversationNewEntry","screen","options","navigation","title","headerBackVisible","onPress","goBack","ConversationSelectGroupRecipients","route","popTo","params","ConversationSelectTeamsILeadRecipients","ConversationSelectDirectMessageRecipients","if","ConversationFilterRecipients","ConversationNew","headerLeft","chat_group_graph_id","group_source_app_name","AvatarPicker","ChatStack","Conversations","headerTitle","ConversationFilters","Search","Conversation","props","conversation_id","badge","deleted","muted","children","getParent","ConversationReply","TeamConversation","animation","cardStyleInterpolator","forNoAnimation","ConversationDetails","presentation","ChatSettings","NotificationSettings","getState","index","PreferredAppSelection","GroupNotificationSettings","GroupNotificationLevelSelect","ConversationNotificationLevelSelect","New","headerShown","GroupConversationNew","SendGiphy","MessageActions","MessageReport","AttachmentActions","ConversationSelectType","Reactions","SystemMessagePeople","MessageReadReceipts","BugReport","GetHelp","linking","path"],"sources":["../../src/navigation/index.tsx"],"sourcesContent":["import { StaticParamList } from '@react-navigation/native'\nimport {\n createNativeStackNavigator,\n NativeStackHeaderRightProps,\n NativeStackNavigationOptions,\n} from '@react-navigation/native-stack'\nimport { CardStyleInterpolators } from '@react-navigation/stack'\nimport React from 'react'\nimport {\n composeOptions,\n withMinimalBack,\n withRightClose,\n withRightDone,\n} from '../components/display/platform_modal_header_buttons'\nimport { useDirectMessagesEligible, useQualifiedByAge } from '../hooks'\nimport {\n AttachmentActionsScreen,\n AttachmentActionsScreenOptions,\n} from '../screens/attachment_actions/attachment_actions_screen'\nimport {\n AvatarPickerScreen,\n AvatarPickerScreenOptions,\n AvatarPickerCreateScreenOptions,\n} from '../screens/avatar_picker/avatar_picker_screen'\nimport { BugReportScreen, BugReportScreenOptions } from '../screens/bug_report_screen'\nimport {\n MessageReadReceiptsScreen,\n MessageReadReceiptsScreenOptions,\n} from '../screens/conversation/message_read_receipts_screen'\nimport { ConversationDetailsScreen } from '../screens/conversation_details_screen'\nimport {\n ConversationFilterReceipientsScreenOptions,\n ConversationFilterRecipientsScreen,\n} from '../screens/conversation_filter_recipients/conversation_filter_recipients_screen'\nimport { ConversationFiltersParams } from '../screens/conversation_filters/screen_props'\nimport {\n ConversationFiltersScreen,\n ConversationFiltersScreenOptions,\n} from '../screens/conversation_filters_screen'\nimport { ConversationNewScreen } from '../screens/conversation_new/conversation_new_screen'\nimport {\n ConversationNotificationLevelSelectScreen,\n ConversationNotificationLevelSelectScreenOptions,\n} from '../screens/conversation_notification_level_select_screen'\nimport {\n ConversationRouteProps,\n ConversationScreen,\n ConversationScreenTitle,\n} from '../screens/conversation_screen'\nimport { ConversationNewEntryScreen } from '../screens/conversation_select_recipients/conversation_new_entry_screen'\nimport { ConversationSelectDirectMessageRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen'\nimport { ConversationSelectGroupRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_group_recipients_screen'\nimport { ConversationSelectTeamsILeadRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen'\nimport { ConversationSelectRecipientsParams } from '../screens/conversation_select_recipients/types/screen_props'\nimport {\n ConversationSelectTypeScreen,\n ConversationSelectTypeScreenOptions,\n} from '../screens/conversation_select_type_screen'\nimport { ConversationsScreen } from '../screens/conversations/conversations_screen'\nimport { GetHelpScreen } from '../screens/get_help_screen'\nimport {\n GroupNotificationLevelSelectScreen,\n GroupNotificationLevelSelectScreenOptions,\n} from '../screens/group_notification_level_select_screen'\nimport { GroupNotificationSettingsScreen } from '../screens/group_notification_settings_screen'\nimport {\n MessageActionsScreen,\n MessageActionsScreenOptions,\n} from '../screens/message_actions_screen'\nimport { MessageReportScreen, MessageReportScreenOptions } from '../screens/message_report_screen'\nimport { NotFound } from '../screens/not_found'\nimport { NotificationSettingsScreen } from '../screens/notification_settings_screen'\nimport { PreferredAppSelectionScreen } from '../screens/preferred_app_selection_screen'\nimport { ReactionsScreen, ReactionsScreenOptions } from '../screens/reactions_screen'\nimport { SearchScreen, SearchScreenOptions } from '../screens/search/search_screen'\nimport { SendGiphyScreen, SendGiphyScreenOptions } from '../screens/send_giphy_screen'\nimport { SettingsScreen } from '../screens/settings_screen'\nimport {\n SystemMessagePeopleScreen,\n SystemMessagePeopleScreenOptions,\n} from '../screens/system_message_people_screen'\nimport { TeamConversationScreen } from '../screens/team_conversation_screen'\nimport { isLiquidGlassEnabled } from '../utils/liquid_glass'\nimport { ScreenLayoutWithChatAccessGate } from './screenLayout'\n\nconst globalScreenOptions: () => NativeStackNavigationOptions = () => ({\n headerBackButtonDisplayMode: 'minimal',\n ...(isLiquidGlassEnabled() ? { headerShadowVisible: false } : {}),\n})\n\nexport const NewConversationStack = createNativeStackNavigator({\n initialRouteName: 'ConversationNewEntry',\n screenOptions: globalScreenOptions,\n screenLayout: ScreenLayoutWithChatAccessGate,\n screens: {\n ConversationNewEntry: {\n screen: ConversationNewEntryScreen,\n options: ({ navigation }) =>\n composeOptions(\n {\n title: 'New conversation',\n headerBackVisible: false,\n },\n withRightClose({ onPress: navigation.goBack })\n ),\n },\n ConversationSelectGroupRecipients: {\n screen: ConversationSelectGroupRecipientsScreen,\n options: ({ navigation, route }) =>\n composeOptions(\n {\n title: 'New conversation',\n },\n withRightClose({\n onPress: () => navigation.popTo('Conversations', route.params),\n })\n ),\n },\n ConversationSelectTeamsILeadRecipients: {\n screen: ConversationSelectTeamsILeadRecipientsScreen,\n options: ({ navigation, route }) =>\n composeOptions(\n {\n title: 'New conversation',\n },\n withRightClose({\n onPress: () => navigation.popTo('Conversations', route.params),\n })\n ),\n },\n ConversationSelectDirectMessageRecipients: {\n screen: ConversationSelectDirectMessageRecipientsScreen,\n if: useDirectMessagesEligible,\n options: ({ navigation }) =>\n composeOptions(\n {\n title: 'New conversation',\n headerBackVisible: false,\n },\n withRightClose({ onPress: navigation.goBack })\n ),\n },\n ConversationFilterRecipients: {\n screen: ConversationFilterRecipientsScreen,\n options: ConversationFilterReceipientsScreenOptions,\n },\n ConversationNew: {\n screen: ConversationNewScreen,\n options: ({ navigation, route }) =>\n composeOptions(\n {\n title: 'New conversation',\n headerLeft: () => null,\n },\n withRightClose({\n onPress: () => {\n const { chat_group_graph_id, group_source_app_name } =\n route.params as ConversationSelectRecipientsParams\n navigation.popTo('Conversations', { chat_group_graph_id, group_source_app_name })\n },\n })\n ),\n },\n AvatarPicker: {\n screen: AvatarPickerScreen,\n options: AvatarPickerCreateScreenOptions,\n },\n },\n})\n\nexport const ChatStack = createNativeStackNavigator({\n screenOptions: globalScreenOptions,\n screenLayout: ScreenLayoutWithChatAccessGate,\n screens: {\n Conversations: {\n screen: ConversationsScreen,\n options: ({ route, navigation }) =>\n composeOptions(\n {\n headerTitle: (route.params as { title?: string })?.title ?? 'Chat',\n headerBackVisible: false,\n },\n withRightClose({ onPress: navigation.goBack })\n ),\n },\n ConversationFilters: {\n screen: ConversationFiltersScreen,\n options: ConversationFiltersScreenOptions,\n },\n Search: {\n screen: SearchScreen,\n options: SearchScreenOptions,\n },\n Conversation: {\n screen: ConversationScreen,\n options: ({ route, navigation }) =>\n composeOptions(\n {\n headerTitle: (props: NativeStackHeaderRightProps) => {\n const { conversation_id, title, badge, deleted, muted } =\n route.params as ConversationRouteProps\n\n return (\n <ConversationScreenTitle\n conversation_id={conversation_id}\n badge={badge}\n deleted={deleted}\n muted={muted}\n {...props}\n >\n {title ?? 'Conversation'}\n </ConversationScreenTitle>\n )\n },\n },\n withMinimalBack({\n onPress: () => {\n const params = route.params as ConversationRouteProps\n if ((params as ConversationFiltersParams)?.chat_group_graph_id) {\n // Ensure that conversations with a graph id pass them back to the conversation list\n const { chat_group_graph_id } = params\n navigation.popTo('Conversations', { chat_group_graph_id })\n } else {\n navigation.goBack()\n }\n },\n }),\n withRightClose({ onPress: () => navigation.getParent()?.goBack() })\n ),\n },\n ConversationReply: {\n screen: ConversationScreen,\n options: ({ route, navigation }) =>\n composeOptions(\n { title: (route.params as ConversationRouteProps)?.title ?? 'Reply' },\n withMinimalBack({ onPress: navigation.goBack })\n ),\n },\n TeamConversation: {\n screen: TeamConversationScreen,\n if: useQualifiedByAge,\n options: {\n title: 'Finding conversation...',\n animation: 'none',\n cardStyleInterpolator: CardStyleInterpolators.forNoAnimation,\n },\n },\n ConversationDetails: {\n screen: ConversationDetailsScreen,\n options: ({ navigation }) =>\n composeOptions(\n {\n presentation: 'modal',\n title: 'Conversation details',\n },\n withRightDone({ onPress: navigation.goBack })\n ),\n },\n AvatarPicker: {\n screen: AvatarPickerScreen,\n options: AvatarPickerScreenOptions,\n },\n ChatSettings: {\n screen: SettingsScreen,\n options: ({ navigation }) =>\n composeOptions({ title: 'Chat settings' }, withMinimalBack({ onPress: navigation.goBack })),\n },\n NotificationSettings: {\n screen: NotificationSettingsScreen,\n options: ({ navigation }) =>\n navigation.getState().index === 0\n ? composeOptions(\n { title: 'Chat notifications' },\n withRightClose({ onPress: navigation.goBack })\n )\n : composeOptions(\n { title: 'Chat notifications' },\n withMinimalBack({ onPress: navigation.goBack })\n ),\n },\n PreferredAppSelection: {\n screen: PreferredAppSelectionScreen,\n options: ({ navigation }) =>\n composeOptions({ title: 'Preferred app' }, withMinimalBack({ onPress: navigation.goBack })),\n },\n GroupNotificationSettings: {\n screen: GroupNotificationSettingsScreen,\n options: ({ route, navigation }) => {\n const title = (route.params as { title?: string })?.title || 'Group Settings'\n\n // The dismiss button only shows when this is the entry screen (e.g.\n // deep links); deeper in the stack the back button covers dismissal.\n return navigation.getState().index === 0\n ? composeOptions(\n {\n title,\n },\n withRightClose({ onPress: navigation.goBack })\n )\n : composeOptions({ title }, withMinimalBack({ onPress: navigation.goBack }))\n },\n },\n GroupNotificationLevelSelect: {\n screen: GroupNotificationLevelSelectScreen,\n options: GroupNotificationLevelSelectScreenOptions,\n },\n ConversationNotificationLevelSelect: {\n screen: ConversationNotificationLevelSelectScreen,\n options: ConversationNotificationLevelSelectScreenOptions,\n },\n New: {\n screen: NewConversationStack,\n if: useQualifiedByAge,\n options: {\n headerShown: false,\n presentation: 'modal',\n },\n },\n GroupConversationNew: {\n screen: ConversationNewScreen,\n if: useQualifiedByAge,\n options: ({ navigation }) =>\n composeOptions(\n {\n title: 'New conversation',\n headerLeft: () => null,\n },\n withRightClose({ onPress: () => navigation.getParent()?.goBack() })\n ),\n },\n SendGiphy: {\n screen: SendGiphyScreen,\n options: SendGiphyScreenOptions,\n },\n MessageActions: {\n screen: MessageActionsScreen,\n // Something about sheetAllowedDetents declared inline breaks TS\n options: MessageActionsScreenOptions,\n },\n MessageReport: {\n screen: MessageReportScreen,\n options: MessageReportScreenOptions,\n },\n AttachmentActions: {\n screen: AttachmentActionsScreen,\n options: AttachmentActionsScreenOptions,\n },\n ConversationSelectType: {\n screen: ConversationSelectTypeScreen,\n options: ConversationSelectTypeScreenOptions,\n },\n Reactions: {\n screen: ReactionsScreen,\n options: ReactionsScreenOptions,\n },\n SystemMessagePeople: {\n screen: SystemMessagePeopleScreen,\n options: SystemMessagePeopleScreenOptions,\n },\n MessageReadReceipts: {\n screen: MessageReadReceiptsScreen,\n options: MessageReadReceiptsScreenOptions,\n },\n BugReport: {\n screen: BugReportScreen,\n options: BugReportScreenOptions,\n },\n GetHelp: {\n screen: GetHelpScreen,\n options: ({ navigation }) =>\n composeOptions(\n {\n headerTitle: 'Get help',\n headerBackVisible: false,\n presentation: 'modal',\n },\n withRightClose({ onPress: navigation.goBack })\n ),\n },\n NotFound: {\n screen: NotFound,\n options: {\n title: '404',\n },\n linking: {\n path: '*',\n },\n },\n },\n})\n\ntype ChatStackParamList = StaticParamList<typeof ChatStack>\n\ndeclare global {\n namespace ReactNavigation {\n interface RootParamList extends ChatStackParamList {}\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["createNativeStackNavigator","CardStyleInterpolators","React","composeOptions","withMinimalBack","withRightClose","withRightDone","useDirectMessagesEligible","useQualifiedByAge","AttachmentActionsScreen","AttachmentActionsScreenOptions","AvatarPickerScreen","AvatarPickerScreenOptions","AvatarPickerCreateScreenOptions","BugReportScreen","BugReportScreenOptions","MessageReadReceiptsScreen","MessageReadReceiptsScreenOptions","ConversationDetailsScreen","ConversationFilterReceipientsScreenOptions","ConversationFilterRecipientsScreen","ConversationFiltersScreen","ConversationFiltersScreenOptions","ConversationNewScreen","ConversationNotificationLevelSelectScreen","ConversationNotificationLevelSelectScreenOptions","ConversationScreen","ConversationScreenTitle","ConversationNewEntryScreen","ConversationSelectDirectMessageRecipientsScreen","ConversationSelectGroupRecipientsScreen","ConversationSelectTeamsILeadRecipientsScreen","ConversationSelectTypeScreen","ConversationSelectTypeScreenOptions","ConversationsScreen","GetHelpScreen","GroupNotificationLevelSelectScreen","GroupNotificationLevelSelectScreenOptions","GroupNotificationSettingsScreen","MessageActionsScreen","MessageActionsScreenOptions","MessageReportScreen","MessageReportScreenOptions","NotFound","NotificationSettingsScreen","PreferredAppSelectionScreen","ReactionsScreen","ReactionsScreenOptions","SearchScreen","SearchScreenOptions","SendGiphyScreen","SendGiphyScreenOptions","SettingsScreen","SystemMessagePeopleScreen","SystemMessagePeopleScreenOptions","TeamConversationScreen","isLiquidGlassEnabled","ScreenLayoutWithChatAccessGate","jsx","_jsx","globalScreenOptions","headerBackButtonDisplayMode","headerShadowVisible","NewConversationStack","initialRouteName","screenOptions","screenLayout","screens","ConversationNewEntry","screen","options","navigation","title","headerBackVisible","onPress","goBack","ConversationSelectGroupRecipients","route","popTo","params","ConversationSelectTeamsILeadRecipients","ConversationSelectDirectMessageRecipients","if","ConversationFilterRecipients","ConversationNew","headerLeft","chat_group_graph_id","group_source_app_name","AvatarPicker","ChatStack","Conversations","headerTitle","ConversationFilters","Search","Conversation","props","conversation_id","badge","deleted","muted","children","getParent","ConversationReply","TeamConversation","animation","cardStyleInterpolator","forNoAnimation","ConversationDetails","presentation","ChatSettings","NotificationSettings","getState","index","PreferredAppSelection","GroupNotificationSettings","GroupNotificationLevelSelect","ConversationNotificationLevelSelect","New","layout","headerShown","GroupConversationNew","SendGiphy","MessageActions","MessageReport","AttachmentActions","ConversationSelectType","Reactions","SystemMessagePeople","MessageReadReceipts","BugReport","GetHelp","linking","path"],"sources":["../../src/navigation/index.tsx"],"sourcesContent":["import { StaticParamList } from '@react-navigation/native'\nimport {\n createNativeStackNavigator,\n NativeStackHeaderRightProps,\n NativeStackNavigationOptions,\n} from '@react-navigation/native-stack'\nimport { CardStyleInterpolators } from '@react-navigation/stack'\nimport React from 'react'\nimport {\n composeOptions,\n withMinimalBack,\n withRightClose,\n withRightDone,\n} from '../components/display/platform_modal_header_buttons'\nimport { useDirectMessagesEligible, useQualifiedByAge } from '../hooks'\nimport {\n AttachmentActionsScreen,\n AttachmentActionsScreenOptions,\n} from '../screens/attachment_actions/attachment_actions_screen'\nimport {\n AvatarPickerScreen,\n AvatarPickerScreenOptions,\n AvatarPickerCreateScreenOptions,\n} from '../screens/avatar_picker/avatar_picker_screen'\nimport { BugReportScreen, BugReportScreenOptions } from '../screens/bug_report_screen'\nimport {\n MessageReadReceiptsScreen,\n MessageReadReceiptsScreenOptions,\n} from '../screens/conversation/message_read_receipts_screen'\nimport { ConversationDetailsScreen } from '../screens/conversation_details_screen'\nimport {\n ConversationFilterReceipientsScreenOptions,\n ConversationFilterRecipientsScreen,\n} from '../screens/conversation_filter_recipients/conversation_filter_recipients_screen'\nimport { ConversationFiltersParams } from '../screens/conversation_filters/screen_props'\nimport {\n ConversationFiltersScreen,\n ConversationFiltersScreenOptions,\n} from '../screens/conversation_filters_screen'\nimport { ConversationNewScreen } from '../screens/conversation_new/conversation_new_screen'\nimport {\n ConversationNotificationLevelSelectScreen,\n ConversationNotificationLevelSelectScreenOptions,\n} from '../screens/conversation_notification_level_select_screen'\nimport {\n ConversationRouteProps,\n ConversationScreen,\n ConversationScreenTitle,\n} from '../screens/conversation_screen'\nimport { ConversationNewEntryScreen } from '../screens/conversation_select_recipients/conversation_new_entry_screen'\nimport { ConversationSelectDirectMessageRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_direct_message_recipients_screen'\nimport { ConversationSelectGroupRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_group_recipients_screen'\nimport { ConversationSelectTeamsILeadRecipientsScreen } from '../screens/conversation_select_recipients/conversation_select_teams_i_lead_recipients_screen'\nimport { ConversationSelectRecipientsParams } from '../screens/conversation_select_recipients/types/screen_props'\nimport {\n ConversationSelectTypeScreen,\n ConversationSelectTypeScreenOptions,\n} from '../screens/conversation_select_type_screen'\nimport { ConversationsScreen } from '../screens/conversations/conversations_screen'\nimport { GetHelpScreen } from '../screens/get_help_screen'\nimport {\n GroupNotificationLevelSelectScreen,\n GroupNotificationLevelSelectScreenOptions,\n} from '../screens/group_notification_level_select_screen'\nimport { GroupNotificationSettingsScreen } from '../screens/group_notification_settings_screen'\nimport {\n MessageActionsScreen,\n MessageActionsScreenOptions,\n} from '../screens/message_actions_screen'\nimport { MessageReportScreen, MessageReportScreenOptions } from '../screens/message_report_screen'\nimport { NotFound } from '../screens/not_found'\nimport { NotificationSettingsScreen } from '../screens/notification_settings_screen'\nimport { PreferredAppSelectionScreen } from '../screens/preferred_app_selection_screen'\nimport { ReactionsScreen, ReactionsScreenOptions } from '../screens/reactions_screen'\nimport { SearchScreen, SearchScreenOptions } from '../screens/search/search_screen'\nimport { SendGiphyScreen, SendGiphyScreenOptions } from '../screens/send_giphy_screen'\nimport { SettingsScreen } from '../screens/settings_screen'\nimport {\n SystemMessagePeopleScreen,\n SystemMessagePeopleScreenOptions,\n} from '../screens/system_message_people_screen'\nimport { TeamConversationScreen } from '../screens/team_conversation_screen'\nimport { isLiquidGlassEnabled } from '../utils/liquid_glass'\nimport { ScreenLayoutWithChatAccessGate } from './screenLayout'\n\nconst globalScreenOptions: () => NativeStackNavigationOptions = () => ({\n headerBackButtonDisplayMode: 'minimal',\n ...(isLiquidGlassEnabled() ? { headerShadowVisible: false } : {}),\n})\n\nexport const NewConversationStack = createNativeStackNavigator({\n initialRouteName: 'ConversationNewEntry',\n screenOptions: globalScreenOptions,\n screenLayout: ScreenLayoutWithChatAccessGate,\n screens: {\n ConversationNewEntry: {\n screen: ConversationNewEntryScreen,\n options: ({ navigation }) =>\n composeOptions(\n {\n title: 'New conversation',\n headerBackVisible: false,\n },\n withRightClose({ onPress: navigation.goBack })\n ),\n },\n ConversationSelectGroupRecipients: {\n screen: ConversationSelectGroupRecipientsScreen,\n options: ({ navigation, route }) =>\n composeOptions(\n {\n title: 'New conversation',\n },\n withRightClose({\n onPress: () => navigation.popTo('Conversations', route.params),\n })\n ),\n },\n ConversationSelectTeamsILeadRecipients: {\n screen: ConversationSelectTeamsILeadRecipientsScreen,\n options: ({ navigation, route }) =>\n composeOptions(\n {\n title: 'New conversation',\n },\n withRightClose({\n onPress: () => navigation.popTo('Conversations', route.params),\n })\n ),\n },\n ConversationSelectDirectMessageRecipients: {\n screen: ConversationSelectDirectMessageRecipientsScreen,\n if: useDirectMessagesEligible,\n options: ({ navigation }) =>\n composeOptions(\n {\n title: 'New conversation',\n headerBackVisible: false,\n },\n withRightClose({ onPress: navigation.goBack })\n ),\n },\n ConversationFilterRecipients: {\n screen: ConversationFilterRecipientsScreen,\n options: ConversationFilterReceipientsScreenOptions,\n },\n ConversationNew: {\n screen: ConversationNewScreen,\n options: ({ navigation, route }) =>\n composeOptions(\n {\n title: 'New conversation',\n headerLeft: () => null,\n },\n withRightClose({\n onPress: () => {\n const { chat_group_graph_id, group_source_app_name } =\n route.params as ConversationSelectRecipientsParams\n navigation.popTo('Conversations', { chat_group_graph_id, group_source_app_name })\n },\n })\n ),\n },\n AvatarPicker: {\n screen: AvatarPickerScreen,\n options: AvatarPickerCreateScreenOptions,\n },\n },\n})\n\nexport const ChatStack = createNativeStackNavigator({\n screenOptions: globalScreenOptions,\n screenLayout: ScreenLayoutWithChatAccessGate,\n screens: {\n Conversations: {\n screen: ConversationsScreen,\n options: ({ route, navigation }) =>\n composeOptions(\n {\n headerTitle: (route.params as { title?: string })?.title ?? 'Chat',\n headerBackVisible: false,\n },\n withRightClose({ onPress: navigation.goBack })\n ),\n },\n ConversationFilters: {\n screen: ConversationFiltersScreen,\n options: ConversationFiltersScreenOptions,\n },\n Search: {\n screen: SearchScreen,\n options: SearchScreenOptions,\n },\n Conversation: {\n screen: ConversationScreen,\n options: ({ route, navigation }) =>\n composeOptions(\n {\n headerTitle: (props: NativeStackHeaderRightProps) => {\n const { conversation_id, title, badge, deleted, muted } =\n route.params as ConversationRouteProps\n\n return (\n <ConversationScreenTitle\n conversation_id={conversation_id}\n badge={badge}\n deleted={deleted}\n muted={muted}\n {...props}\n >\n {title ?? 'Conversation'}\n </ConversationScreenTitle>\n )\n },\n },\n withMinimalBack({\n onPress: () => {\n const params = route.params as ConversationRouteProps\n if ((params as ConversationFiltersParams)?.chat_group_graph_id) {\n // Ensure that conversations with a graph id pass them back to the conversation list\n const { chat_group_graph_id } = params\n navigation.popTo('Conversations', { chat_group_graph_id })\n } else {\n navigation.goBack()\n }\n },\n }),\n withRightClose({ onPress: () => navigation.getParent()?.goBack() })\n ),\n },\n ConversationReply: {\n screen: ConversationScreen,\n options: ({ route, navigation }) =>\n composeOptions(\n { title: (route.params as ConversationRouteProps)?.title ?? 'Reply' },\n withMinimalBack({ onPress: navigation.goBack })\n ),\n },\n TeamConversation: {\n screen: TeamConversationScreen,\n if: useQualifiedByAge,\n options: {\n title: 'Finding conversation...',\n animation: 'none',\n cardStyleInterpolator: CardStyleInterpolators.forNoAnimation,\n },\n },\n ConversationDetails: {\n screen: ConversationDetailsScreen,\n options: ({ navigation }) =>\n composeOptions(\n {\n presentation: 'modal',\n title: 'Conversation details',\n },\n withRightDone({ onPress: navigation.goBack })\n ),\n },\n AvatarPicker: {\n screen: AvatarPickerScreen,\n options: AvatarPickerScreenOptions,\n },\n ChatSettings: {\n screen: SettingsScreen,\n options: ({ navigation }) =>\n composeOptions({ title: 'Chat settings' }, withMinimalBack({ onPress: navigation.goBack })),\n },\n NotificationSettings: {\n screen: NotificationSettingsScreen,\n options: ({ navigation }) =>\n navigation.getState().index === 0\n ? composeOptions(\n { title: 'Chat notifications' },\n withRightClose({ onPress: navigation.goBack })\n )\n : composeOptions(\n { title: 'Chat notifications' },\n withMinimalBack({ onPress: navigation.goBack })\n ),\n },\n PreferredAppSelection: {\n screen: PreferredAppSelectionScreen,\n options: ({ navigation }) =>\n composeOptions({ title: 'Preferred app' }, withMinimalBack({ onPress: navigation.goBack })),\n },\n GroupNotificationSettings: {\n screen: GroupNotificationSettingsScreen,\n options: ({ route, navigation }) => {\n const title = (route.params as { title?: string })?.title || 'Group Settings'\n\n // The dismiss button only shows when this is the entry screen (e.g.\n // deep links); deeper in the stack the back button covers dismissal.\n return navigation.getState().index === 0\n ? composeOptions(\n {\n title,\n },\n withRightClose({ onPress: navigation.goBack })\n )\n : composeOptions({ title }, withMinimalBack({ onPress: navigation.goBack }))\n },\n },\n GroupNotificationLevelSelect: {\n screen: GroupNotificationLevelSelectScreen,\n options: GroupNotificationLevelSelectScreenOptions,\n },\n ConversationNotificationLevelSelect: {\n screen: ConversationNotificationLevelSelectScreen,\n options: ConversationNotificationLevelSelectScreenOptions,\n },\n New: {\n screen: NewConversationStack,\n if: useQualifiedByAge,\n layout: ({ children }) => children,\n options: {\n headerShown: false,\n presentation: 'modal',\n },\n },\n GroupConversationNew: {\n screen: ConversationNewScreen,\n if: useQualifiedByAge,\n options: ({ navigation }) =>\n composeOptions(\n {\n title: 'New conversation',\n headerLeft: () => null,\n },\n withRightClose({ onPress: () => navigation.getParent()?.goBack() })\n ),\n },\n SendGiphy: {\n screen: SendGiphyScreen,\n options: SendGiphyScreenOptions,\n },\n MessageActions: {\n screen: MessageActionsScreen,\n // Something about sheetAllowedDetents declared inline breaks TS\n options: MessageActionsScreenOptions,\n },\n MessageReport: {\n screen: MessageReportScreen,\n options: MessageReportScreenOptions,\n },\n AttachmentActions: {\n screen: AttachmentActionsScreen,\n options: AttachmentActionsScreenOptions,\n },\n ConversationSelectType: {\n screen: ConversationSelectTypeScreen,\n options: ConversationSelectTypeScreenOptions,\n },\n Reactions: {\n screen: ReactionsScreen,\n options: ReactionsScreenOptions,\n },\n SystemMessagePeople: {\n screen: SystemMessagePeopleScreen,\n options: SystemMessagePeopleScreenOptions,\n },\n MessageReadReceipts: {\n screen: MessageReadReceiptsScreen,\n options: MessageReadReceiptsScreenOptions,\n },\n BugReport: {\n screen: BugReportScreen,\n options: BugReportScreenOptions,\n },\n GetHelp: {\n screen: GetHelpScreen,\n options: ({ navigation }) =>\n composeOptions(\n {\n headerTitle: 'Get help',\n headerBackVisible: false,\n presentation: 'modal',\n },\n withRightClose({ onPress: navigation.goBack })\n ),\n },\n NotFound: {\n screen: NotFound,\n options: {\n title: '404',\n },\n linking: {\n path: '*',\n },\n },\n },\n})\n\ntype ChatStackParamList = StaticParamList<typeof ChatStack>\n\ndeclare global {\n namespace ReactNavigation {\n interface RootParamList extends ChatStackParamList {}\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"screenLayout.d.ts","sourceRoot":"","sources":["../../src/navigation/screenLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAA;CAAE,2CAQ1E;AAED,wBAAgB,8BAA8B,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAA;CAAE,2CAQ5F"}
1
+ {"version":3,"file":"screenLayout.d.ts","sourceRoot":"","sources":["../../src/navigation/screenLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAA;CAAE,2CAW1E;AAED,wBAAgB,8BAA8B,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAA;CAAE,2CAQ5F"}
@@ -2,16 +2,19 @@ import { c as _c } from "react/compiler-runtime";
2
2
  import { useRoute } from '@react-navigation/native';
3
3
  import React from 'react';
4
4
  import { Suspense } from 'react';
5
+ import { StyleSheet, View } from 'react-native';
6
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
7
  import { DefaultLoading } from '../components/page/loading';
6
8
  import { PageErrorBoundary } from '../components/page/page_error_boundary';
7
9
  import { ChatAccessGate } from './chat_access_gate';
8
10
  import { jsx as _jsx } from "react/jsx-runtime";
9
11
  export function ScreenLayout(t0) {
10
- const $ = _c(6);
12
+ const $ = _c(9);
11
13
  const {
12
14
  children
13
15
  } = t0;
14
16
  const route = useRoute();
17
+ const styles = useStyles();
15
18
  let t1;
16
19
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
17
20
  t1 = /*#__PURE__*/_jsx(DefaultLoading, {});
@@ -31,18 +34,30 @@ export function ScreenLayout(t0) {
31
34
  t2 = $[2];
32
35
  }
33
36
  let t3;
34
- if ($[3] !== route.name || $[4] !== t2) {
35
- t3 = /*#__PURE__*/_jsx(PageErrorBoundary, {
36
- screenName: route.name,
37
+ if ($[3] !== styles.screen || $[4] !== t2) {
38
+ t3 = /*#__PURE__*/_jsx(View, {
39
+ style: styles.screen,
37
40
  children: t2
38
41
  });
39
- $[3] = route.name;
42
+ $[3] = styles.screen;
40
43
  $[4] = t2;
41
44
  $[5] = t3;
42
45
  } else {
43
46
  t3 = $[5];
44
47
  }
45
- return t3;
48
+ let t4;
49
+ if ($[6] !== route.name || $[7] !== t3) {
50
+ t4 = /*#__PURE__*/_jsx(PageErrorBoundary, {
51
+ screenName: route.name,
52
+ children: t3
53
+ });
54
+ $[6] = route.name;
55
+ $[7] = t3;
56
+ $[8] = t4;
57
+ } else {
58
+ t4 = $[8];
59
+ }
60
+ return t4;
46
61
  }
47
62
  export function ScreenLayoutWithChatAccessGate(t0) {
48
63
  const $ = _c(3);
@@ -73,4 +88,24 @@ export function ScreenLayoutWithChatAccessGate(t0) {
73
88
  }
74
89
  return t2;
75
90
  }
91
+ const useStyles = () => {
92
+ const $ = _c(3);
93
+ const insets = useSafeAreaInsets();
94
+ let t0;
95
+ if ($[0] !== insets.left || $[1] !== insets.right) {
96
+ t0 = StyleSheet.create({
97
+ screen: {
98
+ flex: 1,
99
+ paddingLeft: insets.left,
100
+ paddingRight: insets.right
101
+ }
102
+ });
103
+ $[0] = insets.left;
104
+ $[1] = insets.right;
105
+ $[2] = t0;
106
+ } else {
107
+ t0 = $[2];
108
+ }
109
+ return t0;
110
+ };
76
111
  //# sourceMappingURL=screenLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenLayout.js","names":["useRoute","React","Suspense","DefaultLoading","PageErrorBoundary","ChatAccessGate","jsx","_jsx","ScreenLayout","t0","$","_c","children","route","t1","Symbol","for","t2","fallback","t3","name","screenName","ScreenLayoutWithChatAccessGate"],"sources":["../../src/navigation/screenLayout.tsx"],"sourcesContent":["import { useRoute } from '@react-navigation/native'\nimport React from 'react'\nimport { Suspense } from 'react'\nimport { DefaultLoading } from '../components/page/loading'\nimport { PageErrorBoundary } from '../components/page/page_error_boundary'\nimport { ChatAccessGate } from './chat_access_gate'\n\nexport function ScreenLayout({ children }: { children: React.ReactElement }) {\n const route = useRoute()\n\n return (\n <PageErrorBoundary screenName={route.name}>\n <Suspense fallback={<DefaultLoading />}>{children}</Suspense>\n </PageErrorBoundary>\n )\n}\n\nexport function ScreenLayoutWithChatAccessGate({ children }: { children: React.ReactElement }) {\n return (\n <ScreenLayout>\n <ChatAccessGate>\n <Suspense fallback={<DefaultLoading />}>{children}</Suspense>\n </ChatAccessGate>\n </ScreenLayout>\n )\n}\n"],"mappings":";AAAA,SAASA,QAAQ,QAAQ,0BAA0B;AACnD,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,OAAO;AAChC,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,SAASC,cAAc,QAAQ,oBAAoB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAEnD,OAAO,SAAAC,aAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAsB;IAAAC;EAAA,IAAAH,EAA8C;EACzE,MAAAI,KAAA,GAAcb,QAAQ,CAAC,CAAC;EAAA,IAAAc,EAAA;EAAA,IAAAJ,CAAA,QAAAK,MAAA,CAAAC,GAAA;IAIAF,EAAA,gBAAAP,IAAA,CAACJ,cAAc,IAAE,CAAC;IAAAO,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAAA,IAAAO,EAAA;EAAA,IAAAP,CAAA,QAAAE,QAAA;IAAtCK,EAAA,gBAAAV,IAAA,CAACL,QAAQ;MAAWgB,QAAkB,EAAlBJ,EAAkB;MAAAF,QAAA,EAAGA;IAAQ,CAAW,CAAC;IAAAF,CAAA,MAAAE,QAAA;IAAAF,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAA,IAAAS,EAAA;EAAA,IAAAT,CAAA,QAAAG,KAAA,CAAAO,IAAA,IAAAV,CAAA,QAAAO,EAAA;IAD/DE,EAAA,gBAAAZ,IAAA,CAACH,iBAAiB;MAAaiB,UAAU,EAAVR,KAAK,CAAAO,IAAK;MAAAR,QAAA,EACvCK;IAA6D,CAC5C,CAAC;IAAAP,CAAA,MAAAG,KAAA,CAAAO,IAAA;IAAAV,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAAA,OAFpBS,EAEoB;AAAA;AAIxB,OAAO,SAAAG,+BAAAb,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAwC;IAAAC;EAAA,IAAAH,EAA8C;EAAA,IAAAK,EAAA;EAAA,IAAAJ,CAAA,QAAAK,MAAA,CAAAC,GAAA;IAIjEF,EAAA,gBAAAP,IAAA,CAACJ,cAAc,IAAE,CAAC;IAAAO,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAAA,IAAAO,EAAA;EAAA,IAAAP,CAAA,QAAAE,QAAA;IAF1CK,EAAA,gBAAAV,IAAA,CAACC,YAAY;MAAAI,QAAA,eACXL,IAAA,CAACF,cAAc;QAAAO,QAAA,eACbL,IAAA,CAACL,QAAQ;UAAWgB,QAAkB,EAAlBJ,EAAkB;UAAAF,QAAA,EAAGA;QAAQ,CAAW;MAAC,CAC/C;IAAC,CACL,CAAC;IAAAF,CAAA,MAAAE,QAAA;IAAAF,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAA,OAJfO,EAIe;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"screenLayout.js","names":["useRoute","React","Suspense","StyleSheet","View","useSafeAreaInsets","DefaultLoading","PageErrorBoundary","ChatAccessGate","jsx","_jsx","ScreenLayout","t0","$","_c","children","route","styles","useStyles","t1","Symbol","for","t2","fallback","t3","screen","style","t4","name","screenName","ScreenLayoutWithChatAccessGate","insets","left","right","create","flex","paddingLeft","paddingRight"],"sources":["../../src/navigation/screenLayout.tsx"],"sourcesContent":["import { useRoute } from '@react-navigation/native'\nimport React from 'react'\nimport { Suspense } from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { DefaultLoading } from '../components/page/loading'\nimport { PageErrorBoundary } from '../components/page/page_error_boundary'\nimport { ChatAccessGate } from './chat_access_gate'\n\nexport function ScreenLayout({ children }: { children: React.ReactElement }) {\n const route = useRoute()\n const styles = useStyles()\n\n return (\n <PageErrorBoundary screenName={route.name}>\n <View style={styles.screen}>\n <Suspense fallback={<DefaultLoading />}>{children}</Suspense>\n </View>\n </PageErrorBoundary>\n )\n}\n\nexport function ScreenLayoutWithChatAccessGate({ children }: { children: React.ReactElement }) {\n return (\n <ScreenLayout>\n <ChatAccessGate>\n <Suspense fallback={<DefaultLoading />}>{children}</Suspense>\n </ChatAccessGate>\n </ScreenLayout>\n )\n}\n\nconst useStyles = () => {\n const insets = useSafeAreaInsets()\n\n return StyleSheet.create({\n screen: {\n flex: 1,\n paddingLeft: insets.left,\n paddingRight: insets.right,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,11 +1,17 @@
1
- export declare const getFeaturesRequestArgs: () => {
1
+ export declare const getFeaturesRequestArgs: (names: readonly string[]) => {
2
2
  url: string;
3
+ headers: {
4
+ 'X-PCO-API-Version': string;
5
+ 'X-PCO-Chat-React-Native-Version': string;
6
+ };
3
7
  data: {
4
- perPage: number;
8
+ where: {
9
+ name: string;
10
+ };
5
11
  fields: {
6
12
  Feature: string[];
7
13
  };
8
14
  };
9
15
  };
10
- export declare const getFeaturesQueryKey: () => import("../..").RequestQueryKey;
16
+ export declare const getFeaturesQueryKey: (names: readonly string[]) => import("../..").RequestQueryKey;
11
17
  //# sourceMappingURL=get_features.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_features.d.ts","sourceRoot":"","sources":["../../../src/utils/request/get_features.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB;;;;;;;;CAYlC,CAAA;AAED,eAAO,MAAM,mBAAmB,uCAG/B,CAAA"}
1
+ {"version":3,"file":"get_features.d.ts","sourceRoot":"","sources":["../../../src/utils/request/get_features.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,GAAI,OAAO,SAAS,MAAM,EAAE;;;;;;;;;;;;;;CAkB9D,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,OAAO,SAAS,MAAM,EAAE,oCAG3D,CAAA"}
@@ -1,18 +1,25 @@
1
1
  import { getRequestQueryKey } from '../../hooks/use_suspense_api';
2
- export const getFeaturesRequestArgs = () => {
2
+ import { chatReactNativeVersion } from '../package_version';
3
+ export const getFeaturesRequestArgs = names => {
3
4
  const url = '/me/features';
4
5
  return {
5
6
  url,
7
+ headers: {
8
+ 'X-PCO-API-Version': '2026-10-26',
9
+ 'X-PCO-Chat-React-Native-Version': chatReactNativeVersion
10
+ },
6
11
  data: {
7
- perPage: 100,
12
+ where: {
13
+ name: names.join(',')
14
+ },
8
15
  fields: {
9
16
  Feature: ['name', 'enabled']
10
17
  }
11
18
  }
12
19
  };
13
20
  };
14
- export const getFeaturesQueryKey = () => {
15
- const requestArgs = getFeaturesRequestArgs();
21
+ export const getFeaturesQueryKey = names => {
22
+ const requestArgs = getFeaturesRequestArgs(names);
16
23
  return getRequestQueryKey(requestArgs);
17
24
  };
18
25
  //# sourceMappingURL=get_features.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_features.js","names":["getRequestQueryKey","getFeaturesRequestArgs","url","data","perPage","fields","Feature","getFeaturesQueryKey","requestArgs"],"sources":["../../../src/utils/request/get_features.ts"],"sourcesContent":["import { getRequestQueryKey } from '../../hooks/use_suspense_api'\n\nexport const getFeaturesRequestArgs = () => {\n const url = '/me/features'\n\n return {\n url,\n data: {\n perPage: 100,\n fields: {\n Feature: ['name', 'enabled'],\n },\n },\n }\n}\n\nexport const getFeaturesQueryKey = () => {\n const requestArgs = getFeaturesRequestArgs()\n return getRequestQueryKey(requestArgs)\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,8BAA8B;AAEjE,OAAO,MAAMC,sBAAsB,GAAGA,CAAA,KAAM;EAC1C,MAAMC,GAAG,GAAG,cAAc;EAE1B,OAAO;IACLA,GAAG;IACHC,IAAI,EAAE;MACJC,OAAO,EAAE,GAAG;MACZC,MAAM,EAAE;QACNC,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS;MAC7B;IACF;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;EACvC,MAAMC,WAAW,GAAGP,sBAAsB,CAAC,CAAC;EAC5C,OAAOD,kBAAkB,CAACQ,WAAW,CAAC;AACxC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"get_features.js","names":["getRequestQueryKey","chatReactNativeVersion","getFeaturesRequestArgs","names","url","headers","data","where","name","join","fields","Feature","getFeaturesQueryKey","requestArgs"],"sources":["../../../src/utils/request/get_features.ts"],"sourcesContent":["import { getRequestQueryKey } from '../../hooks/use_suspense_api'\nimport { chatReactNativeVersion } from '../package_version'\n\nexport const getFeaturesRequestArgs = (names: readonly string[]) => {\n const url = '/me/features'\n\n return {\n url,\n headers: {\n 'X-PCO-API-Version': '2026-10-26',\n 'X-PCO-Chat-React-Native-Version': chatReactNativeVersion,\n },\n data: {\n where: {\n name: names.join(','),\n },\n fields: {\n Feature: ['name', 'enabled'],\n },\n },\n }\n}\n\nexport const getFeaturesQueryKey = (names: readonly string[]) => {\n const requestArgs = getFeaturesRequestArgs(names)\n return getRequestQueryKey(requestArgs)\n}\n"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,sBAAsB,QAAQ,oBAAoB;AAE3D,OAAO,MAAMC,sBAAsB,GAAIC,KAAwB,IAAK;EAClE,MAAMC,GAAG,GAAG,cAAc;EAE1B,OAAO;IACLA,GAAG;IACHC,OAAO,EAAE;MACP,mBAAmB,EAAE,YAAY;MACjC,iCAAiC,EAAEJ;IACrC,CAAC;IACDK,IAAI,EAAE;MACJC,KAAK,EAAE;QACLC,IAAI,EAAEL,KAAK,CAACM,IAAI,CAAC,GAAG;MACtB,CAAC;MACDC,MAAM,EAAE;QACNC,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS;MAC7B;IACF;EACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAIT,KAAwB,IAAK;EAC/D,MAAMU,WAAW,GAAGX,sBAAsB,CAACC,KAAK,CAAC;EACjD,OAAOH,kBAAkB,CAACa,WAAW,CAAC;AACxC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planningcenter/chat-react-native",
3
- "version": "4.5.0-rc.5",
3
+ "version": "4.5.0-rc.7",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -84,5 +84,5 @@
84
84
  "sf-symbols-typescript": "^2.2.0",
85
85
  "typescript": "~6.0.3"
86
86
  },
87
- "gitHead": "4911304eaf724367c5427a7ce12b3bf4fa27fa88"
87
+ "gitHead": "9d7a0734213674cf6b4fff694760f73d2578d81a"
88
88
  }
@@ -6,6 +6,7 @@ import { ChatContext, ChatContextValue } from '../../contexts/chat_context'
6
6
  import { ApiClient, useApiClient } from '../../hooks/use_api_client'
7
7
  import { useCanBrowseArchivedConversations } from '../../hooks/use_can_browse_archived_conversations'
8
8
  import { currentPersonQueryKey, currentPersonRequestArgs } from '../../hooks/use_current_person'
9
+ import { availableFeatures } from '../../hooks/use_features'
9
10
  import { Session } from '../../utils'
10
11
  import { getFeaturesQueryKey } from '../../utils/request/get_features'
11
12
 
@@ -20,7 +21,7 @@ const session = new Session({ token: { access_token: 'a-real-token' } })
20
21
  const renderWithFeatures = (enabledFlags: string[], cachedPerson?: object) => {
21
22
  const queryClient = buildTestQueryClient()
22
23
  if (cachedPerson) queryClient.setQueryData(currentPersonQueryKey, { data: cachedPerson })
23
- queryClient.setQueryData(getFeaturesQueryKey(), {
24
+ queryClient.setQueryData(getFeaturesQueryKey(Object.values(availableFeatures)), {
24
25
  data: enabledFlags.map((name, index) => ({
25
26
  type: 'Feature',
26
27
  id: `${index}`,
@@ -1,6 +1,7 @@
1
1
  import { buildTestQueryClient } from '../../__utils__/query_client'
2
2
  import type { ApiClient } from '../../hooks/use_api_client'
3
3
  import { availableFeatures, featuresQueryOptions } from '../../hooks/use_features'
4
+ import { chatReactNativeVersion } from '../../utils/package_version'
4
5
 
5
6
  const features = {
6
7
  data: [{ type: 'Feature', id: '1', name: 'QA_MOBILE_search', enabled: true }],
@@ -36,6 +37,19 @@ describe('featuresQueryOptions', () => {
36
37
  jest.useRealTimers()
37
38
  })
38
39
 
40
+ it('names every flag it reads, with its chat-react-native version', async () => {
41
+ const get = jest.fn().mockResolvedValue(features)
42
+
43
+ await buildTestQueryClient().fetchQuery(featuresQueryOptions(buildClient(get)))
44
+
45
+ const [{ headers, data }] = get.mock.calls[0]
46
+ expect(data.where.name.split(',')).toEqual(Object.values(availableFeatures))
47
+ expect(headers).toEqual({
48
+ 'X-PCO-API-Version': '2026-10-26',
49
+ 'X-PCO-Chat-React-Native-Version': chatReactNativeVersion,
50
+ })
51
+ })
52
+
39
53
  it('keeps successful flags fresh for five minutes', async () => {
40
54
  const get = jest.fn().mockResolvedValue(features)
41
55
 
@@ -2,6 +2,7 @@ import { QueryClientProvider } from '@tanstack/react-query'
2
2
  import { renderHook } from '@testing-library/react-native'
3
3
  import React from 'react'
4
4
  import { buildTestQueryClient } from '../../__utils__/query_client'
5
+ import { availableFeatures } from '../../hooks/use_features'
5
6
  import { useFilterDropdownEnabled } from '../../hooks/use_filter_dropdown_enabled'
6
7
  import { getFeaturesQueryKey } from '../../utils/request/get_features'
7
8
 
@@ -9,7 +10,7 @@ jest.mock('../../hooks/use_api_client')
9
10
 
10
11
  const renderWithFeatures = (enabledFlags: string[]) => {
11
12
  const queryClient = buildTestQueryClient()
12
- queryClient.setQueryData(getFeaturesQueryKey(), {
13
+ queryClient.setQueryData(getFeaturesQueryKey(Object.values(availableFeatures)), {
13
14
  data: enabledFlags.map((name, index) => ({
14
15
  type: 'Feature',
15
16
  id: `${index}`,
@@ -32,10 +32,10 @@ export function useFeatures() {
32
32
 
33
33
  export const featuresQueryOptions = (apiClient: ApiClient) =>
34
34
  queryOptions({
35
- queryKey: getFeaturesQueryKey(),
35
+ queryKey: getFeaturesQueryKey(featureNames),
36
36
  queryFn: (): Promise<FeaturesCollection> => {
37
37
  return apiClient.chat
38
- .get<ApiCollection<FeatureResource>>(getFeaturesRequestArgs())
38
+ .get<ApiCollection<FeatureResource>>(getFeaturesRequestArgs(featureNames))
39
39
  .catch(error => ({ ...stableEmptyFeatures, failure: { status: error?.status } }))
40
40
  },
41
41
  staleTime: query => {
@@ -63,6 +63,8 @@ export const availableFeatures = {
63
63
  manual_archiving_rollout: 'ROLLOUT_MOBILE_manual_archiving',
64
64
  } as const satisfies Record<string, `${'QA' | 'ROLLOUT'}_${string}`>
65
65
 
66
+ const featureNames = Object.values(availableFeatures)
67
+
66
68
  const stableEmptyFeatures: ApiCollection<FeatureResource> = {
67
69
  data: [],
68
70
  links: {},
@@ -311,6 +311,7 @@ export const ChatStack = createNativeStackNavigator({
311
311
  New: {
312
312
  screen: NewConversationStack,
313
313
  if: useQualifiedByAge,
314
+ layout: ({ children }) => children,
314
315
  options: {
315
316
  headerShown: false,
316
317
  presentation: 'modal',
@@ -1,16 +1,21 @@
1
1
  import { useRoute } from '@react-navigation/native'
2
2
  import React from 'react'
3
3
  import { Suspense } from 'react'
4
+ import { StyleSheet, View } from 'react-native'
5
+ import { useSafeAreaInsets } from 'react-native-safe-area-context'
4
6
  import { DefaultLoading } from '../components/page/loading'
5
7
  import { PageErrorBoundary } from '../components/page/page_error_boundary'
6
8
  import { ChatAccessGate } from './chat_access_gate'
7
9
 
8
10
  export function ScreenLayout({ children }: { children: React.ReactElement }) {
9
11
  const route = useRoute()
12
+ const styles = useStyles()
10
13
 
11
14
  return (
12
15
  <PageErrorBoundary screenName={route.name}>
13
- <Suspense fallback={<DefaultLoading />}>{children}</Suspense>
16
+ <View style={styles.screen}>
17
+ <Suspense fallback={<DefaultLoading />}>{children}</Suspense>
18
+ </View>
14
19
  </PageErrorBoundary>
15
20
  )
16
21
  }
@@ -24,3 +29,15 @@ export function ScreenLayoutWithChatAccessGate({ children }: { children: React.R
24
29
  </ScreenLayout>
25
30
  )
26
31
  }
32
+
33
+ const useStyles = () => {
34
+ const insets = useSafeAreaInsets()
35
+
36
+ return StyleSheet.create({
37
+ screen: {
38
+ flex: 1,
39
+ paddingLeft: insets.left,
40
+ paddingRight: insets.right,
41
+ },
42
+ })
43
+ }
@@ -1,12 +1,19 @@
1
1
  import { getRequestQueryKey } from '../../hooks/use_suspense_api'
2
+ import { chatReactNativeVersion } from '../package_version'
2
3
 
3
- export const getFeaturesRequestArgs = () => {
4
+ export const getFeaturesRequestArgs = (names: readonly string[]) => {
4
5
  const url = '/me/features'
5
6
 
6
7
  return {
7
8
  url,
9
+ headers: {
10
+ 'X-PCO-API-Version': '2026-10-26',
11
+ 'X-PCO-Chat-React-Native-Version': chatReactNativeVersion,
12
+ },
8
13
  data: {
9
- perPage: 100,
14
+ where: {
15
+ name: names.join(','),
16
+ },
10
17
  fields: {
11
18
  Feature: ['name', 'enabled'],
12
19
  },
@@ -14,7 +21,7 @@ export const getFeaturesRequestArgs = () => {
14
21
  }
15
22
  }
16
23
 
17
- export const getFeaturesQueryKey = () => {
18
- const requestArgs = getFeaturesRequestArgs()
24
+ export const getFeaturesQueryKey = (names: readonly string[]) => {
25
+ const requestArgs = getFeaturesRequestArgs(names)
19
26
  return getRequestQueryKey(requestArgs)
20
27
  }