@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.
- package/build/hooks/use_features.js +3 -2
- package/build/hooks/use_features.js.map +1 -1
- package/build/navigation/index.d.ts +2 -0
- package/build/navigation/index.d.ts.map +1 -1
- package/build/navigation/index.js +3 -0
- package/build/navigation/index.js.map +1 -1
- package/build/navigation/screenLayout.d.ts.map +1 -1
- package/build/navigation/screenLayout.js +41 -6
- package/build/navigation/screenLayout.js.map +1 -1
- package/build/utils/request/get_features.d.ts +9 -3
- package/build/utils/request/get_features.d.ts.map +1 -1
- package/build/utils/request/get_features.js +11 -4
- package/build/utils/request/get_features.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/hooks/use_can_browse_archived_conversations.test.tsx +2 -1
- package/src/__tests__/hooks/use_features.test.ts +14 -0
- package/src/__tests__/hooks/use_filter_dropdown_enabled.test.tsx +2 -1
- package/src/hooks/use_features.ts +4 -2
- package/src/navigation/index.tsx +1 -0
- package/src/navigation/screenLayout.tsx +18 -1
- package/src/utils/request/get_features.ts +11 -4
|
@@ -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":";AAAA,SAASA,YAAY,EAAEC,gBAAgB,QAAQ,uBAAuB;AACtE,SAASC,WAAW,QAAQ,OAAO;AAGnC,SAASC,sBAAsB,EAAEC,mBAAmB,QAAQ,+BAA+B;AAC3F,SAASC,YAAY,EAAEC,UAAU,QAAQ,eAAe;AACxD,SAAoBC,YAAY,QAAQ,kBAAkB;AAQ1D,OAAO,SAAAC,YAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EACL,MAAAC,SAAA,GAAkBJ,YAAY,CAAC,CAAC;EAAA,IAAAK,EAAA;EAAA,IAAAH,CAAA,QAAAE,SAAA;IACEC,EAAA,GAAAC,oBAAoB,CAACF,SAAS,CAAC;IAAAF,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAAjE;IAAAK;EAAA,IAAiBb,gBAAgB,CAACW,EAA+B,CAAC;EAElE,MAAAG,QAAA,GAAiBD,IAAI,CAAAA,IAAK;EAAA,IAAAE,EAAA;EAAA,IAAAP,CAAA,QAAAM,QAAA;IAGxBC,EAAA,GAAAC,WAAA,IACEF,QAAQ,CAAAG,IAAK,CAACC,OAAA,IAAWA,OAAO,CAAAC,IAAK,KAAKH,WAA8B,IAAfE,OAAO,CAAAE,OAAQ,CAAC;IAAAZ,CAAA,MAAAM,QAAA;IAAAN,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAF7E,MAAAa,cAAA,GAAuBN,EAItB;EAAA,IAAAO,EAAA;EAAA,IAAAd,CAAA,QAAAa,cAAA,IAAAb,CAAA,QAAAM,QAAA;IAEMQ,EAAA;MAAAR,QAAA;MAAAO;IAGP,CAAC;IAAAb,CAAA,MAAAa,cAAA;IAAAb,CAAA,MAAAM,QAAA;IAAAN,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAAA,OAHMc,EAGN;AAAA;AAGH,OAAO,MAAMV,oBAAoB,GAAIF,SAAoB,IACvDX,YAAY,CAAC;EACXwB,QAAQ,EAAEpB,mBAAmB,
|
|
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;
|
|
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"}
|
|
@@ -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;
|
|
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(
|
|
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] !==
|
|
35
|
-
t3 = /*#__PURE__*/_jsx(
|
|
36
|
-
|
|
37
|
+
if ($[3] !== styles.screen || $[4] !== t2) {
|
|
38
|
+
t3 = /*#__PURE__*/_jsx(View, {
|
|
39
|
+
style: styles.screen,
|
|
37
40
|
children: t2
|
|
38
41
|
});
|
|
39
|
-
$[3] =
|
|
42
|
+
$[3] = styles.screen;
|
|
40
43
|
$[4] = t2;
|
|
41
44
|
$[5] = t3;
|
|
42
45
|
} else {
|
|
43
46
|
t3 = $[5];
|
|
44
47
|
}
|
|
45
|
-
|
|
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,
|
|
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
|
-
|
|
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":"
|
|
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
|
-
|
|
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
|
-
|
|
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","
|
|
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.
|
|
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": "
|
|
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: {},
|
package/src/navigation/index.tsx
CHANGED
|
@@ -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
|
-
<
|
|
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
|
-
|
|
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
|
}
|