@planningcenter/chat-react-native 4.4.1-qa-staging.21 → 4.4.1-qa-staging.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/build/components/conversation/attachments/giphy_attachment.d.ts.map +1 -1
  2. package/build/components/conversation/attachments/giphy_attachment.js +2 -2
  3. package/build/components/conversation/attachments/giphy_attachment.js.map +1 -1
  4. package/build/components/conversation/message_form.d.ts.map +1 -1
  5. package/build/components/conversation/message_form.js +2 -2
  6. package/build/components/conversation/message_form.js.map +1 -1
  7. package/build/components/conversations/conversations.js +1 -1
  8. package/build/components/conversations/conversations.js.map +1 -1
  9. package/build/screens/age_check/age_check_underage_screen.d.ts.map +1 -1
  10. package/build/screens/age_check/age_check_underage_screen.js +2 -3
  11. package/build/screens/age_check/age_check_underage_screen.js.map +1 -1
  12. package/build/screens/bug_report_screen.d.ts.map +1 -1
  13. package/build/screens/bug_report_screen.js +2 -2
  14. package/build/screens/bug_report_screen.js.map +1 -1
  15. package/build/screens/conversation_details_screen.js +2 -2
  16. package/build/screens/conversation_details_screen.js.map +1 -1
  17. package/build/screens/conversation_screen.js +1 -1
  18. package/build/screens/conversation_screen.js.map +1 -1
  19. package/build/screens/get_help_screen.js +4 -4
  20. package/build/screens/get_help_screen.js.map +1 -1
  21. package/build/screens/team_conversation_screen.js +1 -1
  22. package/build/screens/team_conversation_screen.js.map +1 -1
  23. package/build/types/resources/conversation.d.ts +1 -1
  24. package/build/types/resources/conversation.d.ts.map +1 -1
  25. package/build/types/resources/conversation.js.map +1 -1
  26. package/package.json +3 -3
  27. package/src/components/conversation/attachments/giphy_attachment.tsx +3 -2
  28. package/src/components/conversation/message_form.tsx +1 -1
  29. package/src/components/conversations/conversations.tsx +1 -1
  30. package/src/screens/__tests__/conversation_details_screen.test.tsx +8 -0
  31. package/src/screens/age_check/age_check_underage_screen.tsx +2 -3
  32. package/src/screens/bug_report_screen.tsx +10 -2
  33. package/src/screens/conversation_details_screen.tsx +2 -2
  34. package/src/screens/conversation_screen.tsx +1 -1
  35. package/src/screens/get_help_screen.tsx +4 -4
  36. package/src/screens/team_conversation_screen.tsx +1 -1
  37. package/src/types/resources/conversation.ts +1 -1
  38. package/src/__tests__/components/conversation/attachments/giphy_attachment.test.tsx +0 -76
  39. package/src/__tests__/screens/get_help_screen.test.ts +0 -40
@@ -1,12 +1,12 @@
1
1
  import { c as _c } from "react/compiler-runtime";
2
2
  import { useNavigation } from '@react-navigation/native';
3
3
  import { useCallback, useMemo } from 'react';
4
- import { Alert, Linking as RNLinking, StyleSheet, View } from 'react-native';
4
+ import { Alert, Linking, StyleSheet, View } from 'react-native';
5
5
  import { Heading, PressableRow, Text, TextInlineButton } from '../components';
6
6
  import { useApiGet, useTheme } from '../hooks';
7
7
  import { useAppName } from '../hooks/use_app_name';
8
8
  import { useOrganization } from '../hooks/use_organization';
9
- import { Clipboard, Linking } from '../utils';
9
+ import { Clipboard } from '../utils';
10
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  const useHelpUrls = () => {
12
12
  const $ = _c(3);
@@ -272,7 +272,7 @@ const ContactRow = t0 => {
272
272
  export function sendEmail(email) {
273
273
  if (!email) return;
274
274
  const url = encodeURI(`mailto:${email}`);
275
- RNLinking.openURL(url).catch(() => {
275
+ Linking.openURL(url).catch(() => {
276
276
  Alert.alert('Oops', `Unable to open: ${email}`, [{
277
277
  text: 'Copy to clipboard',
278
278
  onPress: () => Clipboard.setStringAsync(email)
@@ -284,7 +284,7 @@ export function sendEmail(email) {
284
284
  export function placePhoneCall(phoneNumber) {
285
285
  if (!phoneNumber) return;
286
286
  const url = encodeURI(`tel:${phoneNumber}`);
287
- RNLinking.openURL(url).catch(() => {
287
+ Linking.openURL(url).catch(() => {
288
288
  Alert.alert('Oops', `Unable to open: ${phoneNumber}`, [{
289
289
  text: 'Copy to clipboard',
290
290
  onPress: () => Clipboard.setStringAsync(phoneNumber)
@@ -1 +1 @@
1
- {"version":3,"file":"get_help_screen.js","names":["useNavigation","useCallback","useMemo","Alert","Linking","RNLinking","StyleSheet","View","Heading","PressableRow","Text","TextInlineButton","useApiGet","useTheme","useAppName","useOrganization","Clipboard","jsx","_jsx","jsxs","_jsxs","useHelpUrls","$","_c","t0","Symbol","for","url","data","fields","HelpUrl","t1","t2","undefined","helpUrls","GetHelpScreen","route","params","type","styles","useStyles","appName","navigation","organization","contactPresent","contactEmail","contactPhoneNumber","t3","t4","helpUrl","product","t5","helpUrl_0","includes","filter","appSpecificHelpUrls","navigate","handleNavigateToBugReport","container","t6","length","heading","headingBottomBorder","variant","style","children","t7","map","_temp","t8","name","t9","t10","ContactRow","email","t11","t12","phone","t13","t14","t15","text","t16","contact","sendEmail","placePhoneCall","onPress","isActive","iconPath","encodeURI","openURL","catch","alert","setStringAsync","phoneNumber","colors","borderColorDefaultBase","create","flex","paddingVertical","paddingHorizontal","marginLeft","paddingTop","paddingBottom","paddingLeft","borderBottomWidth","borderBottomColor","headingAux","helpUrl_1","link","title","id"],"sources":["../../src/screens/get_help_screen.tsx"],"sourcesContent":["import { StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport { useCallback, useMemo } from 'react'\nimport { Alert, Linking as RNLinking, 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 { useOrganization } from '../hooks/use_organization'\nimport { ResourceObject } from '../types'\nimport { Clipboard, Linking } from '../utils'\n\ntype GetHelpScreenRouteProps = {\n type?: 'chat' | 'general'\n}\n\ntype GetHelpScreenProps = StaticScreenProps<GetHelpScreenRouteProps>\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 { data: 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 const contact = email || phone\n if (!contact) return null\n\n return (\n <PressableRow\n onPress={() => {\n if (email) {\n sendEmail(contact)\n } else {\n placePhoneCall(contact)\n }\n }}\n text={contact || ''}\n isActive={true}\n iconPath={email ? 'services.email' : 'general.phone'}\n />\n )\n}\n\nexport function sendEmail(email: string) {\n if (!email) return\n\n const url = encodeURI(`mailto:${email}`)\n\n RNLinking.openURL(url).catch(() => {\n Alert.alert('Oops', `Unable to open: ${email}`, [\n { text: 'Copy to clipboard', onPress: () => Clipboard.setStringAsync(email) },\n { text: 'OK' },\n ])\n })\n}\n\nexport function placePhoneCall(phoneNumber: string) {\n if (!phoneNumber) return\n\n const url = encodeURI(`tel:${phoneNumber}`)\n\n RNLinking.openURL(url).catch(() => {\n Alert.alert('Oops', `Unable to open: ${phoneNumber}`, [\n { text: 'Copy to clipboard', onPress: () => Clipboard.setStringAsync(phoneNumber) },\n { text: 'OK' },\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"get_help_screen.js","names":["useNavigation","useCallback","useMemo","Alert","Linking","StyleSheet","View","Heading","PressableRow","Text","TextInlineButton","useApiGet","useTheme","useAppName","useOrganization","Clipboard","jsx","_jsx","jsxs","_jsxs","useHelpUrls","$","_c","t0","Symbol","for","url","data","fields","HelpUrl","t1","t2","undefined","helpUrls","GetHelpScreen","route","params","type","styles","useStyles","appName","navigation","organization","contactPresent","contactEmail","contactPhoneNumber","t3","t4","helpUrl","product","t5","helpUrl_0","includes","filter","appSpecificHelpUrls","navigate","handleNavigateToBugReport","container","t6","length","heading","headingBottomBorder","variant","style","children","t7","map","_temp","t8","name","t9","t10","ContactRow","email","t11","t12","phone","t13","t14","t15","text","t16","contact","sendEmail","placePhoneCall","onPress","isActive","iconPath","encodeURI","openURL","catch","alert","setStringAsync","phoneNumber","colors","borderColorDefaultBase","create","flex","paddingVertical","paddingHorizontal","marginLeft","paddingTop","paddingBottom","paddingLeft","borderBottomWidth","borderBottomColor","headingAux","helpUrl_1","link","title","id"],"sources":["../../src/screens/get_help_screen.tsx"],"sourcesContent":["import { StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport { useCallback, useMemo } from 'react'\nimport { Alert, 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 { useOrganization } from '../hooks/use_organization'\nimport { ResourceObject } from '../types'\nimport { Clipboard } from '../utils'\n\ntype GetHelpScreenRouteProps = {\n type?: 'chat' | 'general'\n}\n\ntype GetHelpScreenProps = StaticScreenProps<GetHelpScreenRouteProps>\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 { data: 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 const contact = email || phone\n if (!contact) return null\n\n return (\n <PressableRow\n onPress={() => {\n if (email) {\n sendEmail(contact)\n } else {\n placePhoneCall(contact)\n }\n }}\n text={contact || ''}\n isActive={true}\n iconPath={email ? 'services.email' : 'general.phone'}\n />\n )\n}\n\nexport function sendEmail(email: string) {\n if (!email) return\n\n const url = encodeURI(`mailto:${email}`)\n\n Linking.openURL(url).catch(() => {\n Alert.alert('Oops', `Unable to open: ${email}`, [\n { text: 'Copy to clipboard', onPress: () => Clipboard.setStringAsync(email) },\n { text: 'OK' },\n ])\n })\n}\n\nexport function placePhoneCall(phoneNumber: string) {\n if (!phoneNumber) return\n\n const url = encodeURI(`tel:${phoneNumber}`)\n\n Linking.openURL(url).catch(() => {\n Alert.alert('Oops', `Unable to open: ${phoneNumber}`, [\n { text: 'Copy to clipboard', onPress: () => Clipboard.setStringAsync(phoneNumber) },\n { text: 'OK' },\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"],"mappings":";AAAA,SAA4BA,aAAa,QAAQ,0BAA0B;AAC3E,SAASC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAC5C,SAASC,KAAK,EAAEC,OAAO,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/D,SAASC,OAAO,EAAEC,YAAY,EAAEC,IAAI,EAAEC,gBAAgB,QAAQ,eAAe;AAC7E,SAASC,SAAS,EAAEC,QAAQ,QAAQ,UAAU;AAC9C,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAASC,eAAe,QAAQ,2BAA2B;AAE3D,SAASC,SAAS,QAAQ,UAAU;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAgBpC,MAAMC,WAAW,GAAGA,CAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAF,CAAA,QAAAG,MAAA,CAAAC,GAAA;IAC2CF,EAAA;MAAAG,GAAA,EACtD,YAAY;MAAAC,IAAA,EACX;QAAAC,MAAA,EACI;UAAAC,OAAA,EACG;QACX;MACF;IACF,CAAC;IAAAR,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EAPD;IAAAM,IAAA,EAAAG;EAAA,IAAgCnB,SAAS,CAAoBY,EAO5D,CAAC;EAAA,IAAAQ,EAAA;EAAA,IAAAV,CAAA,QAAAS,EAAA;IAPYC,EAAA,GAAAD,EAAa,KAAbE,SAAa,GAAb,EAAa,GAAbF,EAAa;IAAAT,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAb,MAAAY,QAAA,GAAAF,EAAa;EAAA,OASpBE,QAAQ;AAAA,CAChB;AAED,OAAO,MAAMC,aAAa,GAAGX,EAAA;EAAA,MAAAF,CAAA,GAAAC,EAAA;EAAC;IAAAa;EAAA,IAAAZ,EAA6B;EAAA,IAAAO,EAAA;EAAA,IAAAT,CAAA,QAAAc,KAAA,CAAAC,MAAA;IAC/BN,EAAA,GAAAK,KAAK,CAAAC,MAAa,IAAlB,CAAiB,CAAC;IAAAf,CAAA,MAAAc,KAAA,CAAAC,MAAA;IAAAf,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAA5C;IAAAgB,IAAA,EAAAN;EAAA,IAA0BD,EAAkB;EAApC,MAAAO,IAAA,GAAAN,EAAa,KAAbC,SAAa,GAAb,MAAa,GAAbD,EAAa;EACrB,MAAAO,MAAA,GAAeC,SAAS,CAAC,CAAC;EAC1B,MAAAC,OAAA,GAAgB3B,UAAU,CAAC,CAAC;EAC5B,MAAA4B,UAAA,GAAmBzC,aAAa,CAAC,CAAC;EAClC;IAAA2B,IAAA,EAAAe;EAAA,IAA+B5B,eAAe,CAAC,CAAC;EAChD,MAAA6B,cAAA,GAAuBD,YAAY,EAAAE,YAAkD,IAAhCF,YAAY,EAAAG,kBAAoB;EACrF,MAAAZ,QAAA,GAAiBb,WAAW,CAAC,CAAC;EAAA,IAAA0B,EAAA;EAAA,IAAAzB,CAAA,QAAAmB,OAAA,IAAAnB,CAAA,QAAAY,QAAA,IAAAZ,CAAA,QAAAgB,IAAA;IAAA,IAAAU,EAAA;IAAA,IAAA1B,CAAA,QAAAmB,OAAA;MAIhBO,EAAA,GAAAC,OAAA,IAAWA,OAAO,CAAAC,OAAQ,KAAKT,OAAO;MAAAnB,CAAA,MAAAmB,OAAA;MAAAnB,CAAA,MAAA0B,EAAA;IAAA;MAAAA,EAAA,GAAA1B,CAAA;IAAA;IAAA,IAAA6B,EAAA;IAAA,IAAA7B,CAAA,QAAAgB,IAAA;MACtCa,EAAA,GAAAC,SAAA,IAAWH,SAAO,CAAAX,IAAK,CAAAe,QAAS,CAACf,IAAI,CAAC;MAAAhB,CAAA,MAAAgB,IAAA;MAAAhB,CAAA,MAAA6B,EAAA;IAAA;MAAAA,EAAA,GAAA7B,CAAA;IAAA;IAFhDyB,EAAA,GAAAb,QAAQ,CAAAoB,MACC,CAACN,EAAsC,CAAC,CAAAM,MACxC,CAACH,EAAsC,CAAC;IAAA7B,CAAA,MAAAmB,OAAA;IAAAnB,CAAA,MAAAY,QAAA;IAAAZ,CAAA,MAAAgB,IAAA;IAAAhB,CAAA,MAAAyB,EAAA;EAAA;IAAAA,EAAA,GAAAzB,CAAA;EAAA;EAJrD,MAAAiC,mBAAA,GAEIR,EAEiD;EAEpD,IAAAC,EAAA;EAAA,IAAA1B,CAAA,SAAAoB,UAAA;IAE6CM,EAAA,GAAAA,CAAA;MAC5CN,UAAU,CAAAc,QAAS,CAAC,WAAW,CAAC;IAAA,CACjC;IAAAlC,CAAA,OAAAoB,UAAA;IAAApB,CAAA,OAAA0B,EAAA;EAAA;IAAAA,EAAA,GAAA1B,CAAA;EAAA;EAFD,MAAAmC,yBAAA,GAAkCT,EAElB;EAAA,IAAAG,EAAA;EAAA,IAAA7B,CAAA,SAAAiB,MAAA,CAAAmB,SAAA;IAGDP,EAAA,IAACZ,MAAM,CAAAmB,SAAU,CAAC;IAAApC,CAAA,OAAAiB,MAAA,CAAAmB,SAAA;IAAApC,CAAA,OAAA6B,EAAA;EAAA;IAAAA,EAAA,GAAA7B,CAAA;EAAA;EAAA,IAAAqC,EAAA;EAAA,IAAArC,CAAA,SAAAiC,mBAAA,CAAAK,MAAA,IAAAtC,CAAA,SAAAiB,MAAA,CAAAsB,OAAA,IAAAvC,CAAA,SAAAiB,MAAA,CAAAuB,mBAAA;IAC5BH,EAAA,GAAAJ,mBAAmB,CAAAK,MAAO,GAAG,CAI7B,iBAJA1C,IAAA,CACEV,OAAO;MAASuD,OAAI,EAAJ,IAAI;MAAQC,KAA4C,EAA5C,CAACzB,MAAM,CAAAsB,OAAQ,EAAEtB,MAAM,CAAAuB,mBAAoB,CAAC;MAAAG,QAAA,EAAE;IAE3E,CACF,CAAC;IAAA3C,CAAA,OAAAiC,mBAAA,CAAAK,MAAA;IAAAtC,CAAA,OAAAiB,MAAA,CAAAsB,OAAA;IAAAvC,CAAA,OAAAiB,MAAA,CAAAuB,mBAAA;IAAAxC,CAAA,OAAAqC,EAAA;EAAA;IAAAA,EAAA,GAAArC,CAAA;EAAA;EAAA,IAAA4C,EAAA;EAAA,IAAA5C,CAAA,SAAAiC,mBAAA;IACAW,EAAA,GAAAX,mBAAmB,CAAAY,GAAI,CAACC,KAQxB,CAAC;IAAA9C,CAAA,OAAAiC,mBAAA;IAAAjC,CAAA,OAAA4C,EAAA;EAAA;IAAAA,EAAA,GAAA5C,CAAA;EAAA;EAAA,IAAA+C,EAAA;EAAA,IAAA/C,CAAA,SAAAsB,cAAA,IAAAtB,CAAA,SAAAqB,YAAA,EAAA2B,IAAA,IAAAhD,CAAA,SAAAiB,MAAA,CAAAsB,OAAA,IAAAvC,CAAA,SAAAiB,MAAA,CAAAuB,mBAAA;IACDO,EAAA,GAAAzB,cAIA,iBAJAxB,KAAA,CACEZ,OAAO;MAASuD,OAAI,EAAJ,IAAI;MAAQC,KAA4C,EAA5C,CAACzB,MAAM,CAAAsB,OAAQ,EAAEtB,MAAM,CAAAuB,mBAAoB,CAAC;MAAAG,QAAA,GAAE,UACjE,EAACtB,YAAY,EAAA2B,IAAM;IAAA,CAE/B,CAAC;IAAAhD,CAAA,OAAAsB,cAAA;IAAAtB,CAAA,OAAAqB,YAAA,EAAA2B,IAAA;IAAAhD,CAAA,OAAAiB,MAAA,CAAAsB,OAAA;IAAAvC,CAAA,OAAAiB,MAAA,CAAAuB,mBAAA;IAAAxC,CAAA,OAAA+C,EAAA;EAAA;IAAAA,EAAA,GAAA/C,CAAA;EAAA;EACkB,MAAAiD,EAAA,GAAA5B,YAAY,EAAAE,YAAc;EAAA,IAAA2B,GAAA;EAAA,IAAAlD,CAAA,SAAAiD,EAAA;IAA7CC,GAAA,gBAAAtD,IAAA,CAACuD,UAAU;MAAQC,KAA0B,EAA1BH;IAA0B,CAAG,CAAC;IAAAjD,CAAA,OAAAiD,EAAA;IAAAjD,CAAA,OAAAkD,GAAA;EAAA;IAAAA,GAAA,GAAAlD,CAAA;EAAA;EAC9B,MAAAqD,GAAA,GAAAhC,YAAY,EAAAG,kBAAoB;EAAA,IAAA8B,GAAA;EAAA,IAAAtD,CAAA,SAAAqD,GAAA;IAAnDC,GAAA,gBAAA1D,IAAA,CAACuD,UAAU;MAAQI,KAAgC,EAAhCF;IAAgC,CAAG,CAAC;IAAArD,CAAA,OAAAqD,GAAA;IAAArD,CAAA,OAAAsD,GAAA;EAAA;IAAAA,GAAA,GAAAtD,CAAA;EAAA;EAAA,IAAAwD,GAAA;EAAA,IAAAxD,CAAA,SAAAiB,MAAA,CAAAsB,OAAA;IACvDiB,GAAA,gBAAA5D,IAAA,CAACV,OAAO;MAASuD,OAAI,EAAJ,IAAI;MAAQC,KAAgB,EAAhB,CAACzB,MAAM,CAAAsB,OAAQ,CAAC;MAAAI,QAAA,EAAE;IAE/C,CAAS,CAAC;IAAA3C,CAAA,OAAAiB,MAAA,CAAAsB,OAAA;IAAAvC,CAAA,OAAAwD,GAAA;EAAA;IAAAA,GAAA,GAAAxD,CAAA;EAAA;EAAA,IAAAyD,GAAA;EAAA,IAAAzD,CAAA,SAAAmC,yBAAA;IAERsB,GAAA,gBAAA3D,KAAA,CAACV,IAAI;MAAAuD,QAAA,GAAC,kBACY,EAAC,GAAG,eACpB/C,IAAA,CAACP,gBAAgB;QAAU8C,OAAyB,EAAzBA,yBAAyB;QAAAQ,QAAA,EAAE;MAEtD,CAAkB,CAAC,EAAC,GAAG,EAAC,0BAE1B;IAAA,CAAM,CAAC;IAAA3C,CAAA,OAAAmC,yBAAA;IAAAnC,CAAA,OAAAyD,GAAA;EAAA;IAAAA,GAAA,GAAAzD,CAAA;EAAA;EAAA,IAAA0D,GAAA;EAAA,IAAA1D,CAAA,SAAAiB,MAAA,CAAA0C,IAAA,IAAA3D,CAAA,SAAAyD,GAAA;IAPTC,GAAA,gBAAA9D,IAAA,CAACX,IAAI;MAAQyD,KAAW,EAAXzB,MAAM,CAAA0C,IAAK;MAAAhB,QAAA,EACtBc;IAMO,CACH,CAAC;IAAAzD,CAAA,OAAAiB,MAAA,CAAA0C,IAAA;IAAA3D,CAAA,OAAAyD,GAAA;IAAAzD,CAAA,OAAA0D,GAAA;EAAA;IAAAA,GAAA,GAAA1D,CAAA;EAAA;EAAA,IAAA4D,GAAA;EAAA,IAAA5D,CAAA,SAAAkD,GAAA,IAAAlD,CAAA,SAAAsD,GAAA,IAAAtD,CAAA,SAAAwD,GAAA,IAAAxD,CAAA,SAAA0D,GAAA,IAAA1D,CAAA,SAAA6B,EAAA,IAAA7B,CAAA,SAAAqC,EAAA,IAAArC,CAAA,SAAA4C,EAAA,IAAA5C,CAAA,SAAA+C,EAAA;IAjCTa,GAAA,gBAAA9D,KAAA,CAACb,IAAI;MAAQyD,KAAkB,EAAlBb,EAAkB;MAAAc,QAAA,GAC5BN,EAIA,EACAO,EAQC,EACDG,EAIA,EACDG,GAAiD,EACjDI,GAAuD,EACvDE,GAEU,EACVE,GAQO;IAAA,CACH,CAAC;IAAA1D,CAAA,OAAAkD,GAAA;IAAAlD,CAAA,OAAAsD,GAAA;IAAAtD,CAAA,OAAAwD,GAAA;IAAAxD,CAAA,OAAA0D,GAAA;IAAA1D,CAAA,OAAA6B,EAAA;IAAA7B,CAAA,OAAAqC,EAAA;IAAArC,CAAA,OAAA4C,EAAA;IAAA5C,CAAA,OAAA+C,EAAA;IAAA/C,CAAA,OAAA4D,GAAA;EAAA;IAAAA,GAAA,GAAA5D,CAAA;EAAA;EAAA,OAlCP4D,GAkCO;AAAA,CAEV;AAED,MAAMT,UAAU,GAAGjD,EAAA;EAAA,MAAAF,CAAA,GAAAC,EAAA;EAAC;IAAAmD,KAAA;IAAAG;EAAA,IAAArD,EAAoD;EACtE,MAAA2D,OAAA,GAAgBT,KAAc,IAAdG,KAAc;EAC9B,IAAI,CAACM,OAAO;IAAA,OAAS,IAAI;EAAA;EAAA,IAAApD,EAAA;EAAA,IAAAT,CAAA,QAAA6D,OAAA,IAAA7D,CAAA,QAAAoD,KAAA;IAIZ3C,EAAA,GAAAA,CAAA;MACP,IAAI2C,KAAK;QACPU,SAAS,CAACD,OAAO,CAAC;MAAA;QAElBE,cAAc,CAACF,OAAO,CAAC;MAAA;IACxB,CACF;IAAA7D,CAAA,MAAA6D,OAAA;IAAA7D,CAAA,MAAAoD,KAAA;IAAApD,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EACK,MAAAU,EAAA,GAAAmD,OAAa,IAAb,EAAa;EAET,MAAApC,EAAA,GAAA2B,KAAK,GAAL,gBAA0C,GAA1C,eAA0C;EAAA,IAAA1B,EAAA;EAAA,IAAA1B,CAAA,QAAAS,EAAA,IAAAT,CAAA,QAAAU,EAAA,IAAAV,CAAA,QAAAyB,EAAA;IAVtDC,EAAA,gBAAA9B,IAAA,CAACT,YAAY;MACF6E,OAMR,EANQvD,EAMR;MACKkD,IAAa,EAAbjD,EAAa;MACTuD,QAAI,EAAJ,IAAI;MACJC,QAA0C,EAA1CzC;IAA0C,CACrD,CAAC;IAAAzB,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAU,EAAA;IAAAV,CAAA,MAAAyB,EAAA;IAAAzB,CAAA,MAAA0B,EAAA;EAAA;IAAAA,EAAA,GAAA1B,CAAA;EAAA;EAAA,OAXF0B,EAWE;AAAA,CAEL;AAED,OAAO,SAASoC,SAASA,CAACV,KAAa,EAAE;EACvC,IAAI,CAACA,KAAK,EAAE;EAEZ,MAAM/C,GAAG,GAAG8D,SAAS,CAAC,UAAUf,KAAK,EAAE,CAAC;EAExCrE,OAAO,CAACqF,OAAO,CAAC/D,GAAG,CAAC,CAACgE,KAAK,CAAC,MAAM;IAC/BvF,KAAK,CAACwF,KAAK,CAAC,MAAM,EAAE,mBAAmBlB,KAAK,EAAE,EAAE,CAC9C;MAAEO,IAAI,EAAE,mBAAmB;MAAEK,OAAO,EAAEA,CAAA,KAAMtE,SAAS,CAAC6E,cAAc,CAACnB,KAAK;IAAE,CAAC,EAC7E;MAAEO,IAAI,EAAE;IAAK,CAAC,CACf,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,OAAO,SAASI,cAAcA,CAACS,WAAmB,EAAE;EAClD,IAAI,CAACA,WAAW,EAAE;EAElB,MAAMnE,GAAG,GAAG8D,SAAS,CAAC,OAAOK,WAAW,EAAE,CAAC;EAE3CzF,OAAO,CAACqF,OAAO,CAAC/D,GAAG,CAAC,CAACgE,KAAK,CAAC,MAAM;IAC/BvF,KAAK,CAACwF,KAAK,CAAC,MAAM,EAAE,mBAAmBE,WAAW,EAAE,EAAE,CACpD;MAAEb,IAAI,EAAE,mBAAmB;MAAEK,OAAO,EAAEA,CAAA,KAAMtE,SAAS,CAAC6E,cAAc,CAACC,WAAW;IAAE,CAAC,EACnF;MAAEb,IAAI,EAAE;IAAK,CAAC,CACf,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,MAAMzC,SAAS,GAAGA,CAAA;EAAA,MAAAlB,CAAA,GAAAC,EAAA;EAChB;IAAAwE;EAAA,IAAmBlF,QAAQ,CAAC,CAAC;EAAA,IAAAW,EAAA;EAAA,IAAAF,CAAA,QAAAyE,MAAA,CAAAC,sBAAA;IAEtBxE,EAAA,GAAAlB,UAAU,CAAA2F,MAAO,CAAC;MAAAvC,SAAA,EACZ;QAAAwC,IAAA,EACH;MACR,CAAC;MAAAjB,IAAA,EACK;QAAAkB,eAAA,EACa,CAAC;QAAAC,iBAAA,EACC;MACrB,CAAC;MAAAvC,OAAA,EACQ;QAAAwC,UAAA,EACK,EAAE;QAAAC,UAAA,EACF,EAAE;QAAAC,aAAA,EACC;MACjB,CAAC;MAAAzC,mBAAA,EACoB;QAAAuC,UAAA,EACP,EAAE;QAAAG,WAAA,EACD,CAAC;QAAAC,iBAAA,EACK,CAAC;QAAAC,iBAAA,EACDX,MAAM,CAAAC;MAC3B,CAAC;MAAAW,UAAA,EACW;QAAAL,UAAA,EACE,EAAE;QAAAF,iBAAA,EACK;MACrB;IACF,CAAC,CAAC;IAAA9E,CAAA,MAAAyE,MAAA,CAAAC,sBAAA;IAAA1E,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EAAA,OAvBKE,EAuBL;AAAA,CACH;AApI4B,SAAA4C,MAAAwC,SAAA;EAAA,oBA4BrB1F,IAAA,CAACT,YAAY;IAEF6E,OAAmC,EAAnCA,CAAA,KAAMjF,OAAO,CAAAqF,OAAQ,CAACzC,SAAO,CAAA4D,IAAK,CAAC;IACtC5B,IAAa,EAAbhC,SAAO,CAAA6D,KAAM;IACTvB,QAAI,EAAJ,IAAI;IACLC,QAAmB,EAAnB;EAAmB,GAJvBvC,SAAO,CAAA8D,EAKb,CAAC;AAAA","ignoreList":[]}
@@ -65,7 +65,7 @@ export const TeamConversationScreen = t0 => {
65
65
  }
66
66
  navigation.dispatch(StackActions.replace("Conversation", {
67
67
  conversation_id: conversation.id,
68
- title: conversation.title
68
+ title: conversation.title ?? undefined
69
69
  }));
70
70
  return () => {
71
71
  queryClient.removeQueries({
@@ -1 +1 @@
1
- {"version":3,"file":"team_conversation_screen.js","names":["StackActions","useNavigation","useQuery","useQueryClient","useEffect","DefaultLoading","BlankState","useApiClient","findOrCreateServicesConversation","ResponseError","jsx","_jsx","jsxs","_jsxs","TeamConversationScreen","t0","$","_c","route","apiClient","queryClient","navigation","t1","params","plan_id","team_ids","t2","teamIds","planId","then","_temp","t3","queryKey","queryFn","retry","_temp2","data","conversation","isError","error","t4","id","dispatch","replace","conversation_id","title","removeQueries","t5","t6","t7","t8","goBack","TeamConversationError","onGoBack","Symbol","for","errors","map","_temp3","filter","Boolean","join","detail","Imagery","name","Heading","children","Content","Text","Button","size","accessibilityRole","Root","e","r","failureCount","err"],"sources":["../../src/screens/team_conversation_screen.tsx"],"sourcesContent":["import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport { useQuery, useQueryClient } from '@tanstack/react-query'\nimport { useEffect } from 'react'\nimport { DefaultLoading } from '../components/page/loading'\nimport BlankState from '../components/primitive/blank_state_primitive'\nimport { useApiClient } from '../hooks'\nimport { findOrCreateServicesConversation } from '../hooks/services/use_find_or_create_services_conversation'\nimport { ResponseError } from '../utils/response_error'\n\nexport type TeamConversationRouteProps = {\n plan_id?: number\n team_ids?: number[]\n}\n\nexport type TeamConversationScreenProps = StaticScreenProps<TeamConversationRouteProps>\n\nexport const TeamConversationScreen = ({ route }: TeamConversationScreenProps) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const navigation = useNavigation()\n const {\n data: conversation,\n isError,\n error,\n } = useQuery({\n queryKey: ['team-conversation', route.params.team_ids, route.params.plan_id],\n queryFn: () =>\n findOrCreateServicesConversation({\n apiClient,\n teamIds: route.params.team_ids ?? [],\n planId: route.params.plan_id,\n }).then(r => r.conversation),\n retry: (failureCount, err) => !(err instanceof ResponseError) && failureCount < 3,\n })\n\n useEffect(() => {\n if (!conversation?.id) return\n\n navigation.dispatch(\n StackActions.replace('Conversation', {\n conversation_id: conversation.id,\n title: conversation.title,\n })\n )\n\n return () => {\n queryClient.removeQueries({ queryKey: ['team-conversation'] })\n }\n }, [conversation?.id, conversation?.title, navigation, queryClient])\n\n if (isError) return <TeamConversationError error={error} onGoBack={navigation.goBack} />\n\n return <DefaultLoading />\n}\n\nfunction TeamConversationError({ error, onGoBack }: { error: Error; onGoBack: () => void }) {\n const detail =\n error instanceof ResponseError\n ? error.errors\n .map(e => e.detail)\n .filter(Boolean)\n .join('\\n')\n : ''\n\n return (\n <BlankState.Root>\n <BlankState.Imagery name=\"people.noTextMessage\" />\n <BlankState.Content>\n <BlankState.Heading>Can't start this conversation</BlankState.Heading>\n <BlankState.Text>\n {detail || 'Something went wrong while starting this conversation.'}\n </BlankState.Text>\n </BlankState.Content>\n <BlankState.Button title=\"Go back\" onPress={onGoBack} size=\"md\" accessibilityRole=\"link\" />\n </BlankState.Root>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"team_conversation_screen.js","names":["StackActions","useNavigation","useQuery","useQueryClient","useEffect","DefaultLoading","BlankState","useApiClient","findOrCreateServicesConversation","ResponseError","jsx","_jsx","jsxs","_jsxs","TeamConversationScreen","t0","$","_c","route","apiClient","queryClient","navigation","t1","params","plan_id","team_ids","t2","teamIds","planId","then","_temp","t3","queryKey","queryFn","retry","_temp2","data","conversation","isError","error","t4","id","dispatch","replace","conversation_id","title","undefined","removeQueries","t5","t6","t7","t8","goBack","TeamConversationError","onGoBack","Symbol","for","errors","map","_temp3","filter","Boolean","join","detail","Imagery","name","Heading","children","Content","Text","Button","size","accessibilityRole","Root","e","r","failureCount","err"],"sources":["../../src/screens/team_conversation_screen.tsx"],"sourcesContent":["import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport { useQuery, useQueryClient } from '@tanstack/react-query'\nimport { useEffect } from 'react'\nimport { DefaultLoading } from '../components/page/loading'\nimport BlankState from '../components/primitive/blank_state_primitive'\nimport { useApiClient } from '../hooks'\nimport { findOrCreateServicesConversation } from '../hooks/services/use_find_or_create_services_conversation'\nimport { ResponseError } from '../utils/response_error'\n\nexport type TeamConversationRouteProps = {\n plan_id?: number\n team_ids?: number[]\n}\n\nexport type TeamConversationScreenProps = StaticScreenProps<TeamConversationRouteProps>\n\nexport const TeamConversationScreen = ({ route }: TeamConversationScreenProps) => {\n const apiClient = useApiClient()\n const queryClient = useQueryClient()\n const navigation = useNavigation()\n const {\n data: conversation,\n isError,\n error,\n } = useQuery({\n queryKey: ['team-conversation', route.params.team_ids, route.params.plan_id],\n queryFn: () =>\n findOrCreateServicesConversation({\n apiClient,\n teamIds: route.params.team_ids ?? [],\n planId: route.params.plan_id,\n }).then(r => r.conversation),\n retry: (failureCount, err) => !(err instanceof ResponseError) && failureCount < 3,\n })\n\n useEffect(() => {\n if (!conversation?.id) return\n\n navigation.dispatch(\n StackActions.replace('Conversation', {\n conversation_id: conversation.id,\n title: conversation.title ?? undefined,\n })\n )\n\n return () => {\n queryClient.removeQueries({ queryKey: ['team-conversation'] })\n }\n }, [conversation?.id, conversation?.title, navigation, queryClient])\n\n if (isError) return <TeamConversationError error={error} onGoBack={navigation.goBack} />\n\n return <DefaultLoading />\n}\n\nfunction TeamConversationError({ error, onGoBack }: { error: Error; onGoBack: () => void }) {\n const detail =\n error instanceof ResponseError\n ? error.errors\n .map(e => e.detail)\n .filter(Boolean)\n .join('\\n')\n : ''\n\n return (\n <BlankState.Root>\n <BlankState.Imagery name=\"people.noTextMessage\" />\n <BlankState.Content>\n <BlankState.Heading>Can't start this conversation</BlankState.Heading>\n <BlankState.Text>\n {detail || 'Something went wrong while starting this conversation.'}\n </BlankState.Text>\n </BlankState.Content>\n <BlankState.Button title=\"Go back\" onPress={onGoBack} size=\"md\" accessibilityRole=\"link\" />\n </BlankState.Root>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -39,7 +39,7 @@ export interface ConversationResource {
39
39
  memberAbility?: MemberAbilityResource;
40
40
  muted: boolean;
41
41
  repliesDisabled: boolean;
42
- title: string;
42
+ title: string | null;
43
43
  unreadCount: number;
44
44
  unreadReaction: boolean;
45
45
  updatedAt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/types/resources/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACpC,iBAAiB,CAAC,EAAE,yBAAyB,CAAA;IAC7C,sBAAsB,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAChE,mBAAmB,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACnD,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;IACpD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,aAAa,CAAC,EAAE,qBAAqB,CAAA;IACrC,KAAK,EAAE,OAAO,CAAA;IACd,eAAe,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,oBAAoB,EAClB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,sBAAsB,GACtB,mBAAmB,CACtB,CAAA"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/types/resources/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAA;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,cAAc,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACpC,iBAAiB,CAAC,EAAE,yBAAyB,CAAA;IAC7C,sBAAsB,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAChE,mBAAmB,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACnD,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;IACpD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,aAAa,CAAC,EAAE,qBAAqB,CAAA;IACrC,KAAK,EAAE,OAAO,CAAA;IACd,eAAe,EAAE,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,oBAAoB,EAClB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,sBAAsB,GACtB,mBAAmB,CACtB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.js","names":[],"sources":["../../../src/types/resources/conversation.ts"],"sourcesContent":["import type { AnalyticsMetadataResource } from './analytics_metadata'\nimport { ConversationBadgeResource } from './conversation_badge'\nimport { ConversationMembershipResource } from './conversation_membership'\nimport { GroupResource } from './group_resource'\nimport { MemberAbilityResource } from './member_ability'\nimport { ReactionCountResource } from './reaction'\n\nexport interface ConversationPreviewData {\n kind: 'reaction' | 'message' | 'system'\n authorName: string\n value: ReactionCountResource['value'] | null\n text: string\n createdAt: string\n}\n\nexport interface ConversationResource {\n type: 'Conversation'\n id: number\n badges?: ConversationBadgeResource[]\n analyticsMetadata?: AnalyticsMetadataResource\n conversationMembership?: Partial<ConversationMembershipResource>\n conversationPreview: ConversationPreviewData | null\n createdAt: string\n deleted?: boolean\n directMessage?: boolean\n disabled?: boolean\n disabledReason?: string | null\n disabledMessage?: string | null\n genderOption?: string | null\n groups?: GroupResource[]\n previewAvatarUrls?: string[]\n customAvatarType?: 'image' | 'icon' | 'emoji' | null\n customAvatarKey?: string | null\n customAvatarColor?: string | null\n customAvatarImageUrl?: string | null\n lastMessageAuthorId?: string\n lastMessageAuthorName?: string\n lastMessageCreatedAt?: string\n lastMessageTextPreview?: string\n latestReadMessageSortKey?: string\n memberAbility?: MemberAbilityResource\n muted: boolean\n repliesDisabled: boolean\n title: string\n unreadCount: number\n unreadReaction: boolean\n updatedAt: string\n}\n\nexport type ConversationAvatarData = Pick<\n ConversationResource,\n | 'customAvatarType'\n | 'customAvatarKey'\n | 'customAvatarColor'\n | 'customAvatarImageUrl'\n | 'previewAvatarUrls'\n>\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"conversation.js","names":[],"sources":["../../../src/types/resources/conversation.ts"],"sourcesContent":["import type { AnalyticsMetadataResource } from './analytics_metadata'\nimport { ConversationBadgeResource } from './conversation_badge'\nimport { ConversationMembershipResource } from './conversation_membership'\nimport { GroupResource } from './group_resource'\nimport { MemberAbilityResource } from './member_ability'\nimport { ReactionCountResource } from './reaction'\n\nexport interface ConversationPreviewData {\n kind: 'reaction' | 'message' | 'system'\n authorName: string\n value: ReactionCountResource['value'] | null\n text: string\n createdAt: string\n}\n\nexport interface ConversationResource {\n type: 'Conversation'\n id: number\n badges?: ConversationBadgeResource[]\n analyticsMetadata?: AnalyticsMetadataResource\n conversationMembership?: Partial<ConversationMembershipResource>\n conversationPreview: ConversationPreviewData | null\n createdAt: string\n deleted?: boolean\n directMessage?: boolean\n disabled?: boolean\n disabledReason?: string | null\n disabledMessage?: string | null\n genderOption?: string | null\n groups?: GroupResource[]\n previewAvatarUrls?: string[]\n customAvatarType?: 'image' | 'icon' | 'emoji' | null\n customAvatarKey?: string | null\n customAvatarColor?: string | null\n customAvatarImageUrl?: string | null\n lastMessageAuthorId?: string\n lastMessageAuthorName?: string\n lastMessageCreatedAt?: string\n lastMessageTextPreview?: string\n latestReadMessageSortKey?: string\n memberAbility?: MemberAbilityResource\n muted: boolean\n repliesDisabled: boolean\n title: string | null\n unreadCount: number\n unreadReaction: boolean\n updatedAt: string\n}\n\nexport type ConversationAvatarData = Pick<\n ConversationResource,\n | 'customAvatarType'\n | 'customAvatarKey'\n | 'customAvatarColor'\n | 'customAvatarImageUrl'\n | 'previewAvatarUrls'\n>\n"],"mappings":"","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planningcenter/chat-react-native",
3
- "version": "4.4.1-qa-staging.21",
3
+ "version": "4.4.1-qa-staging.23",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,7 +33,7 @@
33
33
  "dependencies": {
34
34
  "@fortawesome/fontawesome-svg-core": "^7.2.0",
35
35
  "@fortawesome/react-native-fontawesome": "^0.3.2",
36
- "@planningcenter/emoji-keyboard": "4.4.1-qa-staging.21",
36
+ "@planningcenter/emoji-keyboard": "4.4.1-qa-staging.23",
37
37
  "lodash-inflection": "^1.5.0"
38
38
  },
39
39
  "peerDependencies": {
@@ -84,5 +84,5 @@
84
84
  "sf-symbols-typescript": "^2.2.0",
85
85
  "typescript": "~6.0.3"
86
86
  },
87
- "gitHead": "be6bdeeded76a0c3fa4423a1d93e3953223cc00b"
87
+ "gitHead": "7690a22c96476e5d0a777d2dea1c10e53597077b"
88
88
  }
@@ -1,9 +1,9 @@
1
1
  import { PlatformPressable } from '@react-navigation/elements'
2
2
  import React from 'react'
3
- import { Text, StyleSheet } from 'react-native'
3
+ import { Text, StyleSheet, Linking } from 'react-native'
4
4
  import { useTheme } from '../../../hooks'
5
5
  import { DenormalizedGiphyAttachmentResource } from '../../../types/resources/denormalized_attachment_resource'
6
- import { assertKeysAreNumbers, Linking } from '../../../utils'
6
+ import { assertKeysAreNumbers } from '../../../utils'
7
7
  import { tokens } from '../../../vendor/tapestry/tokens'
8
8
  import { Image } from '../../display'
9
9
 
@@ -22,6 +22,7 @@ export function GiphyAttachment({
22
22
 
23
23
  function handlePress() {
24
24
  if (titleLink) {
25
+ // Open Giphy link in the default web browser
25
26
  Linking.openURL(titleLink)
26
27
  }
27
28
  }
@@ -1,6 +1,7 @@
1
1
  import { useNavigation, useTheme as useNavigationTheme, useRoute } from '@react-navigation/native'
2
2
  import React, { useCallback, useContext, useEffect, useRef, useState } from 'react'
3
3
  import {
4
+ Linking,
4
5
  Platform,
5
6
  Pressable,
6
7
  ScrollView,
@@ -33,7 +34,6 @@ import {
33
34
  FileAttachment,
34
35
  } from '../../types/resources/denormalized_attachment_resource_for_create'
35
36
  import {
36
- Linking,
37
37
  Log,
38
38
  MAX_FONT_SIZE_MULTIPLIER_LANDMARK,
39
39
  platformFontWeightMedium,
@@ -95,7 +95,7 @@ export const Conversations = ({ ListHeaderComponent }: ConversationsProps) => {
95
95
  onPress={() =>
96
96
  navigation.navigate('Conversation', {
97
97
  conversation_id: item.resource.id,
98
- title: item.resource.title,
98
+ title: item.resource.title ?? undefined,
99
99
  badge: item.resource.badges?.[0],
100
100
  deleted: item.resource.deleted,
101
101
  muted: item.resource.muted,
@@ -154,6 +154,14 @@ describe('ConversationDetailsScreen', () => {
154
154
 
155
155
  expect(mockSaveTitle).toHaveBeenCalledWith({ title: 'Youth Group' })
156
156
  })
157
+
158
+ it('renders a conversation with no title and asks for one', () => {
159
+ mockConversation = { ...baseConversation, title: null }
160
+ const { getByText, getByDisplayValue } = renderScreen()
161
+
162
+ expect(getByDisplayValue('')).toBeTruthy()
163
+ expect(getByText('A title is required for your conversation.')).toBeTruthy()
164
+ })
157
165
  })
158
166
 
159
167
  describe('for an archived conversation', () => {
@@ -1,10 +1,9 @@
1
1
  import { useRoute, RouteProp } from '@react-navigation/native'
2
2
  import React from 'react'
3
- import { Linking as RNLinking, StyleSheet, View, ScrollView } from 'react-native'
3
+ import { Linking, StyleSheet, View, ScrollView } from 'react-native'
4
4
  import { Heading } from '../../components'
5
5
  import { Icon, Text, TextInlineButton } from '../../components/display'
6
6
  import { useTheme } from '../../hooks'
7
- import { Linking } from '../../utils'
8
7
  import type { AgeCheckParams } from './screen_props'
9
8
 
10
9
  export interface AgeCheckUnderageScreenProps {
@@ -19,7 +18,7 @@ export function AgeCheckUnderageScreen({ contactEmail }: AgeCheckUnderageScreenP
19
18
 
20
19
  const openChurchAdminHelp = () => {
21
20
  if (!email) return
22
- RNLinking.openURL(`mailto:${email}`)
21
+ Linking.openURL(`mailto:${email}`)
23
22
  }
24
23
 
25
24
  const openTerms = () => {
@@ -5,7 +5,15 @@ import type {
5
5
  } from '@react-navigation/native-stack'
6
6
  import { startsWith } from 'lodash'
7
7
  import React, { useCallback, useState } from 'react'
8
- import { View, StyleSheet, TextInput, ScrollView, TouchableOpacity, Platform } from 'react-native'
8
+ import {
9
+ View,
10
+ StyleSheet,
11
+ TextInput,
12
+ Linking,
13
+ ScrollView,
14
+ TouchableOpacity,
15
+ Platform,
16
+ } from 'react-native'
9
17
  import { useSafeAreaInsets } from 'react-native-safe-area-context'
10
18
  import {
11
19
  Button,
@@ -30,7 +38,7 @@ import { useTheme } from '../hooks'
30
38
  import { useAppName } from '../hooks/use_app_name'
31
39
  import { useReportBugAction } from '../hooks/use_report_bug_action'
32
40
  import { useUploadClient } from '../hooks/use_upload_client'
33
- import { ImagePicker, ImagePickerResult, Linking, platformFontWeightBold } from '../utils'
41
+ import { ImagePicker, ImagePickerResult, platformFontWeightBold } from '../utils'
34
42
 
35
43
  const MAX_DESCRIPTION_LENGTH = 2000
36
44
 
@@ -104,7 +104,7 @@ export function ConversationDetailsScreen({ route }: ConversationDetailsScreenPr
104
104
  const styles = useStyles()
105
105
 
106
106
  const { data: conversation } = useConversation(route.params)
107
- const [title, setTitle] = useState(conversation.title)
107
+ const [title, setTitle] = useState(conversation.title ?? '')
108
108
  const { conversation_id } = route.params
109
109
  const { repliesDisabled, setRepliesDisabled } = useConversationDisableReplies(route.params)
110
110
  const { mutate: saveTitle } = useConversationUpdate(route.params)
@@ -121,7 +121,7 @@ export function ConversationDetailsScreen({ route }: ConversationDetailsScreenPr
121
121
  const { muted, setMuted } = useConversationMute({ conversation_id })
122
122
 
123
123
  const trimmedTitle = title.trim()
124
- const emptyTitle = trimmedTitle === '' || title === null
124
+ const emptyTitle = trimmedTitle === ''
125
125
 
126
126
  const notificationLevelDescription =
127
127
  conversation?.conversationMembership?.notificationLevelDescription
@@ -159,7 +159,7 @@ function ConversationScreenContent({ route }: ConversationScreenProps) {
159
159
  })
160
160
  } else {
161
161
  navigation.setParams({
162
- title: title,
162
+ title: title ?? undefined,
163
163
  badge: badges?.[0],
164
164
  deleted: conversation?.deleted,
165
165
  muted,
@@ -1,12 +1,12 @@
1
1
  import { StaticScreenProps, useNavigation } from '@react-navigation/native'
2
2
  import { useCallback, useMemo } from 'react'
3
- import { Alert, Linking as RNLinking, StyleSheet, View } from 'react-native'
3
+ import { Alert, Linking, StyleSheet, View } from 'react-native'
4
4
  import { Heading, PressableRow, Text, TextInlineButton } from '../components'
5
5
  import { useApiGet, useTheme } from '../hooks'
6
6
  import { useAppName } from '../hooks/use_app_name'
7
7
  import { useOrganization } from '../hooks/use_organization'
8
8
  import { ResourceObject } from '../types'
9
- import { Clipboard, Linking } from '../utils'
9
+ import { Clipboard } from '../utils'
10
10
 
11
11
  type GetHelpScreenRouteProps = {
12
12
  type?: 'chat' | 'general'
@@ -119,7 +119,7 @@ export function sendEmail(email: string) {
119
119
 
120
120
  const url = encodeURI(`mailto:${email}`)
121
121
 
122
- RNLinking.openURL(url).catch(() => {
122
+ Linking.openURL(url).catch(() => {
123
123
  Alert.alert('Oops', `Unable to open: ${email}`, [
124
124
  { text: 'Copy to clipboard', onPress: () => Clipboard.setStringAsync(email) },
125
125
  { text: 'OK' },
@@ -132,7 +132,7 @@ export function placePhoneCall(phoneNumber: string) {
132
132
 
133
133
  const url = encodeURI(`tel:${phoneNumber}`)
134
134
 
135
- RNLinking.openURL(url).catch(() => {
135
+ Linking.openURL(url).catch(() => {
136
136
  Alert.alert('Oops', `Unable to open: ${phoneNumber}`, [
137
137
  { text: 'Copy to clipboard', onPress: () => Clipboard.setStringAsync(phoneNumber) },
138
138
  { text: 'OK' },
@@ -39,7 +39,7 @@ export const TeamConversationScreen = ({ route }: TeamConversationScreenProps) =
39
39
  navigation.dispatch(
40
40
  StackActions.replace('Conversation', {
41
41
  conversation_id: conversation.id,
42
- title: conversation.title,
42
+ title: conversation.title ?? undefined,
43
43
  })
44
44
  )
45
45
 
@@ -41,7 +41,7 @@ export interface ConversationResource {
41
41
  memberAbility?: MemberAbilityResource
42
42
  muted: boolean
43
43
  repliesDisabled: boolean
44
- title: string
44
+ title: string | null
45
45
  unreadCount: number
46
46
  unreadReaction: boolean
47
47
  updatedAt: string
@@ -1,76 +0,0 @@
1
- import { DefaultTheme, ThemeProvider } from '@react-navigation/native'
2
- import { fireEvent, render } from '@testing-library/react-native'
3
- import React from 'react'
4
- import { Linking as RNLinking } from 'react-native'
5
- import { GiphyAttachment } from '../../../../components/conversation/attachments/giphy_attachment'
6
- import {
7
- DenormalizedGiphyAttachmentResource,
8
- GiphyAttachmentVariant,
9
- } from '../../../../types/resources/denormalized_attachment_resource'
10
- import {
11
- AudioAdapter,
12
- ChatAdapters,
13
- ClipboardAdapter,
14
- ImagePickerAdapter,
15
- LinkingAdapter,
16
- VideoAdapter,
17
- } from '../../../../utils/native_adapters'
18
-
19
- const variant: GiphyAttachmentVariant = {
20
- url: 'https://media.giphy.com/cat.gif',
21
- width: '200',
22
- height: '100',
23
- size: '1',
24
- frames: '1',
25
- }
26
-
27
- const attachment: DenormalizedGiphyAttachmentResource = {
28
- type: 'giphy',
29
- id: '1',
30
- title: 'cat',
31
- titleLink: 'https://giphy.com/gifs/cat',
32
- thumbUrl: variant.url,
33
- giphy: {
34
- original: variant,
35
- fixedHeight: variant,
36
- fixedHeightStill: variant,
37
- fixedHeightDownsampled: variant,
38
- fixedWidth: variant,
39
- fixedWidthStill: variant,
40
- fixedWidthDownsampled: variant,
41
- },
42
- }
43
-
44
- const hostOpenURL = jest.fn(async (_: string) => {})
45
-
46
- describe('GiphyAttachment', () => {
47
- beforeAll(() => {
48
- ChatAdapters.configure({
49
- clipboard: new ClipboardAdapter({
50
- getStringAsync: async () => '',
51
- setStringAsync: async () => {},
52
- }),
53
- audio: new AudioAdapter({ useAudio: () => ({}) as any }),
54
- video: new VideoAdapter({ Player: React.forwardRef(() => null) }),
55
- imagePicker: new ImagePickerAdapter({
56
- openCameraAsync: async () => ({ canceled: true, assets: null }),
57
- openImageLibraryAsync: async () => ({ canceled: true, assets: null }),
58
- }),
59
- linking: new LinkingAdapter({ openURL: hostOpenURL, canOpenURL: async () => true }),
60
- })
61
- })
62
-
63
- it("opens the Giphy link through the host app's linking adapter", () => {
64
- const rnOpenURL = jest.spyOn(RNLinking, 'openURL')
65
- const { getByText } = render(
66
- <ThemeProvider value={DefaultTheme}>
67
- <GiphyAttachment attachment={attachment} onMessageLongPress={jest.fn()} />
68
- </ThemeProvider>
69
- )
70
-
71
- fireEvent.press(getByText('/giphy'))
72
-
73
- expect(hostOpenURL).toHaveBeenCalledWith('https://giphy.com/gifs/cat')
74
- expect(rnOpenURL).not.toHaveBeenCalled()
75
- })
76
- })
@@ -1,40 +0,0 @@
1
- import React from 'react'
2
- import { Linking as RNLinking } from 'react-native'
3
- import { sendEmail } from '../../screens/get_help_screen'
4
- import {
5
- AudioAdapter,
6
- ChatAdapters,
7
- ClipboardAdapter,
8
- ImagePickerAdapter,
9
- LinkingAdapter,
10
- VideoAdapter,
11
- } from '../../utils/native_adapters'
12
-
13
- const hostOpenURL = jest.fn(async (_: string) => {})
14
-
15
- describe('sendEmail', () => {
16
- beforeAll(() => {
17
- ChatAdapters.configure({
18
- clipboard: new ClipboardAdapter({
19
- getStringAsync: async () => '',
20
- setStringAsync: async () => {},
21
- }),
22
- audio: new AudioAdapter({ useAudio: () => ({}) as any }),
23
- video: new VideoAdapter({ Player: React.forwardRef(() => null) }),
24
- imagePicker: new ImagePickerAdapter({
25
- openCameraAsync: async () => ({ canceled: true, assets: null }),
26
- openImageLibraryAsync: async () => ({ canceled: true, assets: null }),
27
- }),
28
- linking: new LinkingAdapter({ openURL: hostOpenURL, canOpenURL: async () => true }),
29
- })
30
- })
31
-
32
- it("opens mailto with the system, not the host app's linking adapter", () => {
33
- const rnOpenURL = jest.spyOn(RNLinking, 'openURL').mockResolvedValue(undefined)
34
-
35
- sendEmail('help@example.com')
36
-
37
- expect(rnOpenURL).toHaveBeenCalledWith('mailto:help@example.com')
38
- expect(hostOpenURL).not.toHaveBeenCalled()
39
- })
40
- })