@messenger-box/slack-ui-mobile 10.0.3-alpha.33 → 10.0.3-alpha.35

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 (35) hide show
  1. package/lib/components/Actionsheet.js +19 -14
  2. package/lib/components/Actionsheet.js.map +1 -1
  3. package/lib/components/SlackSearchInput/index.js +1 -1
  4. package/lib/components/SlackSearchInput/index.js.map +1 -1
  5. package/lib/index.js +1 -1
  6. package/lib/index.js.map +1 -1
  7. package/lib/navigation/SearchTabNavigation.js +1 -1
  8. package/lib/navigation/TeamTabNavigation.js +1 -1
  9. package/lib/screens/Channels/Add/AddName.js +4 -4
  10. package/lib/screens/Channels/Add/AddName.js.map +1 -1
  11. package/lib/screens/Channels/AddChannel.js +1 -1
  12. package/lib/screens/Channels/AddChannel.js.map +1 -1
  13. package/lib/screens/Channels/Channels.js +1 -1
  14. package/lib/screens/Channels/Channels.js.map +1 -1
  15. package/lib/screens/Home/Components/InviteMembers/index.js +88 -0
  16. package/lib/screens/Home/Components/InviteMembers/index.js.map +1 -0
  17. package/lib/screens/Home/Components/Teams/Teams.js +11 -13
  18. package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
  19. package/lib/screens/Home/HomeScreen.js +51 -65
  20. package/lib/screens/Home/HomeScreen.js.map +1 -1
  21. package/lib/screens/Organization/CreateOrganization.js +1 -1
  22. package/lib/screens/Organization/CreateOrganization.js.map +1 -1
  23. package/lib/screens/Organization/InitializeOrganizationChannel.js +1 -1
  24. package/lib/screens/Organization/InitializeOrganizationChannel.js.map +1 -1
  25. package/lib/screens/Peoples/AddByEmail.js +1 -1
  26. package/lib/screens/Peoples/AddByEmail.js.map +1 -1
  27. package/lib/screens/Peoples/AddFromContacts.js +118 -83
  28. package/lib/screens/Peoples/AddFromContacts.js.map +1 -1
  29. package/lib/screens/Search/SearchAddChannel.js +1 -1
  30. package/lib/screens/Search/SearchAddChannel.js.map +1 -1
  31. package/lib/screens/Teams/AddTeam.js +1 -1
  32. package/lib/screens/Teams/AddTeam.js.map +1 -1
  33. package/lib/screens/Teams/Teams.js +1 -1
  34. package/lib/screens/Teams/Teams.js.map +1 -1
  35. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"CreateOrganization.js","sources":["../../../src/screens/Organization/CreateOrganization.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect, useCallback } from 'react';\nimport { StyleSheet, TouchableOpacity, Dimensions, Platform, Alert, SafeAreaView } from 'react-native';\nimport {\n Input,\n InputField,\n View,\n Text,\n VStack,\n Box,\n FormControl,\n FormControlLabel,\n FormControlLabelText,\n FormControlHelper,\n FormControlHelperText,\n FormControlError,\n FormControlErrorText,\n Button,\n ButtonText,\n ButtonSpinner,\n Fab,\n Icon,\n Divider,\n FlatList,\n HStack,\n Avatar,\n Image,\n Checkbox,\n ChevronLeftIcon,\n Center,\n Heading,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { useCreateOrganizationMutation, useGetAllUsersQuery } from 'common/graphql';\nimport { NavigationRoutes } from '../../constants/routes';\nimport { useSelector } from 'react-redux';\nimport { userSelector, isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport { useFocusEffect, useNavigation } from '@react-navigation/native';\nimport Colors from 'tailwindcss/colors';\nimport { LoadingSpinner } from '../../components';\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst CreateOrganization = ({ route }: any) => {\n const navigation = useNavigation<any>();\n const user: any = useSelector(userSelector);\n const [name, setName] = useState<string>('');\n const [description, setDescription] = useState('');\n const [orgMemebers, setOrgMemebers] = useState<any>([{ userId: user?.id, role: 'OWNER' }]);\n const [showCreateButton, setShowCreateButton] = useState<boolean>(false);\n const [createOrganizationMutation, { data, loading, error }] = useCreateOrganizationMutation({\n onCompleted: (data: any) => {\n if (data?.createOrganization?.name) {\n navigation.navigate(NavigationRoutes.InviteOrganizationMembers, {\n orgName: data?.createOrganization?.name,\n });\n } else {\n navigation.navigate(NavigationRoutes.Home, { orgName: route?.params?.orgName });\n }\n },\n onError: (error: any) => {\n //console.log('create org error', error);\n Alert.alert('Workspace already exists');\n },\n });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n useEffect(() => {\n if (name && name.length > 0) setShowCreateButton(true);\n else setShowCreateButton(false);\n }, [name]);\n\n const createOrganization = useCallback(() => {\n if (name && name?.length > 0) {\n createOrganizationMutation({\n variables: {\n organization: {\n name: name,\n namespace: name,\n title: name,\n description: description,\n orgMembers: orgMemebers,\n },\n },\n });\n }\n }, [name]);\n\n return (\n <SafeAreaView style={{ flex: 1 }}>\n <Box className=\"border-t-blue-600 border-t-[1px] w-[25%]\" />\n <Center className=\"flex-1 bg-white\">\n <VStack space={'sm'}>\n <Heading className=\"px-4 items-center text-center\">\n What's the name of your company or team?\n </Heading>\n <Text className=\"text-center\">This will be the name of your workspace.</Text>\n <Box>\n <FormControl className=\"mt-3 w-full px-2\">\n <Input\n variant=\"outline\"\n size=\"lg\"\n style={{ borderWidth: 1, borderColor: '1e3a8a' }}\n className=\"py-3 border-blue-900 border-[2px]\"\n >\n <InputField\n maxLength={80}\n placeholder=\"Ex. Acme or Acme Marketing\"\n value={name}\n onChangeText={(v) => setName(v)}\n aria-label=\"Organization name\"\n accessibilityLabel=\"Organization name\"\n />\n </Input>\n <FormControlError className=\"px-2\">\n <FormControlErrorText className=\"color-red-400\">\n Organization name must be lowercase, and can't contain spaces,periods,or most\n punctuation.\n </FormControlErrorText>\n </FormControlError>\n </FormControl>\n </Box>\n <Button\n variant={'solid'}\n className={`${\n showCreateButton ? 'bg-green-800' : 'bg-gray-300'\n } active:bg-green-600 hover:bg-green-600 mx-2`}\n disabled={showCreateButton ? false : true}\n onPress={() => createOrganization()}\n style={{ backgroundColor: showCreateButton ? '#166534' : '#d1d5db' }}\n >\n {loading && <ButtonSpinner style={{ marginRight: 1 }} />}\n <ButtonText className={`font-bold ${showCreateButton ? 'color-white' : 'color-gray-800'}`}>\n Next\n </ButtonText>\n </Button>\n <Text className=\"py-2 color-gray-800 leading-loose px-2\">\n By continuing, you're agreeing to out{' '}\n <Text color={Colors.blue[900]}>Main Services Agreement, User Terms of Services</Text>, and{' '}\n <Text color={Colors.blue[900]}>Supplemental Terms</Text>\n .Additional disclosures are available in our{' '}\n <Text color={Colors.blue[900]}>Privacy Policy</Text> and{' '}\n <Text color={Colors.blue[900]}>Cookie Policy</Text>.\n </Text>\n </VStack>\n </Center>\n </SafeAreaView>\n );\n};\n\nexport default CreateOrganization;\n"],"names":["data","error","React","Colors"],"mappings":"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"}
1
+ {"version":3,"file":"CreateOrganization.js","sources":["../../../src/screens/Organization/CreateOrganization.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect, useCallback } from 'react';\nimport { StyleSheet, TouchableOpacity, Dimensions, Platform, Alert, SafeAreaView } from 'react-native';\nimport {\n Input,\n InputField,\n View,\n Text,\n VStack,\n Box,\n FormControl,\n FormControlLabel,\n FormControlLabelText,\n FormControlHelper,\n FormControlHelperText,\n FormControlError,\n FormControlErrorText,\n Button,\n ButtonText,\n ButtonSpinner,\n Fab,\n Icon,\n Divider,\n FlatList,\n HStack,\n Avatar,\n Image,\n Checkbox,\n ChevronLeftIcon,\n Center,\n Heading,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { useCreateOrganizationMutation, useGetAllUsersQuery } from 'common/graphql';\nimport { NavigationRoutes } from '../../constants/routes';\nimport { useSelector } from 'react-redux';\nimport { userSelector, isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport { useFocusEffect, useNavigation } from '@react-navigation/native';\nimport Colors from 'tailwindcss/colors';\nimport { LoadingSpinner } from '../../components';\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst CreateOrganization = ({ route }: any) => {\n const navigation = useNavigation<any>();\n const user: any = useSelector(userSelector);\n const [name, setName] = useState<string>('');\n const [description, setDescription] = useState('');\n const [orgMemebers, setOrgMemebers] = useState<any>([{ userId: user?.id, role: 'OWNER' }]);\n const [showCreateButton, setShowCreateButton] = useState<boolean>(false);\n const [createOrganizationMutation, { data, loading, error }] = useCreateOrganizationMutation({\n onCompleted: (data: any) => {\n if (data?.createOrganization?.name) {\n navigation.navigate(NavigationRoutes.InviteOrganizationMembers, {\n orgName: data?.createOrganization?.name,\n });\n } else {\n navigation.navigate(NavigationRoutes.Home, { orgName: route?.params?.orgName });\n }\n },\n onError: (error: any) => {\n //console.log('create org error', error);\n Alert.alert('Workspace already exists');\n },\n });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n useEffect(() => {\n if (name && name.length > 0) setShowCreateButton(true);\n else setShowCreateButton(false);\n }, [name]);\n\n const createOrganization = useCallback(() => {\n if (name && name?.length > 0) {\n createOrganizationMutation({\n variables: {\n organization: {\n name: name,\n namespace: name,\n title: name,\n description: description,\n orgMembers: orgMemebers,\n },\n },\n });\n }\n }, [name]);\n\n return (\n <SafeAreaView style={{ flex: 1 }}>\n <Box className=\"border-t-blue-600 border-t-[1px] w-[25%]\" />\n <Center className=\"flex-1 bg-white\">\n <VStack space={'sm'}>\n <Heading className=\"px-4 items-center text-center\">\n What's the name of your company or team?\n </Heading>\n <Text className=\"text-center\">This will be the name of your workspace.</Text>\n <Box>\n <FormControl className=\"mt-3 w-full px-2\">\n <Input\n variant=\"outline\"\n size=\"lg\"\n style={{ borderWidth: 1, borderColor: '1e3a8a' }}\n className=\"py-3 border-blue-900 border-[2px]\"\n >\n <InputField\n maxLength={80}\n placeholder=\"Ex. Acme or Acme Marketing\"\n value={name}\n onChange={(event) => setName(event.nativeEvent.text)}\n aria-label=\"Organization name\"\n accessibilityLabel=\"Organization name\"\n />\n </Input>\n <FormControlError className=\"px-2\">\n <FormControlErrorText className=\"color-red-400\">\n Organization name must be lowercase, and can't contain spaces,periods,or most\n punctuation.\n </FormControlErrorText>\n </FormControlError>\n </FormControl>\n </Box>\n <Button\n variant={'solid'}\n className={`${\n showCreateButton ? 'bg-green-800' : 'bg-gray-300'\n } active:bg-green-600 hover:bg-green-600 mx-2`}\n disabled={showCreateButton ? false : true}\n onPress={() => createOrganization()}\n style={{ backgroundColor: showCreateButton ? '#166534' : '#d1d5db' }}\n >\n {loading && <ButtonSpinner style={{ marginRight: 1 }} />}\n <ButtonText className={`font-bold ${showCreateButton ? 'color-white' : 'color-gray-800'}`}>\n Next\n </ButtonText>\n </Button>\n <Text className=\"py-2 color-gray-800 leading-loose px-2\">\n By continuing, you're agreeing to out{' '}\n <Text color={Colors.blue[900]}>Main Services Agreement, User Terms of Services</Text>, and{' '}\n <Text color={Colors.blue[900]}>Supplemental Terms</Text>\n .Additional disclosures are available in our{' '}\n <Text color={Colors.blue[900]}>Privacy Policy</Text> and{' '}\n <Text color={Colors.blue[900]}>Cookie Policy</Text>.\n </Text>\n </VStack>\n </Center>\n </SafeAreaView>\n );\n};\n\nexport default CreateOrganization;\n"],"names":["data","error","React","Colors"],"mappings":"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"}
@@ -69,7 +69,7 @@ const InitializeOrganizationChannel = ({
69
69
  });
70
70
  }
71
71
  }, [name]);
72
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Box, { className: "border-t-blue-600 border-t w-[75%]" }), /* @__PURE__ */ React__default.createElement(Center, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(VStack, { space: "sm", className: "px-2" }, /* @__PURE__ */ React__default.createElement(Heading, { className: "px-4 items-center text-center" }, "What's a project your team is working on?"), /* @__PURE__ */ React__default.createElement(Text, { className: "text-center px-2" }, "This could be anything: a project, campaign,event, or the deal your're tring to close."), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(FormControl, { className: "mt-3 w-full" }, /* @__PURE__ */ React__default.createElement(Input, { variant: "outline", size: "lg", className: "py-3 border-blue-900 border-t-2" }, /* @__PURE__ */ React__default.createElement(InputField, { maxLength: 80, placeholder: "Ex. Q4 Budget, Website updateg", value: name, onChangeText: (v) => setName(v), "aria-label": "Organization name", accessibilityLabel: "Organization name" })))), /* @__PURE__ */ React__default.createElement(Button, { variant: "solid", className: `${showCreateButton ? "bg-green-800" : "bg-gray-300"} active:bg-green-600 hover:bg-green-600`, disabled: showCreateButton ? false : true, onPress: () => createChannelHandler() }, loading || addDirectChannaleLoading && /* @__PURE__ */ React__default.createElement(ButtonSpinner, { style: {
72
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Box, { className: "border-t-blue-600 border-t w-[75%]" }), /* @__PURE__ */ React__default.createElement(Center, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(VStack, { space: "sm", className: "px-2" }, /* @__PURE__ */ React__default.createElement(Heading, { className: "px-4 items-center text-center" }, "What's a project your team is working on?"), /* @__PURE__ */ React__default.createElement(Text, { className: "text-center px-2" }, "This could be anything: a project, campaign,event, or the deal your're tring to close."), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(FormControl, { className: "mt-3 w-full" }, /* @__PURE__ */ React__default.createElement(Input, { variant: "outline", size: "lg", className: "py-3 border-blue-900 border-t-2" }, /* @__PURE__ */ React__default.createElement(InputField, { maxLength: 80, placeholder: "Ex. Q4 Budget, Website updateg", value: name, onChange: (event) => setName(event.nativeEvent.text), "aria-label": "Organization name", accessibilityLabel: "Organization name" })))), /* @__PURE__ */ React__default.createElement(Button, { variant: "solid", className: `${showCreateButton ? "bg-green-800" : "bg-gray-300"} active:bg-green-600 hover:bg-green-600`, disabled: showCreateButton ? false : true, onPress: () => createChannelHandler() }, loading || addDirectChannaleLoading && /* @__PURE__ */ React__default.createElement(ButtonSpinner, { style: {
73
73
  marginRight: 1
74
74
  } }), /* @__PURE__ */ React__default.createElement(ButtonText, { className: `font-bold ${showCreateButton ? "color-white" : "color-gray-800"}` }, "Next")))));
75
75
  };export{InitializeOrganizationChannel as default};//# sourceMappingURL=InitializeOrganizationChannel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InitializeOrganizationChannel.js","sources":["../../../src/screens/Organization/InitializeOrganizationChannel.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect, useCallback } from 'react';\nimport { StyleSheet, TouchableOpacity, Dimensions, Platform, Alert } from 'react-native';\nimport {\n Input,\n InputField,\n Text,\n VStack,\n Box,\n FormControl,\n FormControlLabel,\n FormControlLabelText,\n FormControlHelper,\n FormControlHelperText,\n FormControlError,\n FormControlErrorText,\n Button,\n ButtonText,\n ButtonSpinner,\n Center,\n Heading,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { useAddChannelMutation, useAddDirectChannelMutation } from 'common/graphql';\nimport { NavigationRoutes } from '../../constants/routes';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { userSelector, isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport { useFocusEffect, useNavigation } from '@react-navigation/native';\nimport Colors from 'tailwindcss/colors';\nimport { LoadingSpinner } from '../../components';\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst InitializeOrganizationChannel = ({ route }: any) => {\n const navigation = useNavigation<any>();\n const user: any = useSelector(userSelector, shallowEqual);\n const [name, setName] = useState<string>('');\n const [channel, setChannel] = useState<any>(null);\n const [description, setDescription] = useState('');\n const [showCreateButton, setShowCreateButton] = useState<boolean>(false);\n const [addDirectChannel, { loading: addDirectChannaleLoading }] = useAddDirectChannelMutation();\n\n const [createChannel, { loading, error }] = useAddChannelMutation({\n onCompleted: (data: any) => {\n if (data?.createChannel) setChannel(data?.createChannel);\n // if (data?.createChannel?.id) {\n // navigation.navigate(NavigationRoutes.InitialChannelOnboarding, {\n // orgName: route?.params?.orgName,\n // channelId: data?.createChannel?.id,\n // title: data?.createChannel?.title,\n // });\n // } else {\n // navigation.navigate(NavigationRoutes.Home, { orgName: route?.params?.orgName });\n // }\n },\n onError: (error: any) => {\n Alert.alert('Channel creation failed');\n },\n });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n useEffect(() => {\n if (channel && !addDirectChannaleLoading) {\n if (channel?.id) {\n navigation.navigate(NavigationRoutes.InitialChannelOnboarding, {\n orgName: route?.params?.orgName,\n channelId: channel?.id,\n title: channel?.title,\n });\n } else {\n navigation.navigate(NavigationRoutes.Home, { orgName: route?.params?.orgName });\n }\n }\n }, [channel, addDirectChannaleLoading, route]);\n\n useEffect(() => {\n if (name && name.length > 0) setShowCreateButton(true);\n else setShowCreateButton(false);\n }, [name]);\n\n const createChannelHandler = useCallback(() => {\n if (name && name?.length > 0) {\n addDirectChannel({\n variables: {\n receiver: [user.id],\n displayName: 'DIRECT CHANNEL',\n channelOptions: { schemeAdmin: true },\n },\n });\n createChannel({\n variables: {\n name: name,\n description: description,\n },\n });\n }\n }, [name]);\n\n return (\n <>\n <Box className=\"border-t-blue-600 border-t w-[75%]\" />\n <Center className=\"flex-1 bg-white\">\n <VStack space={'sm'} className=\"px-2\">\n <Heading className=\"px-4 items-center text-center\">\n What's a project your team is working on?\n </Heading>\n <Text className=\"text-center px-2\">\n This could be anything: a project, campaign,event, or the deal your're tring to close.\n </Text>\n <Box>\n <FormControl className=\"mt-3 w-full\">\n <Input variant=\"outline\" size=\"lg\" className=\"py-3 border-blue-900 border-t-2\">\n <InputField\n maxLength={80}\n placeholder=\"Ex. Q4 Budget, Website updateg\"\n value={name}\n onChangeText={(v) => setName(v)}\n aria-label=\"Organization name\"\n accessibilityLabel=\"Organization name\"\n />\n </Input>\n </FormControl>\n </Box>\n <Button\n variant={'solid'}\n className={`${\n showCreateButton ? 'bg-green-800' : 'bg-gray-300'\n } active:bg-green-600 hover:bg-green-600`}\n disabled={showCreateButton ? false : true}\n onPress={() => createChannelHandler()}\n >\n {loading || (addDirectChannaleLoading && <ButtonSpinner style={{ marginRight: 1 }} />)}\n <ButtonText className={`font-bold ${showCreateButton ? 'color-white' : 'color-gray-800'}`}>\n Next\n </ButtonText>\n </Button>\n </VStack>\n </Center>\n </>\n );\n};\n\nexport default InitializeOrganizationChannel;\n"],"names":["error","React"],"mappings":"sjBAUoB,UAAA,CAAW,GAAI,CAAA,QAAQ,CAAE,CAAA;AACxB,UAAA,CAAW,GAAI,CAAA,QAAQ,CAAE,CAAA;AAC9C,MAAM,gCAAgC,CAAC;AAAA,EACrC;AACF,CAAW,KAAA;AACT,EAAA,MAAM,aAAa,aAAmB,EAAA;AACtC,EAAM,MAAA,IAAA,GAAY,WAAY,CAAA,YAAA,EAAc,YAAY,CAAA;AACxD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAiB,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAc,IAAI,CAAA;AAChD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,EAAE,CAAA;AACjD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAkB,KAAK,CAAA;AACvE,EAAA,MAAM,CAAC,gBAAkB,EAAA;AAAA,IACvB,OAAS,EAAA;AAAA,GACV,IAAI,2BAA4B,EAAA;AACjC,EAAA,MAAM,CAAC,aAAe,EAAA;AAAA,IACpB,OAAA;AAAA,IACA;AAAA,GACD,IAAI,qBAAsB,CAAA;AAAA,IACzB,WAAA,EAAa,CAAC,IAAc,KAAA;AAC1B,MAAA,IAAI,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,aAAA;AAAe,QAAA,UAAA,CAAW,6BAAM,aAAa,CAAA;AAAA,KAUzD;AAAA,IACA,OAAA,EAAS,CAACA,MAAe,KAAA;AACvB,MAAA,KAAA,CAAM,MAAM,yBAAyB,CAAA;AAAA;AACvC,GACD,CAAA;AACD,EAAe,cAAA,CAAAC,cAAA,CAAM,YAAY,MAAM;AAErC,IAAA,OAAO,MAAM;AAAA,KAGb;AAAA,GACF,EAAG,EAAE,CAAC,CAAA;AACN,EAAA,SAAA,CAAU,MAAM;AAnDlB,IAAA,IAAA,EAAA,EAAA,EAAA;AAoDI,IAAI,IAAA,OAAA,IAAW,CAAC,wBAA0B,EAAA;AACxC,MAAA,IAAI,mCAAS,EAAI,EAAA;AACf,QAAW,UAAA,CAAA,QAAA,CAAS,iBAAiB,wBAA0B,EAAA;AAAA,UAC7D,OAAA,EAAA,CAAS,EAAO,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,MAAA,KAAP,IAAe,GAAA,MAAA,GAAA,EAAA,CAAA,OAAA;AAAA,UACxB,WAAW,OAAS,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,EAAA;AAAA,UACpB,OAAO,OAAS,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA;AAAA,SACjB,CAAA;AAAA,OACI,MAAA;AACL,QAAW,UAAA,CAAA,QAAA,CAAS,iBAAiB,IAAM,EAAA;AAAA,UACzC,OAAA,EAAA,CAAS,EAAO,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAA,MAAA,KAAP,IAAe,GAAA,MAAA,GAAA,EAAA,CAAA;AAAA,SACzB,CAAA;AAAA;AACH;AACF,GACC,EAAA,CAAC,OAAS,EAAA,wBAAA,EAA0B,KAAK,CAAC,CAAA;AAC7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,IAAA,IAAQ,KAAK,MAAS,GAAA,CAAA;AAAG,MAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA;AAAO,MAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,GACvF,EAAG,CAAC,IAAI,CAAC,CAAA;AACT,EAAM,MAAA,oBAAA,GAAuB,YAAY,MAAM;AAC7C,IAAI,IAAA,IAAA,IAAA,CAAQ,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,MAAA,IAAS,CAAG,EAAA;AAC5B,MAAiB,gBAAA,CAAA;AAAA,QACf,SAAW,EAAA;AAAA,UACT,QAAA,EAAU,CAAC,IAAA,CAAK,EAAE,CAAA;AAAA,UAClB,WAAa,EAAA,gBAAA;AAAA,UACb,cAAgB,EAAA;AAAA,YACd,WAAa,EAAA;AAAA;AACf;AACF,OACD,CAAA;AACD,MAAc,aAAA,CAAA;AAAA,QACZ,SAAW,EAAA;AAAA,UACT,IAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA;AACH,GACF,EAAG,CAAC,IAAI,CAAC,CAAA;AACT,EAAA,mGACWA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,WAAU,oCAAqC,EAAA,CAAA,+CACnD,MAAO,EAAA,EAAA,SAAA,EAAU,iBACd,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAO,KAAO,EAAA,IAAA,EAAM,WAAU,MAC3B,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,WAAQ,SAAU,EAAA,+BAAA,EAAA,EAAgC,2CAEnD,CAAA,+CACC,IAAK,EAAA,EAAA,SAAA,EAAU,sBAAmB,wFAEnC,CAAA,+CACC,GACG,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,SAAA,EAAU,iCAClBA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,SAAQ,SAAU,EAAA,IAAA,EAAK,MAAK,SAAU,EAAA,iCAAA,EAAA,kBACxCA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,WAAW,EAAI,EAAA,WAAA,EAAY,kCAAiC,KAAO,EAAA,IAAA,EAAM,cAAc,CAAK,CAAA,KAAA,OAAA,CAAQ,CAAC,CAAA,EAAG,cAAW,mBAAoB,EAAA,kBAAA,EAAmB,qBAAoB,CAC9L,CACJ,CACJ,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,OAAA,EAAS,SAAS,SAAW,EAAA,CAAA,EAAG,mBAAmB,cAAiB,GAAA,aAAA,CAAA,uCAAA,CAAA,EAAwD,UAAU,gBAAmB,GAAA,KAAA,GAAQ,IAAM,EAAA,OAAA,EAAS,MAAM,oBAAqB,EAAA,EAAA,EAC9M,WAAW,wBAA4B,oBAAAA,cAAA,CAAA,aAAA,CAAC,iBAAc,KAAO,EAAA;AAAA,IAC1E,WAAa,EAAA;AAAA,GACZ,EAAA,CAAA,kBACYA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAW,EAAA,CAAA,UAAA,EAAa,gBAAmB,GAAA,aAAA,GAAgB,gBAAoB,CAAA,CAAA,EAAA,EAAA,MAE3F,CACJ,CACJ,CACJ,CACJ,CAAA;AACR"}
1
+ {"version":3,"file":"InitializeOrganizationChannel.js","sources":["../../../src/screens/Organization/InitializeOrganizationChannel.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect, useCallback } from 'react';\nimport { StyleSheet, TouchableOpacity, Dimensions, Platform, Alert } from 'react-native';\nimport {\n Input,\n InputField,\n Text,\n VStack,\n Box,\n FormControl,\n FormControlLabel,\n FormControlLabelText,\n FormControlHelper,\n FormControlHelperText,\n FormControlError,\n FormControlErrorText,\n Button,\n ButtonText,\n ButtonSpinner,\n Center,\n Heading,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { useAddChannelMutation, useAddDirectChannelMutation } from 'common/graphql';\nimport { NavigationRoutes } from '../../constants/routes';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { userSelector, isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport { useFocusEffect, useNavigation } from '@react-navigation/native';\nimport Colors from 'tailwindcss/colors';\nimport { LoadingSpinner } from '../../components';\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst InitializeOrganizationChannel = ({ route }: any) => {\n const navigation = useNavigation<any>();\n const user: any = useSelector(userSelector, shallowEqual);\n const [name, setName] = useState<string>('');\n const [channel, setChannel] = useState<any>(null);\n const [description, setDescription] = useState('');\n const [showCreateButton, setShowCreateButton] = useState<boolean>(false);\n const [addDirectChannel, { loading: addDirectChannaleLoading }] = useAddDirectChannelMutation();\n\n const [createChannel, { loading, error }] = useAddChannelMutation({\n onCompleted: (data: any) => {\n if (data?.createChannel) setChannel(data?.createChannel);\n // if (data?.createChannel?.id) {\n // navigation.navigate(NavigationRoutes.InitialChannelOnboarding, {\n // orgName: route?.params?.orgName,\n // channelId: data?.createChannel?.id,\n // title: data?.createChannel?.title,\n // });\n // } else {\n // navigation.navigate(NavigationRoutes.Home, { orgName: route?.params?.orgName });\n // }\n },\n onError: (error: any) => {\n Alert.alert('Channel creation failed');\n },\n });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n useEffect(() => {\n if (channel && !addDirectChannaleLoading) {\n if (channel?.id) {\n navigation.navigate(NavigationRoutes.InitialChannelOnboarding, {\n orgName: route?.params?.orgName,\n channelId: channel?.id,\n title: channel?.title,\n });\n } else {\n navigation.navigate(NavigationRoutes.Home, { orgName: route?.params?.orgName });\n }\n }\n }, [channel, addDirectChannaleLoading, route]);\n\n useEffect(() => {\n if (name && name.length > 0) setShowCreateButton(true);\n else setShowCreateButton(false);\n }, [name]);\n\n const createChannelHandler = useCallback(() => {\n if (name && name?.length > 0) {\n addDirectChannel({\n variables: {\n receiver: [user.id],\n displayName: 'DIRECT CHANNEL',\n channelOptions: { schemeAdmin: true },\n },\n });\n createChannel({\n variables: {\n name: name,\n description: description,\n },\n });\n }\n }, [name]);\n\n return (\n <>\n <Box className=\"border-t-blue-600 border-t w-[75%]\" />\n <Center className=\"flex-1 bg-white\">\n <VStack space={'sm'} className=\"px-2\">\n <Heading className=\"px-4 items-center text-center\">\n What's a project your team is working on?\n </Heading>\n <Text className=\"text-center px-2\">\n This could be anything: a project, campaign,event, or the deal your're tring to close.\n </Text>\n <Box>\n <FormControl className=\"mt-3 w-full\">\n <Input variant=\"outline\" size=\"lg\" className=\"py-3 border-blue-900 border-t-2\">\n <InputField\n maxLength={80}\n placeholder=\"Ex. Q4 Budget, Website updateg\"\n value={name}\n onChange={(event) => setName(event.nativeEvent.text)}\n aria-label=\"Organization name\"\n accessibilityLabel=\"Organization name\"\n />\n </Input>\n </FormControl>\n </Box>\n <Button\n variant={'solid'}\n className={`${\n showCreateButton ? 'bg-green-800' : 'bg-gray-300'\n } active:bg-green-600 hover:bg-green-600`}\n disabled={showCreateButton ? false : true}\n onPress={() => createChannelHandler()}\n >\n {loading || (addDirectChannaleLoading && <ButtonSpinner style={{ marginRight: 1 }} />)}\n <ButtonText className={`font-bold ${showCreateButton ? 'color-white' : 'color-gray-800'}`}>\n Next\n </ButtonText>\n </Button>\n </VStack>\n </Center>\n </>\n );\n};\n\nexport default InitializeOrganizationChannel;\n"],"names":["error","React"],"mappings":"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"}
@@ -64,5 +64,5 @@ const AddPeopleByEmail = ({
64
64
  } }, /* @__PURE__ */ React__default.createElement(VStack, { space: "lg", className: "py-5 flex-1 justify-between" }, /* @__PURE__ */ React__default.createElement(Box, { className: "text-center justify-center rounded-full" }, /* @__PURE__ */ React__default.createElement(Button, { className: "rounded-full bg-green-100", size: "lg" }, /* @__PURE__ */ React__default.createElement(ButtonIcon, { color: "#14532d", as: CheckIcon }))), /* @__PURE__ */ React__default.createElement(Heading, { className: "text-center" }, "Invitation sent"), /* @__PURE__ */ React__default.createElement(HStack, { className: "flex-1 px-4 pr-10", space: "sm" }, /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(AntDesign, { color: "black", name: "adduser", size: 30 })), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { color: colors.black, className: "font-bold" }, email), /* @__PURE__ */ React__default.createElement(Text, null, "Invited as a member of ", orgName, ".They'll be able to receive and reply to messages by email untill they join."))), /* @__PURE__ */ React__default.createElement(Box, { className: "px-5" }, /* @__PURE__ */ React__default.createElement(Button, { onPress: () => {
65
65
  setEmail("");
66
66
  navigation.goBack();
67
- }, className: "bg-green-900 rounded-lg active:bg-green-600 hover:bg-green-600" }, /* @__PURE__ */ React__default.createElement(ButtonText, { className: "font-bold text-[15]" }, "Done"))))) : /* @__PURE__ */ React__default.createElement(Input, { variant: "underlined", className: "border border-gray-300", size: "xl" }, /* @__PURE__ */ React__default.createElement(InputField, { type: "text", size: "xl", autoCapitalize: "none", autoCorrect: false, placeholderTextColor: "#404040", value: email, placeholder: "name@example.com", onChangeText: (v) => setEmail(v), textContentType: "emailAddress", keyboardType: "email-address", className: "px-3 text-[14] transform-none" })));
67
+ }, className: "bg-green-900 rounded-lg active:bg-green-600 hover:bg-green-600" }, /* @__PURE__ */ React__default.createElement(ButtonText, { className: "font-bold text-[15]" }, "Done"))))) : /* @__PURE__ */ React__default.createElement(Input, { variant: "underlined", className: " rounded-lg", size: "xl" }, /* @__PURE__ */ React__default.createElement(InputField, { type: "text", size: "xl", autoCapitalize: "none", autoCorrect: false, placeholderTextColor: "#404040", value: email, placeholder: "name@example.com", onChange: (event) => setEmail(event.nativeEvent.text), textContentType: "emailAddress", keyboardType: "email-address", className: "px-3 text-[14] transform-none" })));
68
68
  };export{AddPeopleByEmail as default};//# sourceMappingURL=AddByEmail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddByEmail.js","sources":["../../../src/screens/Peoples/AddByEmail.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect } from 'react';\nimport {\n Input,\n InputField,\n View,\n Text,\n VStack,\n Box,\n FormControl,\n Button,\n ButtonText,\n ButtonIcon,\n Icon,\n Divider,\n FlatList,\n HStack,\n Avatar,\n Image,\n Checkbox,\n ChevronLeftIcon,\n Heading,\n CheckIcon,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { StyleSheet, TouchableOpacity, Linking, Platform, Dimensions, SafeAreaView } from 'react-native';\nimport Colors from '../../constants/Colors';\nimport { NavigationRoutes } from '../../constants/routes';\nimport { AntDesign, Ionicons } from '@expo/vector-icons';\nimport VirtualizedScrollView from '../../components/VirtualizedScrollView';\nimport { useIsFocused } from '@react-navigation/native';\nimport { useSendOrganizationInvitationMutation } from 'common/graphql';\nimport { useDrawerLayout } from '../../hooks';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector } from 'react-redux';\nimport colors from 'tailwindcss/colors';\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\nconst screenHeight = Dimensions.get('screen').height;\n\nconst AddPeopleByEmail = ({ navigation, route }: any) => {\n const isFocused = useIsFocused();\n const { orgName } = useDrawerLayout();\n const user = useSelector(userSelector);\n const [contacts, setContacts] = useState([]);\n const [email, setEmail] = useState('');\n // const emailReg = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w\\w+)+$/;\n const emailReg = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const [emailSent, setEmailSent] = useState(false);\n const [sendOrganizationInvitationMutation, { data, loading, error }] = useSendOrganizationInvitationMutation({\n onCompleted: (res) => {\n console.log('org invitation res', JSON.stringify(res));\n if (res?.sendOrganizationInvitation) setEmailSent(true);\n },\n onError: (e) => {\n console.log('e', JSON.stringify(e));\n setEmailSent(false);\n },\n });\n\n useEffect(() => {\n return () => {\n setEmailSent(false);\n setEmail('');\n };\n }, []);\n\n useEffect(() => {\n if (isFocused) {\n }\n\n navigation.setOptions({\n headerShown: true,\n headerTitleAlign: 'left',\n headerTitleStyle: {},\n title: emailSent ? '' : 'Add by Email',\n headerLeft: (props: any) => (\n <TouchableOpacity style={{ paddingHorizontal: 10 }} onPress={() => navigation?.goBack()}>\n <Ionicons color=\"black\" name=\"chevron-back\" size={20} />\n </TouchableOpacity>\n ),\n headerRight: (props: any) => (\n <>\n {emailSent ? (\n <></>\n ) : (\n <Button\n className=\"mr-2\"\n disabled={email && emailReg.test(email) === true ? false : true}\n variant={'link'}\n onPress={() =>\n sendOrganizationInvitationMutation({\n variables: {\n request: {\n emails: [email],\n orgName: orgName,\n invitedBy: user?.profile?.name,\n sentInvitee: true,\n },\n },\n })\n }\n >\n <ButtonText\n className={`${email && emailReg.test(email) === true ? 'text-black' : 'text-gray-400'}`}\n >\n SEND\n </ButtonText>\n </Button>\n )}\n </>\n ),\n });\n }, [isFocused, navigation, email, orgName, user, emailSent]);\n\n return (\n <Box className=\"flex-1 bg-white\">\n {emailSent ? (\n <SafeAreaView style={{ flex: 1 }}>\n <VStack space={'lg'} className=\"py-5 flex-1 justify-between\">\n <Box className=\"text-center justify-center rounded-full\">\n {/* <CheckIcon size={10} mt=\"0.5\" color=\"emerald.500\" /> */}\n <Button className=\"rounded-full bg-green-100\" size={'lg'}>\n {/* <AntDesign name=\"check\" size={25} /> */}\n <ButtonIcon color={'#14532d'} as={CheckIcon} />\n </Button>\n </Box>\n <Heading className=\"text-center\">Invitation sent</Heading>\n <HStack className=\"flex-1 px-4 pr-10\" space={'sm'}>\n <Box>\n <AntDesign color=\"black\" name=\"adduser\" size={30} />\n </Box>\n <Box>\n <Text color={colors.black} className=\"font-bold\">\n {email}\n </Text>\n <Text>\n Invited as a member of {orgName}.They'll be able to receive and reply to messages by\n email untill they join.\n </Text>\n </Box>\n </HStack>\n <Box className=\"px-5\">\n <Button\n onPress={() => {\n setEmail('');\n navigation.goBack();\n }}\n className=\"bg-green-900 rounded-lg active:bg-green-600 hover:bg-green-600\"\n >\n <ButtonText className=\"font-bold text-[15]\">Done</ButtonText>\n </Button>\n </Box>\n </VStack>\n </SafeAreaView>\n ) : (\n <Input variant=\"underlined\" className=\"border border-gray-300\" size={'xl'}>\n <InputField\n type=\"text\"\n size=\"xl\"\n autoCapitalize={'none'}\n autoCorrect={false}\n placeholderTextColor={'#404040'}\n value={email}\n placeholder=\"name@example.com\"\n onChangeText={(v) => setEmail(v)}\n textContentType=\"emailAddress\"\n keyboardType=\"email-address\"\n className=\"px-3 text-[14] transform-none\"\n />\n </Input>\n // <Input\n // textTransform={'none'}\n // borderWidth={1}\n // borderColor={'coolGray.300'}\n // _focus={{ borderColor: 'coolGray.300' }}\n // py={4}\n // px={3}\n // _input={{ placeholderTextColor: '#404040', fontSize: 14 }}\n // variant=\"underlined\"\n // placeholder=\"name@example.com\"\n // value={email}\n // onChangeText={(v) => setEmail(v)}\n // textContentType=\"emailAddress\"\n // keyboardType=\"email-address\"\n // autoCapitalize=\"none\"\n // autoCorrect={false}\n // />\n )}\n {/* <View flex={1}>\n <VirtualizedScrollView>\n <VStack space=\"5\" pt={2}></VStack>\n </VirtualizedScrollView>\n </View> */}\n </Box>\n );\n};\n\nexport default AddPeopleByEmail;\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"AddByEmail.js","sources":["../../../src/screens/Peoples/AddByEmail.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect } from 'react';\nimport {\n Input,\n InputField,\n View,\n Text,\n VStack,\n Box,\n FormControl,\n Button,\n ButtonText,\n ButtonIcon,\n Icon,\n Divider,\n FlatList,\n HStack,\n Avatar,\n Image,\n Checkbox,\n ChevronLeftIcon,\n Heading,\n CheckIcon,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { StyleSheet, TouchableOpacity, Linking, Platform, Dimensions, SafeAreaView } from 'react-native';\nimport Colors from '../../constants/Colors';\nimport { NavigationRoutes } from '../../constants/routes';\nimport { AntDesign, Ionicons } from '@expo/vector-icons';\nimport VirtualizedScrollView from '../../components/VirtualizedScrollView';\nimport { useIsFocused } from '@react-navigation/native';\nimport { useSendOrganizationInvitationMutation } from 'common/graphql';\nimport { useDrawerLayout } from '../../hooks';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector } from 'react-redux';\nimport colors from 'tailwindcss/colors';\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\nconst screenHeight = Dimensions.get('screen').height;\n\nconst AddPeopleByEmail = ({ navigation, route }: any) => {\n const isFocused = useIsFocused();\n const { orgName } = useDrawerLayout();\n const user = useSelector(userSelector);\n const [contacts, setContacts] = useState([]);\n const [email, setEmail] = useState('');\n // const emailReg = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w\\w+)+$/;\n const emailReg = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n const [emailSent, setEmailSent] = useState(false);\n const [sendOrganizationInvitationMutation, { data, loading, error }] = useSendOrganizationInvitationMutation({\n onCompleted: (res) => {\n console.log('org invitation res', JSON.stringify(res));\n if (res?.sendOrganizationInvitation) setEmailSent(true);\n },\n onError: (e) => {\n console.log('e', JSON.stringify(e));\n setEmailSent(false);\n },\n });\n\n useEffect(() => {\n return () => {\n setEmailSent(false);\n setEmail('');\n };\n }, []);\n\n useEffect(() => {\n if (isFocused) {\n }\n\n navigation.setOptions({\n headerShown: true,\n headerTitleAlign: 'left',\n headerTitleStyle: {},\n title: emailSent ? '' : 'Add by Email',\n headerLeft: (props: any) => (\n <TouchableOpacity style={{ paddingHorizontal: 10 }} onPress={() => navigation?.goBack()}>\n <Ionicons color=\"black\" name=\"chevron-back\" size={20} />\n </TouchableOpacity>\n ),\n headerRight: (props: any) => (\n <>\n {emailSent ? (\n <></>\n ) : (\n <Button\n className=\"mr-2\"\n disabled={email && emailReg.test(email) === true ? false : true}\n variant={'link'}\n onPress={() =>\n sendOrganizationInvitationMutation({\n variables: {\n request: {\n emails: [email],\n orgName: orgName,\n invitedBy: user?.profile?.name,\n sentInvitee: true,\n },\n },\n })\n }\n >\n <ButtonText\n className={`${email && emailReg.test(email) === true ? 'text-black' : 'text-gray-400'}`}\n >\n SEND\n </ButtonText>\n </Button>\n )}\n </>\n ),\n });\n }, [isFocused, navigation, email, orgName, user, emailSent]);\n\n return (\n <Box className=\"flex-1 bg-white\">\n {emailSent ? (\n <SafeAreaView style={{ flex: 1 }}>\n <VStack space={'lg'} className=\"py-5 flex-1 justify-between\">\n <Box className=\"text-center justify-center rounded-full\">\n {/* <CheckIcon size={10} mt=\"0.5\" color=\"emerald.500\" /> */}\n <Button className=\"rounded-full bg-green-100\" size={'lg'}>\n {/* <AntDesign name=\"check\" size={25} /> */}\n <ButtonIcon color={'#14532d'} as={CheckIcon} />\n </Button>\n </Box>\n <Heading className=\"text-center\">Invitation sent</Heading>\n <HStack className=\"flex-1 px-4 pr-10\" space={'sm'}>\n <Box>\n <AntDesign color=\"black\" name=\"adduser\" size={30} />\n </Box>\n <Box>\n <Text color={colors.black} className=\"font-bold\">\n {email}\n </Text>\n <Text>\n Invited as a member of {orgName}.They'll be able to receive and reply to messages by\n email untill they join.\n </Text>\n </Box>\n </HStack>\n <Box className=\"px-5\">\n <Button\n onPress={() => {\n setEmail('');\n navigation.goBack();\n }}\n className=\"bg-green-900 rounded-lg active:bg-green-600 hover:bg-green-600\"\n >\n <ButtonText className=\"font-bold text-[15]\">Done</ButtonText>\n </Button>\n </Box>\n </VStack>\n </SafeAreaView>\n ) : (\n <Input variant=\"underlined\" className=\" rounded-lg\" size={'xl'}>\n <InputField\n type=\"text\"\n size=\"xl\"\n autoCapitalize={'none'}\n autoCorrect={false}\n placeholderTextColor={'#404040'}\n value={email}\n placeholder=\"name@example.com\"\n onChange={(event) => setEmail(event.nativeEvent.text)}\n textContentType=\"emailAddress\"\n keyboardType=\"email-address\"\n className=\"px-3 text-[14] transform-none\"\n />\n </Input>\n // <Input\n // textTransform={'none'}\n // borderWidth={1}\n // borderColor={'coolGray.300'}\n // _focus={{ borderColor: 'coolGray.300' }}\n // py={4}\n // px={3}\n // _input={{ placeholderTextColor: '#404040', fontSize: 14 }}\n // variant=\"underlined\"\n // placeholder=\"name@example.com\"\n // value={email}\n // onChangeText={(v) => setEmail(v)}\n // textContentType=\"emailAddress\"\n // keyboardType=\"email-address\"\n // autoCapitalize=\"none\"\n // autoCorrect={false}\n // />\n )}\n {/* <View flex={1}>\n <VirtualizedScrollView>\n <VStack space=\"5\" pt={2}></VStack>\n </VirtualizedScrollView>\n </View> */}\n </Box>\n );\n};\n\nexport default AddPeopleByEmail;\n"],"names":["React"],"mappings":"mtBAaoB,UAAA,CAAW,GAAI,CAAA,QAAQ,CAAE,CAAA;AACxB,UAAA,CAAW,GAAI,CAAA,QAAQ,CAAE,CAAA;AACzB,UAAA,CAAW,GAAI,CAAA,QAAQ,CAAE,CAAA;AAC9C,MAAM,mBAAmB,CAAC;AAAA,EACxB,UAAA;AAAA,EACA;AACF,CAAW,KAAA;AACT,EAAA,MAAM,YAAY,YAAa,EAAA;AAC/B,EAAM,MAAA;AAAA,IACJ;AAAA,MACE,eAAgB,EAAA;AACpB,EAAM,MAAA,IAAA,GAAO,YAAY,YAAY,CAAA;AACrC,EAAA,MAAM,CAAC,QAAU,EAAA,WAAW,CAAI,GAAA,QAAA,CAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA;AAErC,EAAA,MAAM,QAAW,GAAA,4BAAA;AACjB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,kCAAoC,EAAA;AAAA,IACzC,IAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACD,IAAI,qCAAsC,CAAA;AAAA,IACzC,aAAa,CAAO,GAAA,KAAA;AAClB,MAAA,OAAA,CAAQ,GAAI,CAAA,oBAAA,EAAsB,IAAK,CAAA,SAAA,CAAU,GAAG,CAAC,CAAA;AACrD,MAAA,IAAI,GAAK,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAA,0BAAA;AAA4B,QAAA,YAAA,CAAa,IAAI,CAAA;AAAA,KACxD;AAAA,IACA,SAAS,CAAK,CAAA,KAAA;AACZ,MAAA,OAAA,CAAQ,GAAI,CAAA,GAAA,EAAK,IAAK,CAAA,SAAA,CAAU,CAAC,CAAC,CAAA;AAClC,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA;AACpB,GACD,CAAA;AACD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,KAAK,CAAA;AAClB,MAAA,QAAA,CAAS,EAAE,CAAA;AAAA,KACb;AAAA,GACF,EAAG,EAAE,CAAA;AACL,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,UAAA,CAAW,UAAW,CAAA;AAAA,MACpB,WAAa,EAAA,IAAA;AAAA,MACb,gBAAkB,EAAA,MAAA;AAAA,MAClB,kBAAkB,EAAC;AAAA,MACnB,KAAA,EAAO,YAAY,EAAK,GAAA,cAAA;AAAA,MACxB,UAAY,EAAA,CAAC,KAAe,qBAAAA,cAAA,CAAA,aAAA,CAAC,oBAAiB,KAAO,EAAA;AAAA,QACnD,iBAAmB,EAAA;AAAA,OAClB,EAAA,OAAA,EAAS,MAAM,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,MAChB,EAAA,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAS,EAAA,EAAA,KAAA,EAAM,OAAQ,EAAA,IAAA,EAAK,cAAe,EAAA,IAAA,EAAM,IAAI,CAC1D,CAAA;AAAA,MACV,WAAA,EAAa,CAAC,KAAe,qBAAAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EACd,4BAAcA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,CAAA,mBAAOA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAU,EAAA,MAAA,EAAO,UAAU,KAAS,IAAA,QAAA,CAAS,IAAK,CAAA,KAAK,CAAM,KAAA,IAAA,GAAO,QAAQ,IAAM,EAAA,OAAA,EAAS,MAAQ,EAAA,OAAA,EAAS,MAAG;AA/DhK,QAAA,IAAA,EAAA;AA+DmK,QAAmC,OAAA,kCAAA,CAAA;AAAA,UAC5L,SAAW,EAAA;AAAA,YACT,OAAS,EAAA;AAAA,cACP,MAAA,EAAQ,CAAC,KAAK,CAAA;AAAA,cACd,OAAA;AAAA,cACA,SAAA,EAAA,CAAW,EAAM,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,OAAA,KAAN,IAAe,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA;AAAA,cAC1B,WAAa,EAAA;AAAA;AACf;AACF,SACD,CAAA;AAAA,OAAA,EAAA,kBACoBA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAW,EAAA,CAAA,EAAG,SAAS,QAAS,CAAA,IAAA,CAAK,KAAK,CAAA,KAAM,IAAO,GAAA,YAAA,GAAe,eAAmB,CAAA,CAAA,EAAA,EAAA,MAErG,CACJ,CACR;AAAA,KACX,CAAA;AAAA,GACH,EAAG,CAAC,SAAW,EAAA,UAAA,EAAY,OAAO,OAAS,EAAA,IAAA,EAAM,SAAS,CAAC,CAAA;AAC3D,EAAA,oDAAQ,GAAI,EAAA,EAAA,SAAA,EAAU,qBACX,SAAY,mBAAAA,cAAA,CAAA,aAAA,CAAC,gBAAa,KAAO,EAAA;AAAA,IACxC,IAAM,EAAA;AAAA,uBAESA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,KAAO,EAAA,IAAA,EAAM,WAAU,6BAC3B,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,6DAEVA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAU,EAAA,2BAAA,EAA4B,MAAM,IAEhD,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,KAAA,EAAO,WAAW,EAAI,EAAA,SAAA,EAAW,CACjD,CACJ,mBACCA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,SAAU,EAAA,aAAA,EAAA,EAAc,iBAAe,CAChD,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,SAAA,EAAU,qBAAoB,KAAO,EAAA,IAAA,EAAA,kBACxCA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,+CACI,SAAU,EAAA,EAAA,KAAA,EAAM,OAAQ,EAAA,IAAA,EAAK,WAAU,IAAM,EAAA,EAAA,EAAI,CACtD,CAAA,+CACC,GACG,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,KAAO,EAAA,SAAA,EAAU,WAChC,EAAA,EAAA,KACL,mBACCA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK,yBACsB,EAAA,OAAA,EAAQ,8EAEpC,CACJ,CACJ,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,OAAI,SAAU,EAAA,MAAA,EAAA,kBACVA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAS,MAAM;AACvC,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,UAAA,CAAW,MAAO,EAAA;AAAA,GACpB,EAAG,WAAU,gEACS,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,cAAW,SAAU,EAAA,qBAAA,EAAA,EAAsB,MAAI,CACpD,CACJ,CACJ,CACJ,CAAkB,mBAAAA,cAAA,CAAA,aAAA,CAAC,KAAM,EAAA,EAAA,OAAA,EAAQ,YAAa,EAAA,SAAA,EAAU,gBAAe,IAAM,EAAA,IAAA,EAAA,kBACxEA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,IAAK,EAAA,MAAA,EAAO,MAAK,IAAK,EAAA,cAAA,EAAgB,MAAQ,EAAA,WAAA,EAAa,KAAO,EAAA,oBAAA,EAAsB,WAAW,KAAO,EAAA,KAAA,EAAO,WAAY,EAAA,kBAAA,EAAmB,QAAU,EAAA,CAAA,KAAA,KAAS,SAAS,KAAM,CAAA,WAAA,CAAY,IAAI,CAAA,EAAG,eAAgB,EAAA,cAAA,EAAe,cAAa,eAAgB,EAAA,SAAA,EAAU,+BAAgC,EAAA,CAC3T,CAwBR,CAAA;AACR"}
@@ -1,77 +1,122 @@
1
- import React__default,{useState,useEffect}from'react';import {Button,ButtonText,Box,Input,InputField,VStack,FlatList,Text,HStack,Image,Avatar,AvatarFallbackText,Checkbox,CheckboxIndicator,CheckboxIcon,CheckIcon}from'@admin-layout/gluestack-ui-mobile';import {TouchableOpacity,Platform,Linking}from'react-native';import {useGetOrganizationSharableLinkQuery}from'common/graphql';import {Ionicons}from'@expo/vector-icons';import VirtualizedScrollView from'../../components/VirtualizedScrollView/VirtualizedScrollView.js';import {useIsFocused}from'@react-navigation/native';import*as Contacts from'expo-contacts';import {config}from'../../config/env-config.js';const AddFromContacts = ({
1
+ import React__default,{useState,useEffect}from'react';import {Button,ButtonText,Box,Input,InputSlot,InputField,Spinner,Text,FlatList,HStack,Avatar,AvatarImage,AvatarFallbackText,Checkbox,CheckboxIndicator,CheckboxIcon,CheckIcon}from'@admin-layout/gluestack-ui-mobile';import {TouchableOpacity,Platform,Linking,StyleSheet}from'react-native';import Colors from'../../constants/Colors.js';import {useGetOrganizationSharableLinkQuery}from'common/graphql';import {Ionicons,Feather}from'@expo/vector-icons';import {useIsFocused}from'@react-navigation/native';import*as Contacts from'expo-contacts';import {config}from'../../config/env-config.js';import {SafeAreaView}from'react-native-safe-area-context';const AddFromContacts = ({
2
2
  navigation,
3
3
  route
4
4
  }) => {
5
5
  const isFocused = useIsFocused();
6
6
  const [contacts, setContacts] = useState([]);
7
+ const [filteredContacts, setFilteredContacts] = useState([]);
7
8
  const [selectedContacts, setSelectedContacts] = useState([]);
9
+ const [searchQuery, setSearchQuery] = useState("");
10
+ const [loading, setLoading] = useState(true);
8
11
  const {
9
12
  data: organizationSharableLink
10
13
  } = useGetOrganizationSharableLinkQuery();
11
14
  useEffect(() => {
12
- }, [selectedContacts]);
15
+ if (searchQuery.trim() === "") {
16
+ setFilteredContacts(contacts);
17
+ } else {
18
+ const filtered = contacts.filter((contact) => {
19
+ var _a, _b, _c;
20
+ const fullName = `${contact.firstName || ""} ${contact.lastName || ""}`.toLowerCase();
21
+ const phoneNumber = ((_c = (_b = (_a = contact.phoneNumbers) == null ? void 0 : _a[0]) == null ? void 0 : _b.number) == null ? void 0 : _c.toLowerCase()) || "";
22
+ const query = searchQuery.toLowerCase();
23
+ return fullName.includes(query) || phoneNumber.includes(query);
24
+ });
25
+ setFilteredContacts(filtered);
26
+ }
27
+ }, [searchQuery, contacts]);
13
28
  useEffect(() => {
14
29
  (async () => {
15
- const {
16
- status
17
- } = await Contacts.requestPermissionsAsync();
18
- if (status === "granted") {
30
+ try {
31
+ setLoading(true);
19
32
  const {
20
- data
21
- } = await Contacts.getContactsAsync({
22
- fields: [Contacts.Fields.FirstName, Contacts.Fields.LastName, Contacts.Fields.PhoneNumbers, Contacts.Fields.Image]
23
- });
24
- if (data.length > 0) {
25
- const contacts2 = data;
26
- setContacts(contacts2);
33
+ status
34
+ } = await Contacts.requestPermissionsAsync();
35
+ if (status === "granted") {
36
+ const {
37
+ data
38
+ } = await Contacts.getContactsAsync({
39
+ fields: [Contacts.Fields.FirstName, Contacts.Fields.LastName, Contacts.Fields.PhoneNumbers, Contacts.Fields.Image, Contacts.Fields.ImageAvailable]
40
+ });
41
+ if (data.length > 0) {
42
+ const sortedContacts = data.sort((a, b) => {
43
+ const nameA = `${a.firstName || ""} ${a.lastName || ""}`.trim().toLowerCase();
44
+ const nameB = `${b.firstName || ""} ${b.lastName || ""}`.trim().toLowerCase();
45
+ return nameA.localeCompare(nameB);
46
+ });
47
+ const validContacts = sortedContacts.filter((contact) => contact.phoneNumbers && contact.phoneNumbers.length > 0);
48
+ console.log(`Total contacts with phone numbers: ${validContacts.length}`);
49
+ const contactsWithImages = validContacts.filter((contact) => contact.imageAvailable && contact.image);
50
+ console.log(`Contacts with images: ${contactsWithImages.length}`);
51
+ if (contactsWithImages.length > 0) {
52
+ console.log("Sample image data:", contactsWithImages[0].image);
53
+ }
54
+ setContacts(validContacts);
55
+ setFilteredContacts(validContacts);
56
+ }
27
57
  }
58
+ } catch (error) {
59
+ console.error("Error fetching contacts:", error);
60
+ } finally {
61
+ setLoading(false);
28
62
  }
29
63
  })();
30
64
  }, []);
31
65
  useEffect(() => {
32
- navigation.setOptions({
33
- headerShown: true,
34
- headerTitleAlign: "left",
35
- headerTitleStyle: {},
36
- headerLeft: (props) => /* @__PURE__ */ React__default.createElement(
37
- TouchableOpacity,
38
- {
39
- style: {
40
- paddingHorizontal: 10
41
- },
42
- onPress: () => navigation.goBack()
66
+ if (isFocused) {
67
+ navigation.setOptions({
68
+ headerShown: true,
69
+ headerTitleAlign: "left",
70
+ title: "Add from Contacts",
71
+ headerTitleStyle: {
72
+ fontWeight: "600"
43
73
  },
44
- /* @__PURE__ */ React__default.createElement(Ionicons, { color: "black", name: "chevron-back", size: 20 })
45
- ),
46
- headerRight: (props) => /* @__PURE__ */ React__default.createElement(Button, { className: "mr-2", onPress: () => sendInvitation(), disabled: selectedContacts.length > 0 ? false : true, variant: "link" }, /* @__PURE__ */ React__default.createElement(ButtonText, { className: `${selectedContacts.length > 0 ? "text-black" : "text-gray-500"}` }, "Send"))
47
- });
74
+ headerLeft: (props) => /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: {
75
+ paddingHorizontal: 10
76
+ }, onPress: () => navigation.goBack() }, /* @__PURE__ */ React__default.createElement(Ionicons, { color: Colors.slackBlack, name: "chevron-back", size: 20 })),
77
+ headerRight: (props) => /* @__PURE__ */ React__default.createElement(Button, { className: "mr-2", onPress: () => sendInvitation(), disabled: selectedContacts.length === 0, variant: "link" }, /* @__PURE__ */ React__default.createElement(ButtonText, { className: `${selectedContacts.length > 0 ? "text-black font-bold" : "text-gray-500"}` }, "Send"))
78
+ });
79
+ }
48
80
  }, [isFocused, navigation, selectedContacts]);
49
- const setSelectedContactsData = (item) => {
50
- let obj = {
81
+ const toggleContact = (item) => {
82
+ if (!item.phoneNumbers || item.phoneNumbers.length === 0)
83
+ return;
84
+ const contact = {
51
85
  id: item.id,
52
- name: item.firstName + " " + item.lastName,
86
+ name: `${item.firstName || ""} ${item.lastName || ""}`.trim(),
53
87
  mobile: item.phoneNumbers[0]
54
88
  };
55
- const resultArr = selectedContacts.filter((arrObj) => arrObj.id !== obj.id);
56
- if (resultArr.length === selectedContacts.length)
57
- resultArr.push(obj);
58
- setSelectedContacts(resultArr);
89
+ setSelectedContacts((prev) => {
90
+ const isSelected = prev.some((c) => c.id === contact.id);
91
+ if (isSelected) {
92
+ return prev.filter((c) => c.id !== contact.id);
93
+ } else {
94
+ return [...prev, contact];
95
+ }
96
+ });
97
+ };
98
+ const getInitials = (firstName, lastName) => {
99
+ const first = firstName ? firstName.charAt(0).toUpperCase() : "";
100
+ const last = lastName ? lastName.charAt(0).toUpperCase() : "";
101
+ return (first + last).substring(0, 2);
59
102
  };
60
103
  const renderContactList = ({
61
104
  item
62
105
  }) => {
63
- var _a, _b, _c, _d, _e;
64
- const title = (_b = (_a = item == null ? void 0 : item.firstName) != null ? _a : " " + (item == null ? void 0 : item.lastName)) != null ? _b : "";
65
- const matches = (_c = title == null ? void 0 : title.match(/\b(\w)/g)) != null ? _c : "";
66
- const acronym = (_e = (_d = matches == null ? void 0 : matches.join("")) == null ? void 0 : _d.substring(0, 2)) != null ? _e : "";
67
- return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { key: item.id, style: {
68
- marginTop: 5
69
- }, onPress: () => setSelectedContactsData(item) }, /* @__PURE__ */ React__default.createElement(Box, { className: "pl-4 pr-5 py-2" }, /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "justify-between items-center" }, /* @__PURE__ */ React__default.createElement(HStack, { className: "items-center" }, item.imageAvailable ? /* @__PURE__ */ React__default.createElement(Image, { size: "sm", source: {
106
+ var _a, _b;
107
+ const isSelected = selectedContacts.some((c) => c.id === item.id);
108
+ const hasPhoneNumber = item.phoneNumbers && item.phoneNumbers.length > 0;
109
+ const initials = getInitials(item.firstName, item.lastName);
110
+ if (!hasPhoneNumber)
111
+ return null;
112
+ return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { key: item.id, onPress: () => toggleContact(item), style: styles.contactItem, disabled: !hasPhoneNumber, activeOpacity: 0.7 }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "justify-between items-center w-full" }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "items-center space-x-3" }, item.imageAvailable && item.image && item.image.uri ? /* @__PURE__ */ React__default.createElement(Avatar, { size: "md", className: "bg-gray-400" }, /* @__PURE__ */ React__default.createElement(AvatarImage, { source: {
70
113
  uri: item.image.uri
71
- }, alt: item.firstName, className: "mx-2 px-2 py-2" }) : /* @__PURE__ */ React__default.createElement(Button, { className: "mx-2 px-2 py-2 bg-gray-500", size: "sm" }, /* @__PURE__ */ React__default.createElement(Avatar, { className: "bg-transparent", size: "sm" }, /* @__PURE__ */ React__default.createElement(AvatarFallbackText, { className: "text-white font-bold" }, acronym))), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { className: "color-gray-800 font-bold" }, item.firstName, " ", item.lastName), /* @__PURE__ */ React__default.createElement(Text, null, item.phoneNumbers[0].number))), /* @__PURE__ */ React__default.createElement(Checkbox, { onChange: () => setSelectedContactsData(item), value: item.id, isChecked: selectedContacts.filter((i) => i.id === item.id).length > 0 ? true : false, accessibilityLabel: item.firstName, "aria-label": item.firstName }, /* @__PURE__ */ React__default.createElement(CheckboxIndicator, null, /* @__PURE__ */ React__default.createElement(CheckboxIcon, { as: CheckIcon }))))));
114
+ }, alt: `${item.firstName || ""} ${item.lastName || ""}`.trim(), onError: (e) => console.log("Avatar image failed to load", e.nativeEvent.error), style: styles.avatarImage }), /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, initials)) : /* @__PURE__ */ React__default.createElement(Avatar, { size: "md", className: "bg-blue-500" }, /* @__PURE__ */ React__default.createElement(AvatarFallbackText, { style: styles.avatarText }, initials)), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { className: "text-gray-800 font-semibold text-base" }, item.firstName || "", " ", item.lastName || ""), /* @__PURE__ */ React__default.createElement(Text, { className: "text-gray-500 text-sm" }, ((_b = (_a = item.phoneNumbers) == null ? void 0 : _a[0]) == null ? void 0 : _b.number) || "No number"))), /* @__PURE__ */ React__default.createElement(Checkbox, { value: item.id, isChecked: isSelected, accessibilityLabel: `Select ${item.firstName}`, "aria-label": `Select ${item.firstName}` }, /* @__PURE__ */ React__default.createElement(CheckboxIndicator, { className: isSelected ? "bg-blue-500 border-blue-500" : "" }, /* @__PURE__ */ React__default.createElement(CheckboxIcon, { as: CheckIcon })))));
72
115
  };
73
116
  const sendInvitation = () => {
74
117
  var _a;
118
+ if (selectedContacts.length === 0)
119
+ return;
75
120
  const mobileNumbers = selectedContacts.map((i) => i.mobile.number);
76
121
  let numbers = "";
77
122
  mobileNumbers.forEach((phoneNumber) => {
@@ -79,46 +124,36 @@ import React__default,{useState,useEffect}from'react';import {Button,ButtonText,
79
124
  });
80
125
  numbers = numbers.slice(0, -1);
81
126
  Platform.OS === "ios" ? "&" : "?";
82
- const message = `Join me on ${config.APP_NAME} - it's faster, simpler way to work.Singup here from any device. ${(_a = organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink) != null ? _a : ""}`;
127
+ const message = `Join me on ${config.APP_NAME} - it's a faster, simpler way to work. Sign up here from any device: ${(_a = organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink) != null ? _a : ""}`;
83
128
  const url = Platform.OS === "android" ? `sms:${numbers}?body=${encodeURIComponent(message)}` : `sms:/open?addresses=${numbers}&body=${encodeURIComponent(message)}`;
84
129
  Linking.openURL(url);
85
130
  };
86
- return /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(Input, { className: "pl-4", variant: "underlined" }, /* @__PURE__ */ React__default.createElement(
87
- InputField,
88
- {
89
- type: "text",
90
- size: "xl",
91
- placeholderTextColor: "#404040",
92
- placeholder: "Search",
93
- onChange: ({
94
- nativeEvent: {
95
- eventCount,
96
- target,
97
- text
98
- }
99
- }) => {
100
- },
101
- autoCapitalize: "none",
102
- autoCorrect: false,
103
- className: "px-3 bg-gray-100 items-center text-black text-[14px]"
104
- }
105
- )), /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1" }, /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, null, /* @__PURE__ */ React__default.createElement(VStack, { space: "md", className: "pt-2" }, /* @__PURE__ */ React__default.createElement(
106
- FlatList,
107
- {
108
- style: {
109
- paddingHorizontal: 2
110
- },
111
- contentContainerStyle: {
112
- flex: 1
113
- },
114
- data: contacts && contacts.length > 0 ? contacts : [],
115
- renderItem: renderContactList,
116
- ListEmptyComponent: () => {
117
- return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: {
118
- marginTop: 5
119
- } }, /* @__PURE__ */ React__default.createElement(Box, { className: "bg-white py-2" }, /* @__PURE__ */ React__default.createElement(VStack, { space: "md" }, /* @__PURE__ */ React__default.createElement(Box, { className: "px-4 py-5" }, /* @__PURE__ */ React__default.createElement(Text, null, "No contact found")))));
120
- },
121
- key: "add-from-contacts-search-list"
122
- }
123
- )))));
124
- };export{AddFromContacts as default};//# sourceMappingURL=AddFromContacts.js.map
131
+ return /* @__PURE__ */ React__default.createElement(SafeAreaView, { style: styles.container }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(Box, { className: "px-4 py-2 bg-white" }, /* @__PURE__ */ React__default.createElement(Input, { size: "md", className: "bg-gray-100 rounded-lg" }, /* @__PURE__ */ React__default.createElement(InputSlot, null, /* @__PURE__ */ React__default.createElement(Feather, { name: "search", size: 16, color: "#9ca3af", style: {
132
+ marginLeft: 8
133
+ } })), /* @__PURE__ */ React__default.createElement(InputField, { placeholder: "Search contacts", placeholderTextColor: "#9ca3af", onChange: (event) => setSearchQuery(event.nativeEvent.text), value: searchQuery, autoCapitalize: "none", autoCorrect: false, className: "text-black" }), searchQuery ? /* @__PURE__ */ React__default.createElement(InputSlot, null, /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => setSearchQuery(""), style: {
134
+ marginRight: 8
135
+ } }, /* @__PURE__ */ React__default.createElement(Ionicons, { name: "close-circle", size: 16, color: "#9ca3af" }))) : null)), loading ? /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 justify-center items-center" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "large", color: Colors.blue }), /* @__PURE__ */ React__default.createElement(Text, { className: "mt-4 text-gray-500" }, "Loading contacts...")) : /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1" }, selectedContacts.length > 0 && /* @__PURE__ */ React__default.createElement(Box, { className: "px-4 py-2 bg-gray-50 border-b border-gray-200" }, /* @__PURE__ */ React__default.createElement(Text, { className: "text-sm text-gray-500" }, selectedContacts.length, " ", selectedContacts.length === 1 ? "contact" : "contacts", " ", "selected")), /* @__PURE__ */ React__default.createElement(FlatList, { data: filteredContacts, renderItem: renderContactList, keyExtractor: (item) => item.id, contentContainerStyle: styles.listContainer, ListEmptyComponent: () => /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 justify-center items-center py-8" }, /* @__PURE__ */ React__default.createElement(Feather, { name: "users", size: 48, color: "#d1d5db" }), /* @__PURE__ */ React__default.createElement(Text, { className: "text-center text-gray-500 mt-4" }, searchQuery ? "No matching contacts found" : "No contacts found")) }))));
136
+ };
137
+ const styles = StyleSheet.create({
138
+ container: {
139
+ flex: 1,
140
+ backgroundColor: "white"
141
+ },
142
+ listContainer: {
143
+ flexGrow: 1
144
+ },
145
+ contactItem: {
146
+ paddingHorizontal: 16,
147
+ paddingVertical: 12,
148
+ borderBottomWidth: 1,
149
+ borderBottomColor: "#f3f4f6"
150
+ },
151
+ avatarText: {
152
+ color: "white",
153
+ fontWeight: "600"
154
+ },
155
+ avatarImage: {
156
+ width: "100%",
157
+ height: "100%"
158
+ }
159
+ });export{AddFromContacts as default};//# sourceMappingURL=AddFromContacts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddFromContacts.js","sources":["../../../src/screens/Peoples/AddFromContacts.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect } from 'react';\nimport {\n Input,\n InputField,\n View,\n Text,\n VStack,\n Box,\n FormControl,\n Button,\n ButtonText,\n CheckIcon,\n FlatList,\n HStack,\n Avatar,\n AvatarImage,\n AvatarFallbackText,\n Image,\n Checkbox,\n CheckboxIndicator,\n CheckboxIcon,\n Textarea,\n TextareaInput,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { StyleSheet, TouchableOpacity, Linking, Platform } from 'react-native';\nimport Colors from '../../constants/Colors';\nimport colors from 'tailwindcss/colors';\nimport { useGetOrganizationSharableLinkQuery, useAddChannelMutation, useGetChannelsByUserQuery } from 'common/graphql';\nimport { NavigationRoutes } from '../../constants/routes';\nimport { AntDesign, Ionicons } from '@expo/vector-icons';\nimport VirtualizedScrollView from '../../components/VirtualizedScrollView';\nimport { useIsFocused } from '@react-navigation/native';\nimport * as Contacts from 'expo-contacts';\nimport { config } from '../../config';\n\nconst AddFromContacts = ({ navigation, route }: any) => {\n const isFocused = useIsFocused();\n const [contacts, setContacts] = useState([]);\n const [selectedContacts, setSelectedContacts] = useState<any>([]);\n const { data: organizationSharableLink } = useGetOrganizationSharableLinkQuery();\n\n useEffect(() => {}, [selectedContacts]);\n\n useEffect(() => {\n (async () => {\n const { status } = await Contacts.requestPermissionsAsync();\n if (status === 'granted') {\n const { data } = await Contacts.getContactsAsync({\n fields: [\n Contacts.Fields.FirstName,\n Contacts.Fields.LastName,\n Contacts.Fields.PhoneNumbers,\n Contacts.Fields.Image,\n ],\n // fields: [Contacts.Fields.Emails, Contacts.PHONE_NUMBERS, Contacts.IMAGE],\n });\n\n if (data.length > 0) {\n const contacts: any = data;\n setContacts(contacts);\n }\n }\n })();\n }, []);\n\n useEffect(() => {\n if (isFocused) {\n }\n\n navigation.setOptions({\n headerShown: true,\n headerTitleAlign: 'left',\n headerTitleStyle: {},\n headerLeft: (props: any) => (\n <TouchableOpacity\n style={{ paddingHorizontal: 10 }}\n onPress={() => navigation.goBack()}\n // onPress={() => navigation.navigate(\"MainStack\",{screen:NavigationRoutes.Home, params: { orgName: route?.params?.orgName }})}\n >\n <Ionicons color=\"black\" name=\"chevron-back\" size={20} />\n </TouchableOpacity>\n ),\n headerRight: (props: any) => (\n <Button\n className=\"mr-2\"\n onPress={() => sendInvitation()}\n disabled={selectedContacts.length > 0 ? false : true}\n variant={'link'}\n >\n <ButtonText className={`${selectedContacts.length > 0 ? 'text-black' : 'text-gray-500'}`}>\n Send\n </ButtonText>\n </Button>\n ),\n });\n }, [isFocused, navigation, selectedContacts]);\n\n const setSelectedContactsData = (item: any) => {\n let obj = { id: item.id, name: item.firstName + ' ' + item.lastName, mobile: item.phoneNumbers[0] };\n const resultArr = selectedContacts.filter((arrObj: any) => arrObj.id !== obj.id);\n if (resultArr.length === selectedContacts.length) resultArr.push(obj);\n\n setSelectedContacts(resultArr);\n };\n\n const renderContactList = ({ item }: any) => {\n const title = item?.firstName ?? '' + ' ' + item?.lastName ?? '';\n const matches: any = title?.match(/\\b(\\w)/g) ?? '';\n const acronym: any = matches?.join('')?.substring(0, 2) ?? '';\n return (\n <TouchableOpacity key={item.id} style={{ marginTop: 5 }} onPress={() => setSelectedContactsData(item)}>\n <Box className=\"pl-4 pr-5 py-2\">\n <HStack space={'sm'} className=\"justify-between items-center\">\n <HStack className=\"items-center\">\n {item.imageAvailable ? (\n <Image\n size=\"sm\"\n source={{ uri: item.image.uri }}\n alt={item.firstName}\n className=\"mx-2 px-2 py-2\"\n />\n ) : (\n <Button className=\"mx-2 px-2 py-2 bg-gray-500\" size={'sm'}>\n <Avatar className=\"bg-transparent\" size={'sm'}>\n <AvatarFallbackText className=\"text-white font-bold\">\n {acronym}\n </AvatarFallbackText>\n </Avatar>\n </Button>\n )}\n\n <Box>\n <Text className=\"color-gray-800 font-bold\">\n {item.firstName} {item.lastName}\n </Text>\n <Text>{item.phoneNumbers[0].number}</Text>\n </Box>\n </HStack>\n\n <Checkbox\n onChange={() => setSelectedContactsData(item)}\n value={item.id}\n isChecked={selectedContacts.filter((i: any) => i.id === item.id).length > 0 ? true : false}\n accessibilityLabel={item.firstName}\n aria-label={item.firstName}\n >\n <CheckboxIndicator>\n <CheckboxIcon as={CheckIcon} />\n </CheckboxIndicator>\n </Checkbox>\n </HStack>\n </Box>\n </TouchableOpacity>\n );\n };\n\n const sendInvitation = () => {\n const mobileNumbers = selectedContacts.map((i: any) => i.mobile.number);\n let numbers = '';\n mobileNumbers.forEach((phoneNumber: string) => {\n numbers += `${phoneNumber.replace(/\\s/g, '')},`;\n });\n numbers = numbers.slice(0, -1);\n const smtDivider = Platform.OS === 'ios' ? '&' : '?';\n\n const message = `Join me on ${\n config.APP_NAME\n } - it's faster, simpler way to work.Singup here from any device. ${\n organizationSharableLink?.getOrganizationSharableLink ?? ''\n }`;\n // Linking.openURL(`sms:&addresses=${mobileNumbers}${smtDivider}body=${message}`);\n const url =\n Platform.OS === 'android'\n ? `sms:${numbers}?body=${encodeURIComponent(message)}`\n : `sms:/open?addresses=${numbers}&body=${encodeURIComponent(message)}`;\n Linking.openURL(url);\n };\n\n return (\n <Box className=\"flex-1 bg-white\">\n <Input className=\"pl-4\" variant=\"underlined\">\n <InputField\n //autoFocus={true}\n type=\"text\"\n size=\"xl\"\n placeholderTextColor={'#404040'}\n placeholder=\"Search\"\n onChange={({ nativeEvent: { eventCount, target, text } }) => {}}\n autoCapitalize={'none'}\n autoCorrect={false}\n className=\"px-3 bg-gray-100 items-center text-black text-[14px]\"\n />\n </Input>\n {/* \n <Textarea\n h={'$10'}\n bg={'$coolGray100'}\n // py={4}\n px={'$3'}\n >\n <TextareaInput placeholderTextColor={'#404040'} fontSize={14} placeholder=\"Search...\" />\n </Textarea> */}\n <Box className=\"flex-1\">\n <VirtualizedScrollView>\n <VStack space=\"md\" className=\"pt-2\">\n <FlatList\n style={{ paddingHorizontal: 2 }}\n contentContainerStyle={{\n flex: 1,\n }}\n data={contacts && contacts.length > 0 ? contacts : []}\n // data={[]}\n renderItem={renderContactList}\n ListEmptyComponent={() => {\n return (\n <TouchableOpacity style={{ marginTop: 5 }}>\n <Box className=\"bg-white py-2\">\n <VStack space=\"md\">\n <Box className=\"px-4 py-5\">\n <Text>No contact found</Text>\n </Box>\n </VStack>\n </Box>\n </TouchableOpacity>\n );\n }}\n key={'add-from-contacts-search-list'}\n />\n </VStack>\n </VirtualizedScrollView>\n </Box>\n </Box>\n );\n};\n\nexport default AddFromContacts;\n"],"names":["contacts","React"],"mappings":"ipBAYA,MAAM,kBAAkB,CAAC;AAAA,EACvB,UAAA;AAAA,EACA;AACF,CAAW,KAAA;AACT,EAAA,MAAM,YAAY,YAAa,EAAA;AAC/B,EAAA,MAAM,CAAC,QAAU,EAAA,WAAW,CAAI,GAAA,QAAA,CAAS,EAAE,CAAA;AAC3C,EAAA,MAAM,CAAC,gBAAkB,EAAA,mBAAmB,CAAI,GAAA,QAAA,CAAc,EAAE,CAAA;AAChE,EAAM,MAAA;AAAA,IACJ,IAAM,EAAA;AAAA,MACJ,mCAAoC,EAAA;AACxC,EAAA,SAAA,CAAU,MAAM;AAAA,GAAC,EAAG,CAAC,gBAAgB,CAAC,CAAA;AACtC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,CAAC,YAAY;AACX,MAAM,MAAA;AAAA,QACJ;AAAA,OACF,GAAI,MAAM,QAAA,CAAS,uBAAwB,EAAA;AAC3C,MAAA,IAAI,WAAW,SAAW,EAAA;AACxB,QAAM,MAAA;AAAA,UACJ;AAAA,SACF,GAAI,MAAM,QAAA,CAAS,gBAAiB,CAAA;AAAA,UAClC,MAAQ,EAAA,CAAC,QAAS,CAAA,MAAA,CAAO,SAAW,EAAA,QAAA,CAAS,MAAO,CAAA,QAAA,EAAU,QAAS,CAAA,MAAA,CAAO,YAAc,EAAA,QAAA,CAAS,OAAO,KAAK;AAAA,SAElH,CAAA;AACD,QAAI,IAAA,IAAA,CAAK,SAAS,CAAG,EAAA;AACnB,UAAA,MAAMA,SAAgB,GAAA,IAAA;AACtB,UAAA,WAAA,CAAYA,SAAQ,CAAA;AAAA;AACtB;AACF,KACC,GAAA;AAAA,GACL,EAAG,EAAE,CAAA;AACL,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,UAAA,CAAW,UAAW,CAAA;AAAA,MACpB,WAAa,EAAA,IAAA;AAAA,MACb,gBAAkB,EAAA,MAAA;AAAA,MAClB,kBAAkB,EAAC;AAAA,MACnB,UAAA,EAAY,CAAC,KAAe,qBAAAC,cAAA,CAAA,aAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UAAiB,KAAO,EAAA;AAAA,YACnD,iBAAmB,EAAA;AAAA,WACrB;AAAA,UAAG,OAAA,EAAS,MAAM,UAAA,CAAW,MAAO;AAAA,SAAA;AAAA,qDAGrB,QAAS,EAAA,EAAA,KAAA,EAAM,SAAQ,IAAK,EAAA,cAAA,EAAe,MAAM,EAAI,EAAA;AAAA,OAC1D;AAAA,MACV,WAAa,EAAA,CAAC,KAAe,qBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,SAAA,EAAU,MAAO,EAAA,OAAA,EAAS,MAAM,cAAA,EAAkB,EAAA,QAAA,EAAU,gBAAiB,CAAA,MAAA,GAAS,CAAI,GAAA,KAAA,GAAQ,IAAM,EAAA,OAAA,EAAS,MACxI,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,SAAA,EAAW,CAAG,EAAA,gBAAA,CAAiB,MAAS,GAAA,CAAA,GAAI,YAAe,GAAA,eAAA,CAAA,CAAA,EAAA,EAAmB,MAE1F,CACJ;AAAA,KACX,CAAA;AAAA,GACA,EAAA,CAAC,SAAW,EAAA,UAAA,EAAY,gBAAgB,CAAC,CAAA;AAC5C,EAAM,MAAA,uBAAA,GAA0B,CAAC,IAAc,KAAA;AAC7C,IAAA,IAAI,GAAM,GAAA;AAAA,MACR,IAAI,IAAK,CAAA,EAAA;AAAA,MACT,IAAM,EAAA,IAAA,CAAK,SAAY,GAAA,GAAA,GAAM,IAAK,CAAA,QAAA;AAAA,MAClC,MAAA,EAAQ,KAAK,YAAa,CAAA,CAAA;AAAA,KAC5B;AACA,IAAM,MAAA,SAAA,GAAY,iBAAiB,MAAO,CAAA,CAAC,WAAgB,MAAO,CAAA,EAAA,KAAO,IAAI,EAAE,CAAA;AAC/E,IAAI,IAAA,SAAA,CAAU,WAAW,gBAAiB,CAAA,MAAA;AAAQ,MAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AACpE,IAAA,mBAAA,CAAoB,SAAS,CAAA;AAAA,GAC/B;AACA,EAAA,MAAM,oBAAoB,CAAC;AAAA,IACzB;AAAA,GACS,KAAA;AA1Eb,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA2EI,IAAA,MAAM,SAAQ,EAAM,GAAA,CAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,SAAA,KAAN,YAAmB,GAAW,IAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,cAApC,IAAgD,GAAA,EAAA,GAAA,EAAA;AAC9D,IAAA,MAAM,OAAe,GAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,KAAM,CAAA,SAAA,CAAA,KAAb,IAA2B,GAAA,EAAA,GAAA,EAAA;AAChD,IAAM,MAAA,OAAA,GAAA,CAAe,8CAAS,IAAK,CAAA,EAAA,CAAA,KAAd,mBAAmB,SAAU,CAAA,CAAA,EAAG,OAAhC,IAAsC,GAAA,EAAA,GAAA,EAAA;AAC3D,IAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EAAiB,GAAK,EAAA,IAAA,CAAK,IAAI,KAAO,EAAA;AAAA,MAC5C,SAAW,EAAA;AAAA,KACb,EAAG,OAAS,EAAA,MAAM,uBAAwB,CAAA,IAAI,CAClC,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,gBACX,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,KAAA,EAAO,MAAM,SAAU,EAAA,8BAAA,EAAA,kBAC1BA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAU,EAAA,cAAA,EAAA,EACb,IAAK,CAAA,cAAA,mBAAkBA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,IAAK,EAAA,IAAA,EAAK,MAAQ,EAAA;AAAA,MAC9D,GAAA,EAAK,KAAK,KAAM,CAAA;AAAA,OACf,GAAK,EAAA,IAAA,CAAK,WAAW,SAAU,EAAA,gBAAA,EAAiB,oBAAMA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,WAAU,4BAA6B,EAAA,IAAA,EAAM,wBACpFA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,WAAU,gBAAiB,EAAA,IAAA,EAAM,wBACpCA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,EAAmB,SAAU,EAAA,sBAAA,EAAA,EACzB,OACL,CACJ,CACJ,mBAEHA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,+CACI,IAAK,EAAA,EAAA,SAAA,EAAU,8BACX,IAAK,CAAA,SAAA,EAAU,KAAE,IAAK,CAAA,QAC3B,mBACCA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAM,KAAK,YAAa,CAAA,CAAA,CAAA,CAAG,MAAO,CACvC,CACJ,CAEA,kBAAAA,cAAA,CAAA,aAAA,CAAC,YAAS,QAAU,EAAA,MAAM,wBAAwB,IAAI,CAAA,EAAG,OAAO,IAAK,CAAA,EAAA,EAAI,WAAW,gBAAiB,CAAA,MAAA,CAAO,CAAC,CAAW,KAAA,CAAA,CAAE,OAAO,IAAK,CAAA,EAAE,CAAE,CAAA,MAAA,GAAS,IAAI,IAAO,GAAA,KAAA,EAAO,oBAAoB,IAAK,CAAA,SAAA,EAAW,cAAY,IAAK,CAAA,SAAA,EAAA,+CACrN,iBACG,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,gBAAa,EAAI,EAAA,SAAA,EAAW,CACjC,CACJ,CACJ,CACJ,CACJ,CAAA;AAAA,GACV;AACA,EAAA,MAAM,iBAAiB,MAAM;AA/G/B,IAAA,IAAA,EAAA;AAgHI,IAAA,MAAM,gBAAgB,gBAAiB,CAAA,GAAA,CAAI,CAAC,CAAW,KAAA,CAAA,CAAE,OAAO,MAAM,CAAA;AACtE,IAAA,IAAI,OAAU,GAAA,EAAA;AACd,IAAc,aAAA,CAAA,OAAA,CAAQ,CAAC,WAAwB,KAAA;AAC7C,MAAA,OAAA,IAAW,CAAG,EAAA,WAAA,CAAY,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA,CAAA,CAAA,CAAA;AAAA,KAC5C,CAAA;AACD,IAAU,OAAA,GAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA;AAC7B,IAAmB,QAAA,CAAS,EAAO,KAAA,KAAA,GAAQ,GAAM,GAAA;AACjD,IAAA,MAAM,UAAU,CAAc,WAAA,EAAA,MAAA,CAAO,QAA4E,CAAA,iEAAA,EAAA,CAAA,EAAA,GAAA,wBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,wBAAA,CAA0B,gCAA1B,IAAyD,GAAA,EAAA,GAAA,EAAA,CAAA,CAAA;AAE1K,IAAA,MAAM,GAAM,GAAA,QAAA,CAAS,EAAO,KAAA,SAAA,GAAY,CAAO,IAAA,EAAA,OAAA,CAAA,MAAA,EAAgB,kBAAmB,CAAA,OAAO,CAAM,CAAA,CAAA,GAAA,CAAA,oBAAA,EAAuB,OAAgB,CAAA,MAAA,EAAA,kBAAA,CAAmB,OAAO,CAAA,CAAA,CAAA;AAChK,IAAA,OAAA,CAAQ,QAAQ,GAAG,CAAA;AAAA,GACrB;AACA,EAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,OAAI,SAAU,EAAA,iBAAA,EAAA,+CACX,KAAM,EAAA,EAAA,SAAA,EAAU,MAAO,EAAA,OAAA,EAAQ,YAC5B,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MAEX,IAAK,EAAA,MAAA;AAAA,MAAO,IAAK,EAAA,IAAA;AAAA,MAAK,oBAAsB,EAAA,SAAA;AAAA,MAAW,WAAY,EAAA,QAAA;AAAA,MAAS,UAAU,CAAC;AAAA,QACrF,WAAa,EAAA;AAAA,UACX,UAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA;AACF,OACI,KAAA;AAAA,OAAC;AAAA,MAAG,cAAgB,EAAA,MAAA;AAAA,MAAQ,WAAa,EAAA,KAAA;AAAA,MAAO,SAAU,EAAA;AAAA;AAAA,GAC1D,CAAA,kBAUCA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,SAAU,EAAA,QAAA,EAAA,kBACVA,cAAA,CAAA,aAAA,CAAA,qBAAA,EAAA,IAAA,kBACIA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,KAAM,EAAA,IAAA,EAAK,WAAU,MACzB,EAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MAAS,KAAO,EAAA;AAAA,QAC7B,iBAAmB,EAAA;AAAA,OACrB;AAAA,MAAG,qBAAuB,EAAA;AAAA,QACxB,IAAM,EAAA;AAAA,OACR;AAAA,MAAG,MAAM,QAAY,IAAA,QAAA,CAAS,MAAS,GAAA,CAAA,GAAI,WAAW,EAAC;AAAA,MAEvD,UAAY,EAAA,iBAAA;AAAA,MAAmB,oBAAoB,MAAM;AACvD,QAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,oBAAiB,KAAO,EAAA;AAAA,UAC9B,SAAW,EAAA;AAAA,6BAEgBA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,WAAU,eACX,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAO,KAAM,EAAA,IAAA,EAAA,+CACT,GAAI,EAAA,EAAA,SAAA,EAAU,+BACVA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK,kBAAgB,CAC1B,CACJ,CACJ,CACJ,CAAA;AAAA,OAC1B;AAAA,MAAG,GAAK,EAAA;AAAA;AAAA,GACE,CACJ,CACJ,CACJ,CAAA;AACR"}
1
+ {"version":3,"file":"AddFromContacts.js","sources":["../../../src/screens/Peoples/AddFromContacts.tsx"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport {\n Input,\n InputField,\n View,\n Text,\n VStack,\n Box,\n Button,\n ButtonText,\n CheckIcon,\n FlatList,\n HStack,\n Avatar,\n AvatarImage,\n AvatarFallbackText,\n Image,\n Checkbox,\n CheckboxIndicator,\n CheckboxIcon,\n Heading,\n Spinner,\n InputSlot,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { StyleSheet, TouchableOpacity, Linking, Platform } from 'react-native';\nimport Colors from '../../constants/Colors';\nimport { useGetOrganizationSharableLinkQuery } from 'common/graphql';\nimport { AntDesign, Ionicons, Feather } from '@expo/vector-icons';\nimport VirtualizedScrollView from '../../components/VirtualizedScrollView';\nimport { useIsFocused } from '@react-navigation/native';\nimport * as Contacts from 'expo-contacts';\nimport { config } from '../../config';\nimport { SafeAreaView } from 'react-native-safe-area-context';\n\nconst AddFromContacts = ({ navigation, route }: any) => {\n const isFocused = useIsFocused();\n const [contacts, setContacts] = useState<any[]>([]);\n const [filteredContacts, setFilteredContacts] = useState<any[]>([]);\n const [selectedContacts, setSelectedContacts] = useState<any>([]);\n const [searchQuery, setSearchQuery] = useState('');\n const [loading, setLoading] = useState(true);\n const { data: organizationSharableLink } = useGetOrganizationSharableLinkQuery();\n\n useEffect(() => {\n if (searchQuery.trim() === '') {\n setFilteredContacts(contacts);\n } else {\n const filtered = contacts.filter((contact) => {\n const fullName = `${contact.firstName || ''} ${contact.lastName || ''}`.toLowerCase();\n const phoneNumber = contact.phoneNumbers?.[0]?.number?.toLowerCase() || '';\n const query = searchQuery.toLowerCase();\n return fullName.includes(query) || phoneNumber.includes(query);\n });\n setFilteredContacts(filtered);\n }\n }, [searchQuery, contacts]);\n\n useEffect(() => {\n (async () => {\n try {\n setLoading(true);\n const { status } = await Contacts.requestPermissionsAsync();\n if (status === 'granted') {\n const { data } = await Contacts.getContactsAsync({\n fields: [\n Contacts.Fields.FirstName,\n Contacts.Fields.LastName,\n Contacts.Fields.PhoneNumbers,\n Contacts.Fields.Image,\n Contacts.Fields.ImageAvailable,\n ],\n });\n\n if (data.length > 0) {\n // Sort contacts alphabetically by name\n const sortedContacts = data.sort((a, b) => {\n const nameA = `${a.firstName || ''} ${a.lastName || ''}`.trim().toLowerCase();\n const nameB = `${b.firstName || ''} ${b.lastName || ''}`.trim().toLowerCase();\n return nameA.localeCompare(nameB);\n });\n\n // Filter out contacts without phone numbers\n const validContacts = sortedContacts.filter(\n (contact) => contact.phoneNumbers && contact.phoneNumbers.length > 0,\n );\n\n // Log information about contact images\n console.log(`Total contacts with phone numbers: ${validContacts.length}`);\n const contactsWithImages = validContacts.filter(\n (contact) => contact.imageAvailable && contact.image,\n );\n console.log(`Contacts with images: ${contactsWithImages.length}`);\n if (contactsWithImages.length > 0) {\n console.log('Sample image data:', contactsWithImages[0].image);\n }\n\n setContacts(validContacts);\n setFilteredContacts(validContacts);\n }\n }\n } catch (error) {\n console.error('Error fetching contacts:', error);\n } finally {\n setLoading(false);\n }\n })();\n }, []);\n\n useEffect(() => {\n if (isFocused) {\n navigation.setOptions({\n headerShown: true,\n headerTitleAlign: 'left',\n title: 'Add from Contacts',\n headerTitleStyle: {\n fontWeight: '600',\n },\n headerLeft: (props: any) => (\n <TouchableOpacity style={{ paddingHorizontal: 10 }} onPress={() => navigation.goBack()}>\n <Ionicons color={Colors.slackBlack} name=\"chevron-back\" size={20} />\n </TouchableOpacity>\n ),\n headerRight: (props: any) => (\n <Button\n className=\"mr-2\"\n onPress={() => sendInvitation()}\n disabled={selectedContacts.length === 0}\n variant={'link'}\n >\n <ButtonText\n className={`${selectedContacts.length > 0 ? 'text-black font-bold' : 'text-gray-500'}`}\n >\n Send\n </ButtonText>\n </Button>\n ),\n });\n }\n }, [isFocused, navigation, selectedContacts]);\n\n const toggleContact = (item: any) => {\n if (!item.phoneNumbers || item.phoneNumbers.length === 0) return;\n\n const contact = {\n id: item.id,\n name: `${item.firstName || ''} ${item.lastName || ''}`.trim(),\n mobile: item.phoneNumbers[0],\n };\n\n setSelectedContacts((prev) => {\n const isSelected = prev.some((c: any) => c.id === contact.id);\n if (isSelected) {\n return prev.filter((c: any) => c.id !== contact.id);\n } else {\n return [...prev, contact];\n }\n });\n };\n\n const getInitials = (firstName?: string, lastName?: string) => {\n const first = firstName ? firstName.charAt(0).toUpperCase() : '';\n const last = lastName ? lastName.charAt(0).toUpperCase() : '';\n return (first + last).substring(0, 2);\n };\n\n const renderContactList = ({ item }: any) => {\n const isSelected = selectedContacts.some((c: any) => c.id === item.id);\n const hasPhoneNumber = item.phoneNumbers && item.phoneNumbers.length > 0;\n const initials = getInitials(item.firstName, item.lastName);\n\n if (!hasPhoneNumber) return null;\n\n return (\n <TouchableOpacity\n key={item.id}\n onPress={() => toggleContact(item)}\n style={styles.contactItem}\n disabled={!hasPhoneNumber}\n activeOpacity={0.7}\n >\n <HStack space=\"md\" className=\"justify-between items-center w-full\">\n <HStack space=\"md\" className=\"items-center space-x-3\">\n {item.imageAvailable && item.image && item.image.uri ? (\n <Avatar size=\"md\" className=\"bg-gray-400\">\n <AvatarImage\n source={{ uri: item.image.uri }}\n alt={`${item.firstName || ''} ${item.lastName || ''}`.trim()}\n onError={(e) => console.log('Avatar image failed to load', e.nativeEvent.error)}\n style={styles.avatarImage}\n />\n <AvatarFallbackText>{initials}</AvatarFallbackText>\n </Avatar>\n ) : (\n <Avatar size=\"md\" className=\"bg-blue-500\">\n <AvatarFallbackText style={styles.avatarText}>{initials}</AvatarFallbackText>\n </Avatar>\n )}\n\n <Box>\n <Text className=\"text-gray-800 font-semibold text-base\">\n {item.firstName || ''} {item.lastName || ''}\n </Text>\n <Text className=\"text-gray-500 text-sm\">\n {item.phoneNumbers?.[0]?.number || 'No number'}\n </Text>\n </Box>\n </HStack>\n\n <Checkbox\n value={item.id}\n isChecked={isSelected}\n accessibilityLabel={`Select ${item.firstName}`}\n aria-label={`Select ${item.firstName}`}\n >\n <CheckboxIndicator className={isSelected ? 'bg-blue-500 border-blue-500' : ''}>\n <CheckboxIcon as={CheckIcon} />\n </CheckboxIndicator>\n </Checkbox>\n </HStack>\n </TouchableOpacity>\n );\n };\n\n const sendInvitation = () => {\n if (selectedContacts.length === 0) return;\n\n const mobileNumbers = selectedContacts.map((i: any) => i.mobile.number);\n let numbers = '';\n mobileNumbers.forEach((phoneNumber: string) => {\n numbers += `${phoneNumber.replace(/\\s/g, '')},`;\n });\n numbers = numbers.slice(0, -1);\n const smtDivider = Platform.OS === 'ios' ? '&' : '?';\n\n const message = `Join me on ${\n config.APP_NAME\n } - it's a faster, simpler way to work. Sign up here from any device: ${\n organizationSharableLink?.getOrganizationSharableLink ?? ''\n }`;\n\n const url =\n Platform.OS === 'android'\n ? `sms:${numbers}?body=${encodeURIComponent(message)}`\n : `sms:/open?addresses=${numbers}&body=${encodeURIComponent(message)}`;\n Linking.openURL(url);\n };\n\n return (\n <SafeAreaView style={styles.container}>\n <Box className=\"flex-1 bg-white\">\n <Box className=\"px-4 py-2 bg-white\">\n <Input size=\"md\" className=\"bg-gray-100 rounded-lg\">\n <InputSlot>\n <Feather name=\"search\" size={16} color=\"#9ca3af\" style={{ marginLeft: 8 }} />\n </InputSlot>\n <InputField\n placeholder=\"Search contacts\"\n placeholderTextColor=\"#9ca3af\"\n onChange={(event) => setSearchQuery(event.nativeEvent.text)}\n value={searchQuery}\n autoCapitalize=\"none\"\n autoCorrect={false}\n className=\"text-black\"\n />\n {searchQuery ? (\n <InputSlot>\n <TouchableOpacity onPress={() => setSearchQuery('')} style={{ marginRight: 8 }}>\n <Ionicons name=\"close-circle\" size={16} color=\"#9ca3af\" />\n </TouchableOpacity>\n </InputSlot>\n ) : null}\n </Input>\n </Box>\n\n {loading ? (\n <Box className=\"flex-1 justify-center items-center\">\n <Spinner size=\"large\" color={Colors.blue} />\n <Text className=\"mt-4 text-gray-500\">Loading contacts...</Text>\n </Box>\n ) : (\n <Box className=\"flex-1\">\n {selectedContacts.length > 0 && (\n <Box className=\"px-4 py-2 bg-gray-50 border-b border-gray-200\">\n <Text className=\"text-sm text-gray-500\">\n {selectedContacts.length} {selectedContacts.length === 1 ? 'contact' : 'contacts'}{' '}\n selected\n </Text>\n </Box>\n )}\n\n <FlatList\n data={filteredContacts}\n renderItem={renderContactList}\n keyExtractor={(item) => item.id}\n contentContainerStyle={styles.listContainer}\n ListEmptyComponent={() => (\n <Box className=\"flex-1 justify-center items-center py-8\">\n <Feather name=\"users\" size={48} color=\"#d1d5db\" />\n <Text className=\"text-center text-gray-500 mt-4\">\n {searchQuery ? 'No matching contacts found' : 'No contacts found'}\n </Text>\n </Box>\n )}\n />\n </Box>\n )}\n </Box>\n </SafeAreaView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: 'white',\n },\n listContainer: {\n flexGrow: 1,\n },\n contactItem: {\n paddingHorizontal: 16,\n paddingVertical: 12,\n borderBottomWidth: 1,\n borderBottomColor: '#f3f4f6',\n },\n avatarText: {\n color: 'white',\n fontWeight: '600',\n },\n avatarImage: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default AddFromContacts;\n"],"names":["React"],"mappings":"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"}
@@ -220,7 +220,7 @@ const SearchAddChannel = (props) => {
220
220
  return /* @__PURE__ */ React__default.createElement(SafeAreaView, { style: {
221
221
  flex: 1,
222
222
  backgroundColor: "#fff"
223
- } }, /* @__PURE__ */ React__default.createElement(Box, { style: styles.container }, /* @__PURE__ */ React__default.createElement(HStack, { style: styles.searchContainer }, /* @__PURE__ */ React__default.createElement(Text, { style: styles.toLabel }, "To:"), /* @__PURE__ */ React__default.createElement(View, { style: styles.chipContainerWrapper }, /* @__PURE__ */ React__default.createElement(View, { style: styles.chipWrapView }, selectedItems.map(renderSelectedItemChip), /* @__PURE__ */ React__default.createElement(TextInput, { ref: inputRef, style: styles.searchInput, placeholder: selectedItems.length ? "" : "Search for a channel or conversation", placeholderTextColor: "#9CA3AF", value: searchText, onChangeText: setSearchText })))), /* @__PURE__ */ React__default.createElement(ScrollView, { style: styles.listContainer }, filteredData.map(renderListItem)), /* @__PURE__ */ React__default.createElement(HStack, { style: styles.messageInputContainer }, /* @__PURE__ */ React__default.createElement(TextInput, { style: styles.messageInput, placeholder: `Message ${selectedItems.map((item) => item.title).join(", ")}`, placeholderTextColor: "#9CA3AF" }), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: styles.sendButton }, /* @__PURE__ */ React__default.createElement(Feather, { name: "arrow-right", size: 22, color: "#fff" })))));
223
+ } }, /* @__PURE__ */ React__default.createElement(Box, { style: styles.container }, /* @__PURE__ */ React__default.createElement(HStack, { style: styles.searchContainer }, /* @__PURE__ */ React__default.createElement(Text, { style: styles.toLabel }, "To:"), /* @__PURE__ */ React__default.createElement(View, { style: styles.chipContainerWrapper }, /* @__PURE__ */ React__default.createElement(View, { style: styles.chipWrapView }, selectedItems.map(renderSelectedItemChip), /* @__PURE__ */ React__default.createElement(TextInput, { ref: inputRef, style: styles.searchInput, placeholder: selectedItems.length ? "" : "Search for a channel or conversation", placeholderTextColor: "#9CA3AF", value: searchText, onChange: (event) => setSearchText(event.nativeEvent.text) })))), /* @__PURE__ */ React__default.createElement(ScrollView, { style: styles.listContainer }, filteredData.map(renderListItem)), /* @__PURE__ */ React__default.createElement(HStack, { style: styles.messageInputContainer }, /* @__PURE__ */ React__default.createElement(TextInput, { style: styles.messageInput, placeholder: `Message ${selectedItems.map((item) => item.title).join(", ")}`, placeholderTextColor: "#9CA3AF" }), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: styles.sendButton }, /* @__PURE__ */ React__default.createElement(Feather, { name: "arrow-right", size: 22, color: "#fff" })))));
224
224
  };
225
225
  const styles = StyleSheet.create({
226
226
  container: {