@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.
- package/build/components/conversation/attachments/giphy_attachment.d.ts.map +1 -1
- package/build/components/conversation/attachments/giphy_attachment.js +2 -2
- package/build/components/conversation/attachments/giphy_attachment.js.map +1 -1
- package/build/components/conversation/message_form.d.ts.map +1 -1
- package/build/components/conversation/message_form.js +2 -2
- package/build/components/conversation/message_form.js.map +1 -1
- package/build/components/conversations/conversations.js +1 -1
- package/build/components/conversations/conversations.js.map +1 -1
- package/build/screens/age_check/age_check_underage_screen.d.ts.map +1 -1
- package/build/screens/age_check/age_check_underage_screen.js +2 -3
- package/build/screens/age_check/age_check_underage_screen.js.map +1 -1
- package/build/screens/bug_report_screen.d.ts.map +1 -1
- package/build/screens/bug_report_screen.js +2 -2
- package/build/screens/bug_report_screen.js.map +1 -1
- package/build/screens/conversation_details_screen.js +2 -2
- package/build/screens/conversation_details_screen.js.map +1 -1
- package/build/screens/conversation_screen.js +1 -1
- package/build/screens/conversation_screen.js.map +1 -1
- package/build/screens/get_help_screen.js +4 -4
- package/build/screens/get_help_screen.js.map +1 -1
- package/build/screens/team_conversation_screen.js +1 -1
- package/build/screens/team_conversation_screen.js.map +1 -1
- package/build/types/resources/conversation.d.ts +1 -1
- package/build/types/resources/conversation.d.ts.map +1 -1
- package/build/types/resources/conversation.js.map +1 -1
- package/package.json +3 -3
- package/src/components/conversation/attachments/giphy_attachment.tsx +3 -2
- package/src/components/conversation/message_form.tsx +1 -1
- package/src/components/conversations/conversations.tsx +1 -1
- package/src/screens/__tests__/conversation_details_screen.test.tsx +8 -0
- package/src/screens/age_check/age_check_underage_screen.tsx +2 -3
- package/src/screens/bug_report_screen.tsx +10 -2
- package/src/screens/conversation_details_screen.tsx +2 -2
- package/src/screens/conversation_screen.tsx +1 -1
- package/src/screens/get_help_screen.tsx +4 -4
- package/src/screens/team_conversation_screen.tsx +1 -1
- package/src/types/resources/conversation.ts +1 -1
- package/src/__tests__/components/conversation/attachments/giphy_attachment.test.tsx +0 -76
- 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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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":";AAAA,SAASA,YAAY,EAAqBC,aAAa,QAAQ,0BAA0B;AACzF,SAASC,QAAQ,EAAEC,cAAc,QAAQ,uBAAuB;AAChE,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,OAAOC,UAAU,MAAM,+CAA+C;AACtE,SAASC,YAAY,QAAQ,UAAU;AACvC,SAASC,gCAAgC,QAAQ,4DAA4D;AAC7G,SAASC,aAAa,QAAQ,yBAAyB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AASvD,OAAO,MAAMC,sBAAsB,GAAGC,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAC;IAAAC;EAAA,IAAAH,EAAsC;EAC3E,MAAAI,SAAA,GAAkBZ,YAAY,CAAC,CAAC;EAChC,MAAAa,WAAA,GAAoBjB,cAAc,CAAC,CAAC;EACpC,MAAAkB,UAAA,GAAmBpB,aAAa,CAAC,CAAC;EAAA,IAAAqB,EAAA;EAAA,IAAAN,CAAA,QAAAE,KAAA,CAAAK,MAAA,CAAAC,OAAA,IAAAR,CAAA,QAAAE,KAAA,CAAAK,MAAA,CAAAE,QAAA;IAMtBH,EAAA,IAAC,mBAAmB,EAAEJ,KAAK,CAAAK,MAAO,CAAAE,QAAS,EAAEP,KAAK,CAAAK,MAAO,CAAAC,OAAQ,CAAC;IAAAR,CAAA,MAAAE,KAAA,CAAAK,MAAA,CAAAC,OAAA;IAAAR,CAAA,MAAAE,KAAA,CAAAK,MAAA,CAAAE,QAAA;IAAAT,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAAA,IAAAU,EAAA;EAAA,IAAAV,CAAA,QAAAG,SAAA,IAAAH,CAAA,QAAAE,KAAA,CAAAK,MAAA,CAAAC,OAAA,IAAAR,CAAA,QAAAE,KAAA,CAAAK,MAAA,CAAAE,QAAA;IACnEC,EAAA,GAAAA,CAAA,KACPlB,gCAAgC,CAAC;MAAAW,SAAA;MAAAQ,OAAA,EAEtBT,KAAK,CAAAK,MAAO,CAAAE,QAAe,IAA3B,EAA2B;MAAAG,MAAA,EAC5BV,KAAK,CAAAK,MAAO,CAAAC;IACtB,CAAC,CAAC,CAAAK,IAAK,CAACC,KAAmB,CAAC;IAAAd,CAAA,MAAAG,SAAA;IAAAH,CAAA,MAAAE,KAAA,CAAAK,MAAA,CAAAC,OAAA;IAAAR,CAAA,MAAAE,KAAA,CAAAK,MAAA,CAAAE,QAAA;IAAAT,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,IAAAe,EAAA;EAAA,IAAAf,CAAA,QAAAM,EAAA,IAAAN,CAAA,QAAAU,EAAA;IAPnBK,EAAA;MAAAC,QAAA,EACDV,EAAkE;MAAAW,OAAA,EACnEP,EAKqB;MAAAQ,KAAA,EACvBC;IACT,CAAC;IAAAnB,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAU,EAAA;IAAAV,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAbD;IAAAoB,IAAA,EAAAC,YAAA;IAAAC,OAAA;IAAAC;EAAA,IAIIrC,QAAQ,CAAC6B,EASZ,CAAC;EAAA,IAAAS,EAAA;EAAA,IAAAxB,CAAA,SAAAqB,YAAA,IAAArB,CAAA,SAAAK,UAAA,IAAAL,CAAA,SAAAI,WAAA;IAEQoB,EAAA,GAAAA,CAAA;MACR,IAAI,CAACH,YAAY,EAAAI,EAAI;QAAA;MAAA;MAErBpB,UAAU,CAAAqB,QAAS,CACjB1C,YAAY,CAAA2C,OAAQ,CAAC,cAAc,EAAE;QAAAC,eAAA,EAClBP,YAAY,CAAAI,EAAG;QAAAI,KAAA,EACzBR,YAAY,CAAAQ;
|
|
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":";AAAA,SAASA,YAAY,EAAqBC,aAAa,QAAQ,0BAA0B;AACzF,SAASC,QAAQ,EAAEC,cAAc,QAAQ,uBAAuB;AAChE,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,OAAOC,UAAU,MAAM,+CAA+C;AACtE,SAASC,YAAY,QAAQ,UAAU;AACvC,SAASC,gCAAgC,QAAQ,4DAA4D;AAC7G,SAASC,aAAa,QAAQ,yBAAyB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AASvD,OAAO,MAAMC,sBAAsB,GAAGC,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAC;IAAAC;EAAA,IAAAH,EAAsC;EAC3E,MAAAI,SAAA,GAAkBZ,YAAY,CAAC,CAAC;EAChC,MAAAa,WAAA,GAAoBjB,cAAc,CAAC,CAAC;EACpC,MAAAkB,UAAA,GAAmBpB,aAAa,CAAC,CAAC;EAAA,IAAAqB,EAAA;EAAA,IAAAN,CAAA,QAAAE,KAAA,CAAAK,MAAA,CAAAC,OAAA,IAAAR,CAAA,QAAAE,KAAA,CAAAK,MAAA,CAAAE,QAAA;IAMtBH,EAAA,IAAC,mBAAmB,EAAEJ,KAAK,CAAAK,MAAO,CAAAE,QAAS,EAAEP,KAAK,CAAAK,MAAO,CAAAC,OAAQ,CAAC;IAAAR,CAAA,MAAAE,KAAA,CAAAK,MAAA,CAAAC,OAAA;IAAAR,CAAA,MAAAE,KAAA,CAAAK,MAAA,CAAAE,QAAA;IAAAT,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAAA,IAAAU,EAAA;EAAA,IAAAV,CAAA,QAAAG,SAAA,IAAAH,CAAA,QAAAE,KAAA,CAAAK,MAAA,CAAAC,OAAA,IAAAR,CAAA,QAAAE,KAAA,CAAAK,MAAA,CAAAE,QAAA;IACnEC,EAAA,GAAAA,CAAA,KACPlB,gCAAgC,CAAC;MAAAW,SAAA;MAAAQ,OAAA,EAEtBT,KAAK,CAAAK,MAAO,CAAAE,QAAe,IAA3B,EAA2B;MAAAG,MAAA,EAC5BV,KAAK,CAAAK,MAAO,CAAAC;IACtB,CAAC,CAAC,CAAAK,IAAK,CAACC,KAAmB,CAAC;IAAAd,CAAA,MAAAG,SAAA;IAAAH,CAAA,MAAAE,KAAA,CAAAK,MAAA,CAAAC,OAAA;IAAAR,CAAA,MAAAE,KAAA,CAAAK,MAAA,CAAAE,QAAA;IAAAT,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,IAAAe,EAAA;EAAA,IAAAf,CAAA,QAAAM,EAAA,IAAAN,CAAA,QAAAU,EAAA;IAPnBK,EAAA;MAAAC,QAAA,EACDV,EAAkE;MAAAW,OAAA,EACnEP,EAKqB;MAAAQ,KAAA,EACvBC;IACT,CAAC;IAAAnB,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAU,EAAA;IAAAV,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAbD;IAAAoB,IAAA,EAAAC,YAAA;IAAAC,OAAA;IAAAC;EAAA,IAIIrC,QAAQ,CAAC6B,EASZ,CAAC;EAAA,IAAAS,EAAA;EAAA,IAAAxB,CAAA,SAAAqB,YAAA,IAAArB,CAAA,SAAAK,UAAA,IAAAL,CAAA,SAAAI,WAAA;IAEQoB,EAAA,GAAAA,CAAA;MACR,IAAI,CAACH,YAAY,EAAAI,EAAI;QAAA;MAAA;MAErBpB,UAAU,CAAAqB,QAAS,CACjB1C,YAAY,CAAA2C,OAAQ,CAAC,cAAc,EAAE;QAAAC,eAAA,EAClBP,YAAY,CAAAI,EAAG;QAAAI,KAAA,EACzBR,YAAY,CAAAQ,KAAmB,IAA/BC;MACT,CAAC,CACH,CAAC;MAAA,OAEM;QACL1B,WAAW,CAAA2B,aAAc,CAAC;UAAAf,QAAA,EAAY,CAAC,mBAAmB;QAAE,CAAC,CAAC;MAAA,CAC/D;IAAA,CACF;IAAAhB,CAAA,OAAAqB,YAAA;IAAArB,CAAA,OAAAK,UAAA;IAAAL,CAAA,OAAAI,WAAA;IAAAJ,CAAA,OAAAwB,EAAA;EAAA;IAAAA,EAAA,GAAAxB,CAAA;EAAA;EAAG,MAAAgC,EAAA,GAAAX,YAAY,EAAAI,EAAI;EAAE,MAAAQ,EAAA,GAAAZ,YAAY,EAAAQ,KAAO;EAAA,IAAAK,EAAA;EAAA,IAAAlC,CAAA,SAAAK,UAAA,IAAAL,CAAA,SAAAI,WAAA,IAAAJ,CAAA,SAAAgC,EAAA,IAAAhC,CAAA,SAAAiC,EAAA;IAAtCC,EAAA,IAACF,EAAgB,EAAEC,EAAmB,EAAE5B,UAAU,EAAED,WAAW,CAAC;IAAAJ,CAAA,OAAAK,UAAA;IAAAL,CAAA,OAAAI,WAAA;IAAAJ,CAAA,OAAAgC,EAAA;IAAAhC,CAAA,OAAAiC,EAAA;IAAAjC,CAAA,OAAAkC,EAAA;EAAA;IAAAA,EAAA,GAAAlC,CAAA;EAAA;EAbnEZ,SAAS,CAACoC,EAaT,EAAEU,EAAgE,CAAC;EAEpE,IAAIZ,OAAO;IAAA,IAAAa,EAAA;IAAA,IAAAnC,CAAA,SAAAuB,KAAA,IAAAvB,CAAA,SAAAK,UAAA,CAAA+B,MAAA;MAASD,EAAA,gBAAAxC,IAAA,CAAC0C,qBAAqB;QAAQd,KAAK,EAALA,KAAK;QAAYe,QAAiB,EAAjBjC,UAAU,CAAA+B;MAAO,CAAG,CAAC;MAAApC,CAAA,OAAAuB,KAAA;MAAAvB,CAAA,OAAAK,UAAA,CAAA+B,MAAA;MAAApC,CAAA,OAAAmC,EAAA;IAAA;MAAAA,EAAA,GAAAnC,CAAA;IAAA;IAAA,OAApEmC,EAAoE;EAAA;EAAA,IAAAA,EAAA;EAAA,IAAAnC,CAAA,SAAAuC,MAAA,CAAAC,GAAA;IAEjFL,EAAA,gBAAAxC,IAAA,CAACN,cAAc,IAAE,CAAC;IAAAW,CAAA,OAAAmC,EAAA;EAAA;IAAAA,EAAA,GAAAnC,CAAA;EAAA;EAAA,OAAlBmC,EAAkB;AAAA,CAC1B;AAED,SAAAE,sBAAAtC,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAA+B;IAAAsB,KAAA;IAAAe;EAAA,IAAAvC,EAA2D;EAAA,IAAAO,EAAA;EAAA,IAAAN,CAAA,QAAAuB,KAAA;IAEtFjB,EAAA,GAAAiB,KAAK,YAAY9B,aAKX,GAJF8B,KAAK,CAAAkB,MAAO,CAAAC,GACN,CAACC,MAAa,CAAC,CAAAC,MACZ,CAACC,OAAO,CAAC,CAAAC,IACX,CAAC,IACP,CAAC,GALN,EAKM;IAAA9C,CAAA,MAAAuB,KAAA;IAAAvB,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EANR,MAAA+C,MAAA,GACEzC,EAKM;EAAA,IAAAI,EAAA;EAAA,IAAAV,CAAA,QAAAuC,MAAA,CAAAC,GAAA;IAIJ9B,EAAA,gBAAAf,IAAA,CAAAL,UAAA,CAAA0D,OAAA;MAAyBC,IAAsB,EAAtB;IAAsB,CAAE,CAAC;IAAAjD,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,IAAAe,EAAA;EAAA,IAAAf,CAAA,QAAAuC,MAAA,CAAAC,GAAA;IAEhDzB,EAAA,gBAAApB,IAAA,CAAAL,UAAA,CAAA4D,OAAA;MAAAC,QAAA,EAAoB;IAA6B,CAAoB,CAAC;IAAAnD,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAEnE,MAAAwB,EAAA,GAAAuB,MAAkE,IAAlE,wDAAkE;EAAA,IAAAf,EAAA;EAAA,IAAAhC,CAAA,QAAAwB,EAAA;IAHvEQ,EAAA,gBAAAnC,KAAA,CAAAP,UAAA,CAAA8D,OAAA;MAAAD,QAAA,GACEpC,EAAsE,eACtEpB,IAAA,CAAAL,UAAA,CAAA+D,IAAA;QAAAF,QAAA,EACG3B;MAAkE,CACpD,CAAC;IAAA,CACA,CAAC;IAAAxB,CAAA,MAAAwB,EAAA;IAAAxB,CAAA,MAAAgC,EAAA;EAAA;IAAAA,EAAA,GAAAhC,CAAA;EAAA;EAAA,IAAAiC,EAAA;EAAA,IAAAjC,CAAA,QAAAsC,QAAA;IACrBL,EAAA,gBAAAtC,IAAA,CAAAL,UAAA,CAAAgE,MAAA;MAAyBzB,KAAS,EAAT,SAAS;MAAUS,OAAQ,EAARA,QAAQ;MAAOiB,IAAI,EAAJ,IAAI;MAAmBC,iBAAM,EAAN;IAAM,CAAE,CAAC;IAAAxD,CAAA,MAAAsC,QAAA;IAAAtC,CAAA,MAAAiC,EAAA;EAAA;IAAAA,EAAA,GAAAjC,CAAA;EAAA;EAAA,IAAAkC,EAAA;EAAA,IAAAlC,CAAA,QAAAgC,EAAA,IAAAhC,CAAA,QAAAiC,EAAA;IAR7FC,EAAA,gBAAArC,KAAA,CAAAP,UAAA,CAAAmE,IAAA;MAAAN,QAAA,GACEzC,EAAkD,EAClDsB,EAKqB,EACrBC,EAA2F;IAAA,CAC5E,CAAC;IAAAjC,CAAA,MAAAgC,EAAA;IAAAhC,CAAA,MAAAiC,EAAA;IAAAjC,CAAA,OAAAkC,EAAA;EAAA;IAAAA,EAAA,GAAAlC,CAAA;EAAA;EAAA,OATlBkC,EASkB;AAAA;AAnBtB,SAAAS,OAAAe,CAAA;EAAA,OAIoBA,CAAC,CAAAX,MAAO;AAAA;AA3CU,SAAAjC,MAAA6C,CAAA;EAAA,OAenBA,CAAC,CAAAtC,YAAa;AAAA;AAfK,SAAAF,OAAAyC,YAAA,EAAAC,GAAA;EAAA,OAgBJ,EAAEA,GAAG,YAAYpE,aAAa,CAAqB,IAAhBmE,YAAY,GAAG,CAAC;AAAA","ignoreList":[]}
|
|
@@ -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;
|
|
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.
|
|
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.
|
|
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": "
|
|
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
|
|
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
|
|
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
|
-
|
|
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 {
|
|
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,
|
|
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 === ''
|
|
124
|
+
const emptyTitle = trimmedTitle === ''
|
|
125
125
|
|
|
126
126
|
const notificationLevelDescription =
|
|
127
127
|
conversation?.conversationMembership?.notificationLevelDescription
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { StaticScreenProps, useNavigation } from '@react-navigation/native'
|
|
2
2
|
import { useCallback, useMemo } from 'react'
|
|
3
|
-
import { Alert, Linking
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
|
@@ -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
|
-
})
|