@planningcenter/chat-react-native 3.16.0-rc.0 → 3.16.0-rc.1

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.
@@ -270,9 +270,12 @@ export declare const ChatStack: import("@react-navigation/native").TypedNavigato
270
270
  readonly options: ({ navigation, }: import("@react-navigation/native-stack").NativeStackScreenProps<any>) => import("@react-navigation/native-stack").NativeStackNavigationOptions;
271
271
  };
272
272
  readonly GetHelp: {
273
- readonly screen: ({}: {
274
- navigation: import("@react-navigation/native-stack").NativeStackNavigationProp<{}, string, undefined>;
275
- route: import("@react-navigation/native").RouteProp<{}, string>;
273
+ readonly screen: ({ route }: {
274
+ route: {
275
+ params: {
276
+ type?: "chat" | "general";
277
+ };
278
+ };
276
279
  }) => React.JSX.Element;
277
280
  readonly options: ({ navigation }: {
278
281
  route: import("@react-navigation/native").RouteProp<import("@react-navigation/native").ParamListBase, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EACL,uBAAuB,EAExB,MAAM,yDAAyD,CAAA;AAChE,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,EAEL,kBAAkB,EAEnB,MAAM,gCAAgC,CAAA;AAIvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAEnF,OAAO,EACL,oBAAoB,EAErB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAA0B,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AAEtF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAO7C,eAAO,MAAM,oBAAoB;;;;;;;;;uOA5Cd,mBACR;;;;;;;;;;;;;uBA4PogT,gBAAiB,KAAK;;;qCAtMxgT,2BAA2B;;;;;;;;;uBAsMu9S,gBAAiB,KAAK;;;qCA5LxgT,2BAA2B;;;;;;;;uBA4Lu9S,gBAAiB,KAAK;;;qCA/KxgT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;uBA+Ku9S,gBAAiB,KAAK;;;;qCA7JxgT,2BAA2B;;;;EAUtD,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;uBAiJy/S,gBAAiB,KAAK;;;;qCAtIxgT,2BAA2B;;;;;;;;;;;;uBAsIu9S,gBAAiB,KAAK;;qCAtHxgT,2BAA2B;qCAc3B,2BAA2B;;;;;;;;;;;;;;;;;uBAwGu9S,gBAAiB,KAAK;;;;qCAlExgT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;mDAkEw+S,KAAK;;;iDAtMxgT,2BAA2B;;;;;;;;;mDAsMw+S,KAAK;;;iDA5LxgT,2BAA2B;;;;;;;;mDA4Lw+S,KAAK;;;iDA/KxgT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;mDA+Kw+S,KAAK;;;;iDA7JxgT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA6Ju9S,gBAAiB,KAAK;;;;;;;;;;;;;;;;;EATniT,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":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAEL,2BAA2B,EAC5B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EACL,uBAAuB,EAExB,MAAM,yDAAyD,CAAA;AAChE,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,EAEL,kBAAkB,EAEnB,MAAM,gCAAgC,CAAA;AAIvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AAEnF,OAAO,EACL,oBAAoB,EAErB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAA0B,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,eAAe,EAA0B,MAAM,8BAA8B,CAAA;AAEtF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAO7C,eAAO,MAAM,oBAAoB;;;;;;;;;uOA5Cd,mBACR;;;;;;;;;;;;;uBA4PogT,gBAAiB,KAAK;;;qCAtMxgT,2BAA2B;;;;;;;;;uBAsMu9S,gBAAiB,KAAK;;;qCA5LxgT,2BAA2B;;;;;;;;uBA4Lu9S,gBAAiB,KAAK;;;qCA/KxgT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;uBA+Ku9S,gBAAiB,KAAK;;;;qCA7JxgT,2BAA2B;;;;EAUtD,CAAA;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;uBAiJy/S,gBAAiB,KAAK;;;;qCAtIxgT,2BAA2B;;;;;;;;;;;;uBAsIu9S,gBAAiB,KAAK;;qCAtHxgT,2BAA2B;qCAc3B,2BAA2B;;;;;;;;;;;;;;;;;uBAwGu9S,gBAAiB,KAAK;;;;qCAlExgT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;mDAkEw+S,KAAK;;;iDAtMxgT,2BAA2B;;;;;;;;;mDAsMw+S,KAAK;;;iDA5LxgT,2BAA2B;;;;;;;;mDA4Lw+S,KAAK;;;iDA/KxgT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;mDA+Kw+S,KAAK;;;;iDA7JxgT,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA6Ju9S,gBAAiB,KAAK;;;;;;;;;;;;;;;;;EATniT,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"}
@@ -42,7 +42,7 @@ export function ConversationsScreen({ route }) {
42
42
  });
43
43
  };
44
44
  const handleGetHelp = useCallback(() => {
45
- navigation.navigate('GetHelp');
45
+ navigation.navigate('GetHelp', { type: 'chat' });
46
46
  }, [navigation]);
47
47
  return (<View style={styles.container}>
48
48
  <ConversationsContextProvider args={route.params}>
@@ -1 +1 @@
1
- {"version":3,"file":"conversations_screen.js","sourceRoot":"","sources":["../../../src/screens/conversations/conversations_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport React, { useCallback } from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { Conversations, TextButton } from '../../components'\nimport { ActionButton } from '../../components/display/action_button'\nimport { ConversationsContextProvider } from '../../contexts/conversations_context'\nimport { useCanCreateConversations } from '../../hooks'\nimport { GraphId } from '../../types/resources/group_resource'\nimport { destructureChatGroupGraphId, MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport { ListHeaderComponent } from './components/list_header_component'\nimport { AppName } from '../../types/resources/app_name'\n\nexport type ConversationsScreenProps = StaticScreenProps<{\n title?: string\n chat_group_graph_id?: GraphId\n group_source_app_name?: AppName\n}>\n\nexport function ConversationsScreen({ route }: ConversationsScreenProps) {\n const navigation = useNavigation()\n const canCreateConversations = useCanCreateConversations()\n const styles = useStyles()\n\n const { chat_group_graph_id } = route.params || {}\n const { sourceAppName, sourceId } = destructureChatGroupGraphId(chat_group_graph_id)\n\n const handleNewConversationNavigation = () => {\n if (sourceAppName === 'Services') {\n return navigation.navigate('New', {\n screen: 'ConversationNew',\n params: {\n team_ids: sourceId ? [sourceId] : [],\n source_app_name: sourceAppName,\n ...route.params,\n },\n })\n }\n if (sourceAppName === 'Groups') {\n return navigation.navigate('New', {\n screen: 'ConversationNew',\n params: {\n group_id: sourceId,\n source_app_name: sourceAppName,\n ...route.params,\n },\n })\n }\n\n return navigation.navigate('New', {\n screen: 'ConversationSelectRecipients',\n params: {\n ...route.params,\n },\n })\n }\n\n const handleGetHelp = useCallback(() => {\n navigation.navigate('GetHelp')\n }, [navigation])\n\n return (\n <View style={styles.container}>\n <ConversationsContextProvider args={route.params}>\n <Conversations ListHeaderComponent={ListHeaderComponent} />\n </ConversationsContextProvider>\n <ActionButton\n visible={canCreateConversations}\n title=\"New conversation\"\n onPress={handleNewConversationNavigation}\n buttonIconNameLeft=\"churchCenter.signups\"\n secondaryButton={\n <TextButton\n variant=\"tertiary\"\n onPress={handleGetHelp}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n accessibilityShowsLargeContentViewer\n accessibilityLargeContentTitle=\"Get help\"\n >\n Get help\n </TextButton>\n }\n />\n </View>\n )\n}\n\nconst useStyles = () => {\n return StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n },\n })\n}\n"]}
1
+ {"version":3,"file":"conversations_screen.js","sourceRoot":"","sources":["../../../src/screens/conversations/conversations_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport React, { useCallback } from 'react'\nimport { StyleSheet, View } from 'react-native'\nimport { Conversations, TextButton } from '../../components'\nimport { ActionButton } from '../../components/display/action_button'\nimport { ConversationsContextProvider } from '../../contexts/conversations_context'\nimport { useCanCreateConversations } from '../../hooks'\nimport { GraphId } from '../../types/resources/group_resource'\nimport { destructureChatGroupGraphId, MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport { ListHeaderComponent } from './components/list_header_component'\nimport { AppName } from '../../types/resources/app_name'\n\nexport type ConversationsScreenProps = StaticScreenProps<{\n title?: string\n chat_group_graph_id?: GraphId\n group_source_app_name?: AppName\n}>\n\nexport function ConversationsScreen({ route }: ConversationsScreenProps) {\n const navigation = useNavigation()\n const canCreateConversations = useCanCreateConversations()\n const styles = useStyles()\n\n const { chat_group_graph_id } = route.params || {}\n const { sourceAppName, sourceId } = destructureChatGroupGraphId(chat_group_graph_id)\n\n const handleNewConversationNavigation = () => {\n if (sourceAppName === 'Services') {\n return navigation.navigate('New', {\n screen: 'ConversationNew',\n params: {\n team_ids: sourceId ? [sourceId] : [],\n source_app_name: sourceAppName,\n ...route.params,\n },\n })\n }\n if (sourceAppName === 'Groups') {\n return navigation.navigate('New', {\n screen: 'ConversationNew',\n params: {\n group_id: sourceId,\n source_app_name: sourceAppName,\n ...route.params,\n },\n })\n }\n\n return navigation.navigate('New', {\n screen: 'ConversationSelectRecipients',\n params: {\n ...route.params,\n },\n })\n }\n\n const handleGetHelp = useCallback(() => {\n navigation.navigate('GetHelp', { type: 'chat' })\n }, [navigation])\n\n return (\n <View style={styles.container}>\n <ConversationsContextProvider args={route.params}>\n <Conversations ListHeaderComponent={ListHeaderComponent} />\n </ConversationsContextProvider>\n <ActionButton\n visible={canCreateConversations}\n title=\"New conversation\"\n onPress={handleNewConversationNavigation}\n buttonIconNameLeft=\"churchCenter.signups\"\n secondaryButton={\n <TextButton\n variant=\"tertiary\"\n onPress={handleGetHelp}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n accessibilityShowsLargeContentViewer\n accessibilityLargeContentTitle=\"Get help\"\n >\n Get help\n </TextButton>\n }\n />\n </View>\n )\n}\n\nconst useStyles = () => {\n return StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n },\n })\n}\n"]}
@@ -1,5 +1,8 @@
1
- import { NativeStackScreenProps } from '@react-navigation/native-stack';
2
- type GetHelpScreenProps = NativeStackScreenProps<{}>;
3
- export declare const GetHelpScreen: ({}: GetHelpScreenProps) => import("react").JSX.Element;
1
+ import { StaticScreenProps } from '@react-navigation/native';
2
+ type GetHelpScreenRouteProps = {
3
+ type?: 'chat' | 'general';
4
+ };
5
+ type GetHelpScreenProps = StaticScreenProps<GetHelpScreenRouteProps>;
6
+ export declare const GetHelpScreen: ({ route }: GetHelpScreenProps) => import("react").JSX.Element;
4
7
  export {};
5
8
  //# sourceMappingURL=get_help_screen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_help_screen.d.ts","sourceRoot":"","sources":["../../src/screens/get_help_screen.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAQvE,KAAK,kBAAkB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAA;AA8BpD,eAAO,MAAM,aAAa,OAAQ,kBAAkB,gCA+CnD,CAAA"}
1
+ {"version":3,"file":"get_help_screen.d.ts","sourceRoot":"","sources":["../../src/screens/get_help_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAQ3E,KAAK,uBAAuB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC1B,CAAA;AAED,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,uBAAuB,CAAC,CAAA;AAmDpE,eAAO,MAAM,aAAa,cAAe,kBAAkB,gCAyD1D,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { useNavigation } from '@react-navigation/native';
2
- import { useCallback } from 'react';
2
+ import { useCallback, useMemo } from 'react';
3
3
  import { Linking, StyleSheet, View } from 'react-native';
4
4
  import { Heading, PressableRow, Text, TextInlineButton } from '../components';
5
5
  import { useApiGet, useTheme } from '../hooks';
@@ -21,24 +21,36 @@ const useOrganization = () => {
21
21
  });
22
22
  return organization;
23
23
  };
24
- export const GetHelpScreen = ({}) => {
24
+ const useHelpUrls = () => {
25
+ const { data: helpUrls = [] } = useApiGet({
26
+ url: '/help_urls',
27
+ data: {
28
+ fields: {
29
+ HelpUrl: [],
30
+ },
31
+ },
32
+ });
33
+ return helpUrls;
34
+ };
35
+ export const GetHelpScreen = ({ route }) => {
36
+ const { type = 'chat' } = route.params || {};
25
37
  const styles = useStyles();
26
38
  const appName = useAppName();
27
- const isChurchCenter = appName === 'churchcenter';
28
39
  const navigation = useNavigation();
29
40
  const organization = useOrganization();
30
41
  const contactPresent = organization?.contactEmail || organization?.contactPhoneNumber;
31
- const getHelpLink = isChurchCenter
32
- ? organization?.churchCenterChatHelpUrl
33
- : organization?.servicesChatHelpUrl;
42
+ const helpUrls = useHelpUrls();
43
+ const appSpecificHelpUrls = useMemo(() => helpUrls
44
+ .filter(helpUrl => helpUrl.product === appName)
45
+ .filter(helpUrl => helpUrl.type.includes(type)), [helpUrls, appName, type]);
34
46
  const handleNavigateToBugReport = useCallback(() => {
35
47
  navigation.navigate('BugReport');
36
48
  }, [navigation]);
37
49
  return (<View style={[styles.container]}>
38
- <Heading variant="h2" style={[styles.heading, styles.headingBottomBorder]}>
39
- How-to articles
40
- </Heading>
41
- <PressableRow onPress={() => Linking.openURL(getHelpLink || '')} text="Get help with chat" isActive={true} iconPath="general.newWindow"/>
50
+ {appSpecificHelpUrls.length > 0 && (<Heading variant="h2" style={[styles.heading, styles.headingBottomBorder]}>
51
+ How-to articles
52
+ </Heading>)}
53
+ {appSpecificHelpUrls.map(helpUrl => (<PressableRow key={helpUrl.id} onPress={() => Linking.openURL(helpUrl.link)} text={helpUrl.title} isActive={true} iconPath="general.newWindow"/>))}
42
54
  {contactPresent && (<Heading variant="h2" style={[styles.heading, styles.headingBottomBorder]}>
43
55
  Contact {organization?.name}
44
56
  </Heading>)}
@@ -1 +1 @@
1
- {"version":3,"file":"get_help_screen.js","sourceRoot":"","sources":["../../src/screens/get_help_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useNavigation } from '@react-navigation/native'\nimport { NativeStackScreenProps } from '@react-navigation/native-stack'\nimport { useCallback } from 'react'\nimport { Linking, StyleSheet, View } from 'react-native'\nimport { Heading, PressableRow, Text, TextInlineButton } from '../components'\nimport { useApiGet, useTheme } from '../hooks'\nimport { useAppName } from '../hooks/use_app_name'\nimport { ResourceObject } from '../types'\n\ntype GetHelpScreenProps = NativeStackScreenProps<{}>\n\ninterface OrganizationResource extends ResourceObject {\n id: number\n name: string\n contactEmail: string\n contactPhoneNumber: string\n churchCenterChatHelpUrl: string\n servicesChatHelpUrl: string\n}\n\nconst useOrganization = () => {\n const { data: organization } = useApiGet<OrganizationResource>({\n url: '/',\n data: {\n fields: {\n Organization: [\n 'contact_phone_number',\n 'contact_email',\n 'name',\n 'church_center_chat_help_url',\n 'services_chat_help_url',\n ],\n },\n },\n })\n\n return organization\n}\n\nexport const GetHelpScreen = ({}: GetHelpScreenProps) => {\n const styles = useStyles()\n const appName = useAppName()\n const isChurchCenter = appName === 'churchcenter'\n const navigation = useNavigation()\n const organization = useOrganization()\n const contactPresent = organization?.contactEmail || organization?.contactPhoneNumber\n const getHelpLink = isChurchCenter\n ? organization?.churchCenterChatHelpUrl\n : organization?.servicesChatHelpUrl\n\n const handleNavigateToBugReport = useCallback(() => {\n navigation.navigate('BugReport')\n }, [navigation])\n\n return (\n <View style={[styles.container]}>\n <Heading variant=\"h2\" style={[styles.heading, styles.headingBottomBorder]}>\n How-to articles\n </Heading>\n <PressableRow\n onPress={() => Linking.openURL(getHelpLink || '')}\n text=\"Get help with chat\"\n isActive={true}\n iconPath=\"general.newWindow\"\n />\n {contactPresent && (\n <Heading variant=\"h2\" style={[styles.heading, styles.headingBottomBorder]}>\n Contact {organization?.name}\n </Heading>\n )}\n <ContactRow email={organization?.contactEmail} />\n <ContactRow phone={organization?.contactPhoneNumber} />\n <Heading variant=\"h2\" style={[styles.heading]}>\n Report a bug\n </Heading>\n <View style={styles.text}>\n <Text>\n Having an issue?{' '}\n <TextInlineButton onPress={handleNavigateToBugReport}>\n Submit a bug report\n </TextInlineButton>{' '}\n to the development team.\n </Text>\n </View>\n </View>\n )\n}\n\nconst ContactRow = ({ email, phone }: { email?: string; phone?: string }) => {\n if (!email && !phone) return null\n\n const contact = email || phone\n\n return (\n <PressableRow\n onPress={() => {}}\n text={contact || ''}\n isActive={true}\n iconPath={email ? 'services.email' : 'general.phone'}\n />\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n container: {\n flex: 1,\n },\n text: {\n paddingVertical: 4,\n paddingHorizontal: 16,\n },\n heading: {\n marginLeft: 16,\n paddingTop: 24,\n paddingBottom: 12,\n },\n headingBottomBorder: {\n marginLeft: 16,\n paddingLeft: 0,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n },\n headingAux: {\n paddingTop: 24,\n paddingHorizontal: 16,\n },\n })\n}\n"]}
1
+ {"version":3,"file":"get_help_screen.js","sourceRoot":"","sources":["../../src/screens/get_help_screen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport { useCallback, useMemo } from 'react'\nimport { Linking, StyleSheet, View } from 'react-native'\nimport { Heading, PressableRow, Text, TextInlineButton } from '../components'\nimport { useApiGet, useTheme } from '../hooks'\nimport { useAppName } from '../hooks/use_app_name'\nimport { ResourceObject } from '../types'\n\ntype GetHelpScreenRouteProps = {\n type?: 'chat' | 'general'\n}\n\ntype GetHelpScreenProps = StaticScreenProps<GetHelpScreenRouteProps>\n\ninterface OrganizationResource extends ResourceObject {\n id: number\n name: string\n contactEmail: string\n contactPhoneNumber: string\n churchCenterChatHelpUrl: string\n servicesChatHelpUrl: string\n}\n\nconst useOrganization = () => {\n const { data: organization } = useApiGet<OrganizationResource>({\n url: '/',\n data: {\n fields: {\n Organization: [\n 'contact_phone_number',\n 'contact_email',\n 'name',\n 'church_center_chat_help_url',\n 'services_chat_help_url',\n ],\n },\n },\n })\n\n return organization\n}\n\ninterface HelpUrlResource extends ResourceObject {\n id: number\n link: string\n title: string\n product: 'services' | 'churchcenter'\n type: 'chat' | 'general'\n}\n\nconst useHelpUrls = () => {\n const { data: helpUrls = [] } = useApiGet<HelpUrlResource[]>({\n url: '/help_urls',\n data: {\n fields: {\n HelpUrl: [],\n },\n },\n })\n\n return helpUrls\n}\n\nexport const GetHelpScreen = ({ route }: GetHelpScreenProps) => {\n const { type = 'chat' } = route.params || {}\n const styles = useStyles()\n const appName = useAppName()\n const navigation = useNavigation()\n const organization = useOrganization()\n const contactPresent = organization?.contactEmail || organization?.contactPhoneNumber\n const helpUrls = useHelpUrls()\n const appSpecificHelpUrls = useMemo(\n () =>\n helpUrls\n .filter(helpUrl => helpUrl.product === appName)\n .filter(helpUrl => helpUrl.type.includes(type)),\n [helpUrls, appName, type]\n )\n\n const handleNavigateToBugReport = useCallback(() => {\n navigation.navigate('BugReport')\n }, [navigation])\n\n return (\n <View style={[styles.container]}>\n {appSpecificHelpUrls.length > 0 && (\n <Heading variant=\"h2\" style={[styles.heading, styles.headingBottomBorder]}>\n How-to articles\n </Heading>\n )}\n {appSpecificHelpUrls.map(helpUrl => (\n <PressableRow\n key={helpUrl.id}\n onPress={() => Linking.openURL(helpUrl.link)}\n text={helpUrl.title}\n isActive={true}\n iconPath=\"general.newWindow\"\n />\n ))}\n {contactPresent && (\n <Heading variant=\"h2\" style={[styles.heading, styles.headingBottomBorder]}>\n Contact {organization?.name}\n </Heading>\n )}\n <ContactRow email={organization?.contactEmail} />\n <ContactRow phone={organization?.contactPhoneNumber} />\n <Heading variant=\"h2\" style={[styles.heading]}>\n Report a bug\n </Heading>\n <View style={styles.text}>\n <Text>\n Having an issue?{' '}\n <TextInlineButton onPress={handleNavigateToBugReport}>\n Submit a bug report\n </TextInlineButton>{' '}\n to the development team.\n </Text>\n </View>\n </View>\n )\n}\n\nconst ContactRow = ({ email, phone }: { email?: string; phone?: string }) => {\n if (!email && !phone) return null\n\n const contact = email || phone\n\n return (\n <PressableRow\n onPress={() => {}}\n text={contact || ''}\n isActive={true}\n iconPath={email ? 'services.email' : 'general.phone'}\n />\n )\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n\n return StyleSheet.create({\n container: {\n flex: 1,\n },\n text: {\n paddingVertical: 4,\n paddingHorizontal: 16,\n },\n heading: {\n marginLeft: 16,\n paddingTop: 24,\n paddingBottom: 12,\n },\n headingBottomBorder: {\n marginLeft: 16,\n paddingLeft: 0,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n },\n headingAux: {\n paddingTop: 24,\n paddingHorizontal: 16,\n },\n })\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planningcenter/chat-react-native",
3
- "version": "3.16.0-rc.0",
3
+ "version": "3.16.0-rc.1",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -55,5 +55,5 @@
55
55
  "react-native-url-polyfill": "^2.0.0",
56
56
  "typescript": "<5.6.0"
57
57
  },
58
- "gitHead": "018c92f5d97d05c00819f58b42c8148fcbd8e891"
58
+ "gitHead": "47e50810584fa31ba56562462c46916de42d51ec"
59
59
  }
@@ -55,7 +55,7 @@ export function ConversationsScreen({ route }: ConversationsScreenProps) {
55
55
  }
56
56
 
57
57
  const handleGetHelp = useCallback(() => {
58
- navigation.navigate('GetHelp')
58
+ navigation.navigate('GetHelp', { type: 'chat' })
59
59
  }, [navigation])
60
60
 
61
61
  return (
@@ -1,13 +1,16 @@
1
- import { useNavigation } from '@react-navigation/native'
2
- import { NativeStackScreenProps } from '@react-navigation/native-stack'
3
- import { useCallback } from 'react'
1
+ import { StaticScreenProps, useNavigation } from '@react-navigation/native'
2
+ import { useCallback, useMemo } from 'react'
4
3
  import { Linking, StyleSheet, View } from 'react-native'
5
4
  import { Heading, PressableRow, Text, TextInlineButton } from '../components'
6
5
  import { useApiGet, useTheme } from '../hooks'
7
6
  import { useAppName } from '../hooks/use_app_name'
8
7
  import { ResourceObject } from '../types'
9
8
 
10
- type GetHelpScreenProps = NativeStackScreenProps<{}>
9
+ type GetHelpScreenRouteProps = {
10
+ type?: 'chat' | 'general'
11
+ }
12
+
13
+ type GetHelpScreenProps = StaticScreenProps<GetHelpScreenRouteProps>
11
14
 
12
15
  interface OrganizationResource extends ResourceObject {
13
16
  id: number
@@ -37,16 +40,42 @@ const useOrganization = () => {
37
40
  return organization
38
41
  }
39
42
 
40
- export const GetHelpScreen = ({}: GetHelpScreenProps) => {
43
+ interface HelpUrlResource extends ResourceObject {
44
+ id: number
45
+ link: string
46
+ title: string
47
+ product: 'services' | 'churchcenter'
48
+ type: 'chat' | 'general'
49
+ }
50
+
51
+ const useHelpUrls = () => {
52
+ const { data: helpUrls = [] } = useApiGet<HelpUrlResource[]>({
53
+ url: '/help_urls',
54
+ data: {
55
+ fields: {
56
+ HelpUrl: [],
57
+ },
58
+ },
59
+ })
60
+
61
+ return helpUrls
62
+ }
63
+
64
+ export const GetHelpScreen = ({ route }: GetHelpScreenProps) => {
65
+ const { type = 'chat' } = route.params || {}
41
66
  const styles = useStyles()
42
67
  const appName = useAppName()
43
- const isChurchCenter = appName === 'churchcenter'
44
68
  const navigation = useNavigation()
45
69
  const organization = useOrganization()
46
70
  const contactPresent = organization?.contactEmail || organization?.contactPhoneNumber
47
- const getHelpLink = isChurchCenter
48
- ? organization?.churchCenterChatHelpUrl
49
- : organization?.servicesChatHelpUrl
71
+ const helpUrls = useHelpUrls()
72
+ const appSpecificHelpUrls = useMemo(
73
+ () =>
74
+ helpUrls
75
+ .filter(helpUrl => helpUrl.product === appName)
76
+ .filter(helpUrl => helpUrl.type.includes(type)),
77
+ [helpUrls, appName, type]
78
+ )
50
79
 
51
80
  const handleNavigateToBugReport = useCallback(() => {
52
81
  navigation.navigate('BugReport')
@@ -54,15 +83,20 @@ export const GetHelpScreen = ({}: GetHelpScreenProps) => {
54
83
 
55
84
  return (
56
85
  <View style={[styles.container]}>
57
- <Heading variant="h2" style={[styles.heading, styles.headingBottomBorder]}>
58
- How-to articles
59
- </Heading>
60
- <PressableRow
61
- onPress={() => Linking.openURL(getHelpLink || '')}
62
- text="Get help with chat"
63
- isActive={true}
64
- iconPath="general.newWindow"
65
- />
86
+ {appSpecificHelpUrls.length > 0 && (
87
+ <Heading variant="h2" style={[styles.heading, styles.headingBottomBorder]}>
88
+ How-to articles
89
+ </Heading>
90
+ )}
91
+ {appSpecificHelpUrls.map(helpUrl => (
92
+ <PressableRow
93
+ key={helpUrl.id}
94
+ onPress={() => Linking.openURL(helpUrl.link)}
95
+ text={helpUrl.title}
96
+ isActive={true}
97
+ iconPath="general.newWindow"
98
+ />
99
+ ))}
66
100
  {contactPresent && (
67
101
  <Heading variant="h2" style={[styles.heading, styles.headingBottomBorder]}>
68
102
  Contact {organization?.name}