@messenger-box/slack-ui-mobile 10.0.3-alpha.7 → 10.0.3-alpha.74
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/lib/components/Actionsheet.js +96 -0
- package/lib/components/Actionsheet.js.map +1 -0
- package/lib/components/AppRootContextProviderComponent.js +16 -2
- package/lib/components/AppRootContextProviderComponent.js.map +1 -1
- package/lib/components/Channels/ChannelsByAlphabeticalAccordion.js +13 -7
- package/lib/components/Channels/ChannelsByAlphabeticalAccordion.js.map +1 -1
- package/lib/components/CustomBottomTabs/CustomBottomTabs.js +11 -24
- package/lib/components/CustomBottomTabs/CustomBottomTabs.js.map +1 -1
- package/lib/components/CustomDrawer/CustomDrawer.js +31 -31
- package/lib/components/CustomDrawer/CustomDrawer.js.map +1 -1
- package/lib/components/Header/styles.js +2 -2
- package/lib/components/Header/styles.js.map +1 -1
- package/lib/components/LoadingSpinner/index.js +3 -3
- package/lib/components/LoadingSpinner/index.js.map +1 -1
- package/lib/components/NavigationHeader/InboxNavigationHeader.js +20 -25
- package/lib/components/NavigationHeader/InboxNavigationHeader.js.map +1 -1
- package/lib/components/NavigationHeader/NavigationHeader.js +58 -40
- package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
- package/lib/components/NavigationHeader/NavigationHeaderChat.js +9 -9
- package/lib/components/NavigationHeader/NavigationHeaderChat.js.map +1 -1
- package/lib/components/NavigationHeader/index.js +1 -1
- package/lib/components/SlackSearchInput/Suggestion.js +1 -1
- package/lib/components/SlackSearchInput/Tag.js +1 -1
- package/lib/components/SlackSearchInput/index.js +3 -3
- package/lib/components/SlackSearchInput/index.js.map +1 -1
- package/lib/components/VirtualizedScrollView/VirtualizedScrollView.js +19 -4
- package/lib/components/VirtualizedScrollView/VirtualizedScrollView.js.map +1 -1
- package/lib/components/WorkSpaceDrawer/WorkSpaceDrawer.js +41 -31
- package/lib/components/WorkSpaceDrawer/WorkSpaceDrawer.js.map +1 -1
- package/lib/compute.js +32 -23
- package/lib/compute.js.map +1 -1
- package/lib/constants/Colors.js +2 -2
- package/lib/constants/globalStyles.js +3 -3
- package/lib/constants/globalStyles.js.map +1 -1
- package/lib/hooks/useOptimizedChannelsQueries.js +106 -0
- package/lib/hooks/useOptimizedChannelsQueries.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/navigation/SearchTabNavigation.js +47 -39
- package/lib/navigation/SearchTabNavigation.js.map +1 -1
- package/lib/navigation/TeamTabNavigation.js +51 -38
- package/lib/navigation/TeamTabNavigation.js.map +1 -1
- package/lib/queries/slackuiQueries.js +129 -0
- package/lib/queries/slackuiQueries.js.map +1 -0
- package/lib/routes.json +32 -23
- package/lib/screens/Account/AccountScreen.js +23 -26
- package/lib/screens/Account/AccountScreen.js.map +1 -1
- package/lib/screens/Activity/ActivityScreen.js +6 -2
- package/lib/screens/Activity/ActivityScreen.js.map +1 -1
- package/lib/screens/Channels/Add/AddName.js +33 -8
- package/lib/screens/Channels/Add/AddName.js.map +1 -1
- package/lib/screens/Channels/Add/AddVisibility.js +6 -6
- package/lib/screens/Channels/Add/AddVisibility.js.map +1 -1
- package/lib/screens/Channels/AddChannel.js +5 -3
- package/lib/screens/Channels/AddChannel.js.map +1 -1
- package/lib/screens/Channels/Channels.js +101 -95
- package/lib/screens/Channels/Channels.js.map +1 -1
- package/lib/screens/Files/FilesScreen.js +2 -2
- package/lib/screens/Files/FilesScreen.js.map +1 -1
- package/lib/screens/Home/Components/Channels/Channels.js +91 -77
- package/lib/screens/Home/Components/Channels/Channels.js.map +1 -1
- package/lib/screens/Home/Components/DirectChannels/DirectChannels.js +249 -115
- package/lib/screens/Home/Components/DirectChannels/DirectChannels.js.map +1 -1
- package/lib/screens/Home/Components/InviteMembers/index.js +88 -0
- package/lib/screens/Home/Components/InviteMembers/index.js.map +1 -0
- package/lib/screens/Home/Components/Teams/Teams.js +110 -47
- package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
- package/lib/screens/Home/Components/TopCommonSlider/TopCommonSlider.js +44 -75
- package/lib/screens/Home/Components/TopCommonSlider/TopCommonSlider.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +161 -194
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/lib/screens/Home/styles.js +4 -4
- package/lib/screens/Home/styles.js.map +1 -1
- package/lib/screens/Inbox/InboxChannelDetail.js +67 -34
- package/lib/screens/Inbox/InboxChannelDetail.js.map +1 -1
- package/lib/screens/Inbox/InboxDialogMessages.js +2 -2
- package/lib/screens/Inbox/InboxDialogMessages.js.map +1 -1
- package/lib/screens/Inbox/InboxScreen.js +3 -3
- package/lib/screens/Inbox/InboxScreen.js.map +1 -1
- package/lib/screens/Login.js +4 -2
- package/lib/screens/Login.js.map +1 -1
- package/lib/screens/Organization/AddWorkspace.js +42 -38
- package/lib/screens/Organization/AddWorkspace.js.map +1 -1
- package/lib/screens/Organization/CreateOrganization.js +11 -2
- package/lib/screens/Organization/CreateOrganization.js.map +1 -1
- package/lib/screens/Organization/InitialChannelOnboarding.js +22 -4
- package/lib/screens/Organization/InitialChannelOnboarding.js.map +1 -1
- package/lib/screens/Organization/InitializeOrganizationChannel.js +9 -4
- package/lib/screens/Organization/InitializeOrganizationChannel.js.map +1 -1
- package/lib/screens/Organization/InviteOrganizationMembers.js +52 -10
- package/lib/screens/Organization/InviteOrganizationMembers.js.map +1 -1
- package/lib/screens/Peoples/AddByEmail.js +24 -6
- package/lib/screens/Peoples/AddByEmail.js.map +1 -1
- package/lib/screens/Peoples/AddFromContacts.js +172 -87
- package/lib/screens/Peoples/AddFromContacts.js.map +1 -1
- package/lib/screens/Peoples/AddPeople.js +21 -42
- package/lib/screens/Peoples/AddPeople.js.map +1 -1
- package/lib/screens/Peoples/People.js +42 -4
- package/lib/screens/Peoples/People.js.map +1 -1
- package/lib/screens/Profile/ProfileScreen.js +27 -12
- package/lib/screens/Profile/ProfileScreen.js.map +1 -1
- package/lib/screens/Saved/SavedScreen.js +2 -2
- package/lib/screens/Saved/SavedScreen.js.map +1 -1
- package/lib/screens/Search/Channels.js +20 -32
- package/lib/screens/Search/Channels.js.map +1 -1
- package/lib/screens/Search/Files.js +2 -2
- package/lib/screens/Search/Files.js.map +1 -1
- package/lib/screens/Search/JumpTo.js +2 -2
- package/lib/screens/Search/JumpTo.js.map +1 -1
- package/lib/screens/Search/People.js +19 -27
- package/lib/screens/Search/People.js.map +1 -1
- package/lib/screens/Search/Recents.js +26 -31
- package/lib/screens/Search/Recents.js.map +1 -1
- package/lib/screens/Search/SearchAddChannel.js +366 -227
- package/lib/screens/Search/SearchAddChannel.js.map +1 -1
- package/lib/screens/Search/SearchChannelPeople.js +70 -37
- package/lib/screens/Search/SearchChannelPeople.js.map +1 -1
- package/lib/screens/Search/SearchScreen.js +5 -3
- package/lib/screens/Search/SearchScreen.js.map +1 -1
- package/lib/screens/Search/styles.js +2 -2
- package/lib/screens/Search/styles.js.map +1 -1
- package/lib/screens/Teams/AddTeam.js +3 -3
- package/lib/screens/Teams/AddTeam.js.map +1 -1
- package/lib/screens/Teams/Components/Channels/Channels.js +6 -6
- package/lib/screens/Teams/Components/Channels/Channels.js.map +1 -1
- package/lib/screens/Teams/Components/Members/Members.js +7 -3
- package/lib/screens/Teams/Components/Members/Members.js.map +1 -1
- package/lib/screens/Teams/Team.js +6 -8
- package/lib/screens/Teams/Team.js.map +1 -1
- package/lib/screens/Teams/Teams.js +137 -106
- package/lib/screens/Teams/Teams.js.map +1 -1
- package/lib/screens/Teams/useTeams.js +41 -0
- package/lib/screens/Teams/useTeams.js.map +1 -0
- package/lib/screens/Wiki/WikiScreen.js +2 -2
- package/lib/screens/Wiki/WikiScreen.js.map +1 -1
- package/lib/theme/index.js +2 -2
- package/lib/theme/index.js.map +1 -1
- package/package.json +6 -4
- package/lib/navigation/ActivityNavigator.js +0 -61
- package/lib/navigation/ActivityNavigator.js.map +0 -1
- package/lib/navigation/ExploreNavigator.js +0 -583
- package/lib/navigation/ExploreNavigator.js.map +0 -1
- package/lib/navigation/InboxNavigator.js +0 -183
- package/lib/navigation/InboxNavigator.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default,{useEffect}from'react';import {Share,Alert,Dimensions}from'react-native';import {Button,ButtonText,
|
|
1
|
+
import React__default,{useEffect}from'react';import {Share,Alert,SafeAreaView,Dimensions}from'react-native';import {useToast,Button,ButtonText,Box,VStack,Heading,Text,Toast,ToastTitle,ToastDescription}from'@admin-layout/gluestack-ui-mobile';import {useOrganizationSharableLinkQuery,useSendOrganizationInvitationMutation}from'../../queries/slackuiQueries.js';import {NavigationRoutes}from'../../constants/routes.js';import {useSelector}from'react-redux';import {userSelector}from'@adminide-stack/user-auth0-client';import {useNavigation,useFocusEffect}from'@react-navigation/native';import {Ionicons,AntDesign,MaterialCommunityIcons}from'@expo/vector-icons';Dimensions.get("window").width;
|
|
2
2
|
Dimensions.get("window").height;
|
|
3
3
|
const InviteOrganizationMembers = ({
|
|
4
4
|
route
|
|
@@ -6,6 +6,36 @@ const InviteOrganizationMembers = ({
|
|
|
6
6
|
var _a;
|
|
7
7
|
const navigation = useNavigation();
|
|
8
8
|
useSelector(userSelector);
|
|
9
|
+
const toast = useToast();
|
|
10
|
+
const orgName = (_a = route == null ? void 0 : route.params) == null ? void 0 : _a.orgName;
|
|
11
|
+
const {
|
|
12
|
+
data: orgLinkData,
|
|
13
|
+
loading: orgLinkLoading
|
|
14
|
+
} = useOrganizationSharableLinkQuery(orgName);
|
|
15
|
+
const [sendInvitation, {
|
|
16
|
+
loading: sendingInvitation
|
|
17
|
+
}] = useSendOrganizationInvitationMutation({
|
|
18
|
+
onCompleted: (data) => {
|
|
19
|
+
toast.show({
|
|
20
|
+
placement: "top",
|
|
21
|
+
render: ({
|
|
22
|
+
id
|
|
23
|
+
}) => {
|
|
24
|
+
return /* @__PURE__ */ React__default.createElement(Toast, { nativeID: id, action: "success", variant: "solid" }, /* @__PURE__ */ React__default.createElement(VStack, { space: "xs" }, /* @__PURE__ */ React__default.createElement(ToastTitle, null, "Success"), /* @__PURE__ */ React__default.createElement(ToastDescription, null, "Invitation sent successfully")));
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
onError: (error) => {
|
|
29
|
+
toast.show({
|
|
30
|
+
placement: "top",
|
|
31
|
+
render: ({
|
|
32
|
+
id
|
|
33
|
+
}) => {
|
|
34
|
+
return /* @__PURE__ */ React__default.createElement(Toast, { nativeID: id, action: "error", variant: "solid" }, /* @__PURE__ */ React__default.createElement(VStack, { space: "xs" }, /* @__PURE__ */ React__default.createElement(ToastTitle, null, "Error"), /* @__PURE__ */ React__default.createElement(ToastDescription, null, error.message)));
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
9
39
|
useFocusEffect(React__default.useCallback(() => {
|
|
10
40
|
return () => {
|
|
11
41
|
};
|
|
@@ -14,18 +44,16 @@ const InviteOrganizationMembers = ({
|
|
|
14
44
|
if (navigation)
|
|
15
45
|
navigation.setOptions({
|
|
16
46
|
headerTintColor: "#1d1c1d",
|
|
17
|
-
headerRight: (props) => /* @__PURE__ */ React__default.createElement(Button, {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
orgName: (_a2 = route == null ? void 0 : route.params) == null ? void 0 : _a2.orgName
|
|
21
|
-
});
|
|
22
|
-
}, variant: "link" }, /* @__PURE__ */ React__default.createElement(ButtonText, { color: "$black" }, "SKIP"))
|
|
47
|
+
headerRight: (props) => /* @__PURE__ */ React__default.createElement(Button, { className: "mr-2", onPress: () => navigation.navigate(NavigationRoutes.InitializeOrganizationChannel, {
|
|
48
|
+
orgName
|
|
49
|
+
}), variant: "link" }, /* @__PURE__ */ React__default.createElement(ButtonText, { className: "text-black" }, "SKIP"))
|
|
23
50
|
});
|
|
24
51
|
}, [navigation]);
|
|
25
52
|
const shareLink = React__default.useCallback(async () => {
|
|
26
53
|
try {
|
|
54
|
+
const shareMessage = (orgLinkData == null ? void 0 : orgLinkData.getOrganizationSharableLink) || "CDMBSE | Messenger App";
|
|
27
55
|
const result = await Share.share({
|
|
28
|
-
message:
|
|
56
|
+
message: shareMessage
|
|
29
57
|
});
|
|
30
58
|
if (result.action === Share.sharedAction) {
|
|
31
59
|
if (result.activityType) {
|
|
@@ -36,6 +64,20 @@ const InviteOrganizationMembers = ({
|
|
|
36
64
|
} catch (error) {
|
|
37
65
|
Alert.alert(error.message);
|
|
38
66
|
}
|
|
39
|
-
}, []);
|
|
40
|
-
return /* @__PURE__ */ React__default.createElement(SafeAreaView, {
|
|
67
|
+
}, [orgLinkData]);
|
|
68
|
+
return /* @__PURE__ */ React__default.createElement(SafeAreaView, { style: {
|
|
69
|
+
flex: 1
|
|
70
|
+
} }, /* @__PURE__ */ React__default.createElement(Box, { className: "border-t-blue-600 border-t w-[50%]" }), /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(VStack, { space: "lg", className: "py-10 px-4" }, /* @__PURE__ */ React__default.createElement(Heading, { className: "px-4 items-center text-center" }, "Who else is on the ", orgName, " team?"), /* @__PURE__ */ React__default.createElement(Text, { className: "text-center text-[15]" }, "Invite your teammates to Workspace."), /* @__PURE__ */ React__default.createElement(Button, { size: "md", variant: "solid", onPress: async () => await shareLink(), className: "my-1 bg-green-800 active:bg-green-600 hover:bg-green-600", isDisabled: orgLinkLoading }, /* @__PURE__ */ React__default.createElement(Ionicons, { color: "white", name: "share-outline", size: 20 }), /* @__PURE__ */ React__default.createElement(ButtonText, { className: "ml-2 font-bold text-white" }, "Share a Link")), /* @__PURE__ */ React__default.createElement(Button, { size: "md", variant: "outline", className: "my-1 bg-white border-gray-400 active:bg-gray-200 hover:bg-gray-200" }, /* @__PURE__ */ React__default.createElement(AntDesign, { color: "black", name: "adduser", size: 20 }), /* @__PURE__ */ React__default.createElement(ButtonText, { className: "ml-2 font-bold text-black" }, "Add from Contacts")), /* @__PURE__ */ React__default.createElement(Button, { size: "md", className: "my-1 bg-white border-gray-400 active:bg-gray-200 hover:bg-gray-200", variant: "outline", onPress: () => navigation.navigate(NavigationRoutes.AddPeopleByEmail, {
|
|
71
|
+
orgName,
|
|
72
|
+
sendInvitation: (email) => {
|
|
73
|
+
sendInvitation({
|
|
74
|
+
variables: {
|
|
75
|
+
request: {
|
|
76
|
+
orgName,
|
|
77
|
+
emails: [email]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}) }, /* @__PURE__ */ React__default.createElement(MaterialCommunityIcons, { color: "black", name: "email-outline", size: 20 }), /* @__PURE__ */ React__default.createElement(ButtonText, { className: "ml-2 font-bold text-black" }, "Add by Email")))));
|
|
41
83
|
};export{InviteOrganizationMembers as default};//# sourceMappingURL=InviteOrganizationMembers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InviteOrganizationMembers.js","sources":["../../../src/screens/Organization/InviteOrganizationMembers.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect, useCallback } from 'react';\nimport { StyleSheet, TouchableOpacity, Dimensions, Share, Alert } from 'react-native';\nimport {\n SafeAreaView,\n Text,\n VStack,\n Box,\n Button,\n ButtonText,\n Icon,\n Divider,\n HStack,\n Center,\n Heading,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { useCreateOrganizationMutation, useGetAllUsersQuery } from 'common/lib/generated/generated.js';\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 { Ionicons, AntDesign, FontAwesome5, MaterialCommunityIcons } from '@expo/vector-icons';\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst InviteOrganizationMembers = ({ route }: any) => {\n const navigation = useNavigation<any>();\n const user: any = useSelector(userSelector);\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 (navigation)\n navigation.setOptions({\n headerTintColor: '#1d1c1d',\n headerRight: (props: any) => (\n <Button\n mr={'$2'}\n onPress={() =>\n navigation.navigate(NavigationRoutes.InitializeOrganizationChannel, {\n orgName: route?.params?.orgName,\n })\n }\n variant={'link'}\n >\n <ButtonText color={'$black'}>SKIP</ButtonText>\n </Button>\n ),\n });\n }, [navigation]);\n\n const shareLink = React.useCallback(async () => {\n try {\n const result = await Share.share({\n message: 'CDMBSE | Messenger App',\n });\n if (result.action === Share.sharedAction) {\n if (result.activityType) {\n // shared with activity type of result.activityType\n } else {\n // shared\n }\n } else if (result.action === Share.dismissedAction) {\n // dismissed\n }\n } catch (error: any) {\n Alert.alert(error.message);\n // alert(error.message);\n }\n }, []);\n\n return (\n <SafeAreaView flex={1}>\n <Box borderTopColor={'$blue600'} borderTopWidth={'$1'} w={'50%'} />\n <Box flex={1} bg={'$white'}>\n <VStack space={'lg'} py={'$10'} px={'$4'}>\n <Heading px={'$4'} alignItems={'center'} textAlign={'center'}>\n Who else is on the {route?.params?.orgName} team?\n </Heading>\n <Text textAlign={'center'} fontSize={15}>\n Invite your teammates to Workspace.\n </Text>\n <Button\n my={'$1'}\n size={'md'}\n variant={'solid'}\n onPress={async () => await shareLink()}\n bg={'$green800'}\n $pressed-bg=\"$green600\"\n $active-bg={'$green600'}\n >\n <Ionicons color={'white'} name=\"share-outline\" size={20} />\n <ButtonText ml={'$2'} color={'$white'} fontWeight=\"$bold\">\n Share a Link\n </ButtonText>\n </Button>\n <Button\n my={'$1'}\n size=\"md\"\n bg={'$white'}\n $pressed-bg=\"$trueGray200\"\n $active-bg={'$trueGray200'}\n borderColor=\"$trueGray400\"\n variant=\"outline\"\n >\n <AntDesign color={'black'} name=\"adduser\" size={20} />\n <ButtonText ml={'$2'} fontWeight=\"$bold\" color={'$black'}>\n Add from Contacts\n </ButtonText>\n </Button>\n <Button\n my={'$1'}\n size=\"md\"\n bg={'$white'}\n $pressed-bg=\"$trueGray200\"\n $active-bg={'$trueGray200'}\n borderColor=\"$trueGray400\"\n variant=\"outline\"\n onPress={() => navigation.navigate(NavigationRoutes.AddPeopleByEmail)}\n >\n <MaterialCommunityIcons color={'black'} name=\"email-outline\" size={20} />\n <ButtonText ml={'$2'} fontWeight=\"$bold\" color={'$black'}>\n Add by Email\n </ButtonText>\n </Button>\n </VStack>\n </Box>\n </SafeAreaView>\n );\n};\n\nexport default InviteOrganizationMembers;\n"],"names":["React","_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InviteOrganizationMembers.js","sources":["../../../src/screens/Organization/InviteOrganizationMembers.tsx"],"sourcesContent":["import React, { useState, useEffect, useLayoutEffect, useCallback } from 'react';\nimport { StyleSheet, TouchableOpacity, Dimensions, Share, Alert, SafeAreaView } from 'react-native';\nimport {\n Text,\n VStack,\n Box,\n Button,\n ButtonText,\n Icon,\n Divider,\n HStack,\n Center,\n Heading,\n Toast,\n useToast,\n ToastTitle,\n ToastDescription,\n} from '@admin-layout/gluestack-ui-mobile';\nimport {\n useCreateOrganizationMutation,\n useAllUsersQuery,\n useSendOrganizationInvitationMutation,\n useOrganizationSharableLinkQuery,\n} from '../../queries/slackuiQueries';\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 { Ionicons, AntDesign, FontAwesome5, MaterialCommunityIcons } from '@expo/vector-icons';\nimport Colors from 'tailwindcss/colors';\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst InviteOrganizationMembers = ({ route }: any) => {\n const navigation = useNavigation<any>();\n const user: any = useSelector(userSelector);\n const toast = useToast();\n const orgName = route?.params?.orgName;\n\n // Get organization sharable link\n const { data: orgLinkData, loading: orgLinkLoading } = useOrganizationSharableLinkQuery(orgName);\n\n // Send organization invitation mutation\n const [sendInvitation, { loading: sendingInvitation }] = useSendOrganizationInvitationMutation({\n onCompleted: (data) => {\n toast.show({\n placement: 'top',\n render: ({ id }) => {\n return (\n <Toast nativeID={id} action=\"success\" variant=\"solid\">\n <VStack space=\"xs\">\n <ToastTitle>Success</ToastTitle>\n <ToastDescription>Invitation sent successfully</ToastDescription>\n </VStack>\n </Toast>\n );\n },\n });\n },\n onError: (error) => {\n toast.show({\n placement: 'top',\n render: ({ id }) => {\n return (\n <Toast nativeID={id} action=\"error\" variant=\"solid\">\n <VStack space=\"xs\">\n <ToastTitle>Error</ToastTitle>\n <ToastDescription>{error.message}</ToastDescription>\n </VStack>\n </Toast>\n );\n },\n });\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 (navigation)\n navigation.setOptions({\n headerTintColor: '#1d1c1d',\n headerRight: (props: any) => (\n <Button\n className=\"mr-2\"\n onPress={() =>\n navigation.navigate(NavigationRoutes.InitializeOrganizationChannel, {\n orgName: orgName,\n })\n }\n variant={'link'}\n >\n <ButtonText className=\"text-black\">SKIP</ButtonText>\n </Button>\n ),\n });\n }, [navigation]);\n\n const shareLink = React.useCallback(async () => {\n try {\n // Use the organization sharable link if available\n const shareMessage = orgLinkData?.getOrganizationSharableLink || 'CDMBSE | Messenger App';\n\n const result = await Share.share({\n message: shareMessage,\n });\n if (result.action === Share.sharedAction) {\n if (result.activityType) {\n // shared with activity type of result.activityType\n } else {\n // shared\n }\n } else if (result.action === Share.dismissedAction) {\n // dismissed\n }\n } catch (error: any) {\n Alert.alert(error.message);\n // alert(error.message);\n }\n }, [orgLinkData]);\n\n return (\n <SafeAreaView style={{ flex: 1 }}>\n <Box className=\"border-t-blue-600 border-t w-[50%]\" />\n <Box className=\"flex-1 bg-white\">\n <VStack space={'lg'} className=\"py-10 px-4\">\n <Heading className=\"px-4 items-center text-center\">Who else is on the {orgName} team?</Heading>\n <Text className=\"text-center text-[15]\">Invite your teammates to Workspace.</Text>\n <Button\n size={'md'}\n variant={'solid'}\n onPress={async () => await shareLink()}\n className=\"my-1 bg-green-800 active:bg-green-600 hover:bg-green-600\"\n isDisabled={orgLinkLoading}\n >\n <Ionicons color={'white'} name=\"share-outline\" size={20} />\n <ButtonText className=\"ml-2 font-bold text-white\">Share a Link</ButtonText>\n </Button>\n <Button\n size=\"md\"\n variant=\"outline\"\n className=\"my-1 bg-white border-gray-400 active:bg-gray-200 hover:bg-gray-200\"\n >\n <AntDesign color={'black'} name=\"adduser\" size={20} />\n <ButtonText className=\"ml-2 font-bold text-black\">Add from Contacts</ButtonText>\n </Button>\n <Button\n size=\"md\"\n className=\"my-1 bg-white border-gray-400 active:bg-gray-200 hover:bg-gray-200\"\n variant=\"outline\"\n onPress={() =>\n navigation.navigate(NavigationRoutes.AddPeopleByEmail, {\n orgName: orgName,\n sendInvitation: (email: string) => {\n sendInvitation({\n variables: {\n request: {\n orgName,\n emails: [email],\n },\n },\n });\n },\n })\n }\n >\n <MaterialCommunityIcons color={'black'} name=\"email-outline\" size={20} />\n <ButtonText className=\"ml-2 font-bold text-black\">Add by Email</ButtonText>\n </Button>\n </VStack>\n </Box>\n </SafeAreaView>\n );\n};\n\nexport default InviteOrganizationMembers;\n"],"names":["React"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default,{useState,useEffect}from'react';import {Button,ButtonText,Box,
|
|
1
|
+
import React__default,{useState,useEffect}from'react';import {Button,ButtonText,Box,VStack,ButtonIcon,CheckIcon,Heading,HStack,Text,Input,InputField}from'@admin-layout/gluestack-ui-mobile';import {TouchableOpacity,SafeAreaView,Platform,Dimensions}from'react-native';import {NavigationRoutes}from'../../constants/routes.js';import {Ionicons,AntDesign}from'@expo/vector-icons';import {useIsFocused}from'@react-navigation/native';import {useSendOrganizationInvitationMutation}from'../../queries/slackuiQueries.js';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../hooks/useDrawerLayout.js';import'../../hooks/useExpoNotificationProvider.js';import'../../hooks/useOptimizedChannelsQueries.js';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector}from'react-redux';import colors from'tailwindcss/colors';Dimensions.get("window").width;
|
|
2
2
|
Dimensions.get("window").height;
|
|
3
3
|
Dimensions.get("screen").height;
|
|
4
4
|
const AddPeopleByEmail = ({
|
|
@@ -44,7 +44,7 @@ const AddPeopleByEmail = ({
|
|
|
44
44
|
headerLeft: (props) => /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: {
|
|
45
45
|
paddingHorizontal: 10
|
|
46
46
|
}, onPress: () => navigation == null ? void 0 : navigation.goBack() }, /* @__PURE__ */ React__default.createElement(Ionicons, { color: "black", name: "chevron-back", size: 20 })),
|
|
47
|
-
headerRight: (props) => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, emailSent ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null) : /* @__PURE__ */ React__default.createElement(Button, {
|
|
47
|
+
headerRight: (props) => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, emailSent ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null) : /* @__PURE__ */ React__default.createElement(Button, { className: "mr-2", disabled: email && emailReg.test(email) === true ? false : true, variant: "link", onPress: () => {
|
|
48
48
|
var _a;
|
|
49
49
|
return sendOrganizationInvitationMutation({
|
|
50
50
|
variables: {
|
|
@@ -56,11 +56,29 @@ const AddPeopleByEmail = ({
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
});
|
|
59
|
-
} }, /* @__PURE__ */ React__default.createElement(ButtonText, {
|
|
59
|
+
} }, /* @__PURE__ */ React__default.createElement(ButtonText, { className: `${email && emailReg.test(email) === true ? "text-black" : "text-gray-400"}` }, "SEND")))
|
|
60
60
|
});
|
|
61
61
|
}, [isFocused, navigation, email, orgName, user, emailSent]);
|
|
62
|
-
return /* @__PURE__ */ React__default.createElement(Box, {
|
|
62
|
+
return /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white" }, emailSent ? /* @__PURE__ */ React__default.createElement(SafeAreaView, { style: {
|
|
63
|
+
flex: 1
|
|
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: () => {
|
|
63
65
|
setEmail("");
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
if (Platform.OS === "macos") {
|
|
67
|
+
navigation.navigate("MainStack", {
|
|
68
|
+
screen: NavigationRoutes.Home,
|
|
69
|
+
params: {
|
|
70
|
+
orgName
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
} else if (navigation.canGoBack()) {
|
|
74
|
+
navigation.goBack();
|
|
75
|
+
} else {
|
|
76
|
+
navigation.navigate("MainStack", {
|
|
77
|
+
screen: NavigationRoutes.Home,
|
|
78
|
+
params: {
|
|
79
|
+
orgName
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}, 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" })));
|
|
66
84
|
};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 SafeAreaView,\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 } 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/lib/generated/generated.js';\nimport { useDrawerLayout } from '../../hooks';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector } from 'react-redux';\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 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 color={email && emailReg.test(email) === true ? '$black' : '$trueGray400'}>\n SEND\n </ButtonText>\n </Button>\n )}\n </>\n ),\n });\n }, [isFocused, navigation, email, orgName, user, emailSent]);\n\n return (\n <Box flex={1} bg={'$white'}>\n {emailSent ? (\n <SafeAreaView flex={1}>\n <VStack space={'lg'} py={'$5'} flex={1} justifyContent={'space-between'}>\n <Box alignItems={'center'} justifyContent={'center'} borderRadius=\"$full\">\n {/* <CheckIcon size={10} mt=\"0.5\" color=\"emerald.500\" /> */}\n <Button borderRadius=\"$full\" bg={'$green100'} size={'lg'}>\n {/* <AntDesign name=\"check\" size={25} /> */}\n <ButtonIcon color={'#14532d'} as={CheckIcon} />\n </Button>\n </Box>\n <Heading textAlign={'center'}>Invitation sent</Heading>\n <HStack flex={1} space={'sm'} px={'$4'} pr={'$10'}>\n <Box>\n <AntDesign color=\"black\" name=\"adduser\" size={30} />\n </Box>\n <Box>\n <Text color={'$black'} fontWeight={'$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 px={'$5'}>\n <Button\n bg={'$green900'}\n $pressed-bg=\"$green600\"\n $active-bg={'$green600'}\n rounded={'$lg'}\n onPress={() => {\n setEmail('');\n navigation.goBack();\n }}\n >\n <ButtonText fontWeight=\"600\" fontSize={15}>\n Done\n </ButtonText>\n </Button>\n </Box>\n </VStack>\n </SafeAreaView>\n ) : (\n <Input variant=\"underlined\" borderWidth={'$1'} size={'xl'} borderColor={'$coolGray300'}>\n <InputField\n px={'$3'}\n type=\"text\"\n size=\"xl\"\n textTransform={'none'}\n autoCapitalize={'none'}\n autoCorrect={false}\n placeholderTextColor={'#404040'}\n fontSize={14}\n value={email}\n placeholder=\"name@example.com\"\n onChangeText={(v) => setEmail(v)}\n textContentType=\"emailAddress\"\n keyboardType=\"email-address\"\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 '../../queries/slackuiQueries';\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 if (Platform.OS === 'macos') {\n navigation.navigate('MainStack', {\n screen: NavigationRoutes.Home,\n params: { orgName },\n });\n } else if (navigation.canGoBack()) {\n navigation.goBack();\n } else {\n navigation.navigate('MainStack', {\n screen: NavigationRoutes.Home,\n params: { orgName },\n });\n }\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":"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"}
|
|
@@ -1,124 +1,209 @@
|
|
|
1
|
-
import React__default,{useState,useEffect}from'react';import {Button,ButtonText,
|
|
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 {useOrganizationSharableLinkQuery,useSendOrganizationInvitationMutation}from'../../queries/slackuiQueries.js';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';import {useSelector}from'react-redux';import {userSelector}from'@adminide-stack/user-auth0-client';import'../../constants/device.js';import'../../constants/globalStyles.js';import'../../constants/Layout.js';import {NavigationRoutes}from'../../constants/routes.js';const AddFromContacts = ({
|
|
2
2
|
navigation,
|
|
3
3
|
route
|
|
4
4
|
}) => {
|
|
5
|
+
var _a;
|
|
5
6
|
const isFocused = useIsFocused();
|
|
6
7
|
const [contacts, setContacts] = useState([]);
|
|
8
|
+
const [filteredContacts, setFilteredContacts] = useState([]);
|
|
7
9
|
const [selectedContacts, setSelectedContacts] = useState([]);
|
|
10
|
+
const [searchQuery, setSearchQuery] = useState("");
|
|
11
|
+
const [loading, setLoading] = useState(true);
|
|
12
|
+
const orgName = ((_a = route == null ? void 0 : route.params) == null ? void 0 : _a.orgName) || "";
|
|
8
13
|
const {
|
|
9
14
|
data: organizationSharableLink
|
|
10
|
-
} =
|
|
15
|
+
} = useOrganizationSharableLinkQuery(orgName);
|
|
16
|
+
const [sendOrganizationInvitation] = useSendOrganizationInvitationMutation();
|
|
17
|
+
const user = useSelector(userSelector);
|
|
11
18
|
useEffect(() => {
|
|
12
|
-
|
|
19
|
+
if (searchQuery.trim() === "") {
|
|
20
|
+
setFilteredContacts(contacts);
|
|
21
|
+
} else {
|
|
22
|
+
const filtered = contacts.filter((contact) => {
|
|
23
|
+
var _a2, _b, _c;
|
|
24
|
+
const fullName = `${contact.firstName || ""} ${contact.lastName || ""}`.toLowerCase();
|
|
25
|
+
const phoneNumber = ((_c = (_b = (_a2 = contact.phoneNumbers) == null ? void 0 : _a2[0]) == null ? void 0 : _b.number) == null ? void 0 : _c.toLowerCase()) || "";
|
|
26
|
+
const query = searchQuery.toLowerCase();
|
|
27
|
+
return fullName.includes(query) || phoneNumber.includes(query);
|
|
28
|
+
});
|
|
29
|
+
setFilteredContacts(filtered);
|
|
30
|
+
}
|
|
31
|
+
}, [searchQuery, contacts]);
|
|
13
32
|
useEffect(() => {
|
|
14
33
|
(async () => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} = await Contacts.requestPermissionsAsync();
|
|
18
|
-
if (status === "granted") {
|
|
34
|
+
try {
|
|
35
|
+
setLoading(true);
|
|
19
36
|
const {
|
|
20
|
-
|
|
21
|
-
} = await Contacts.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
37
|
+
status
|
|
38
|
+
} = await Contacts.requestPermissionsAsync();
|
|
39
|
+
if (status === "granted") {
|
|
40
|
+
const {
|
|
41
|
+
data
|
|
42
|
+
} = await Contacts.getContactsAsync({
|
|
43
|
+
fields: [Contacts.Fields.FirstName, Contacts.Fields.LastName, Contacts.Fields.PhoneNumbers, Contacts.Fields.Image, Contacts.Fields.ImageAvailable]
|
|
44
|
+
});
|
|
45
|
+
if (data.length > 0) {
|
|
46
|
+
const sortedContacts = data.sort((a, b) => {
|
|
47
|
+
const nameA = `${a.firstName || ""} ${a.lastName || ""}`.trim().toLowerCase();
|
|
48
|
+
const nameB = `${b.firstName || ""} ${b.lastName || ""}`.trim().toLowerCase();
|
|
49
|
+
return nameA.localeCompare(nameB);
|
|
50
|
+
});
|
|
51
|
+
const validContacts = sortedContacts.filter((contact) => contact.phoneNumbers && contact.phoneNumbers.length > 0);
|
|
52
|
+
console.log(`Total contacts with phone numbers: ${validContacts.length}`);
|
|
53
|
+
const contactsWithImages = validContacts.filter((contact) => contact.imageAvailable && contact.image);
|
|
54
|
+
console.log(`Contacts with images: ${contactsWithImages.length}`);
|
|
55
|
+
if (contactsWithImages.length > 0) {
|
|
56
|
+
console.log("Sample image data:", contactsWithImages[0].image);
|
|
57
|
+
}
|
|
58
|
+
setContacts(validContacts);
|
|
59
|
+
setFilteredContacts(validContacts);
|
|
60
|
+
}
|
|
27
61
|
}
|
|
62
|
+
} catch (error) {
|
|
63
|
+
console.error("Error fetching contacts:", error);
|
|
64
|
+
} finally {
|
|
65
|
+
setLoading(false);
|
|
28
66
|
}
|
|
29
67
|
})();
|
|
30
68
|
}, []);
|
|
31
69
|
useEffect(() => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
70
|
+
if (isFocused) {
|
|
71
|
+
navigation.setOptions({
|
|
72
|
+
headerShown: true,
|
|
73
|
+
headerTitleAlign: "left",
|
|
74
|
+
title: "Add from Contacts",
|
|
75
|
+
headerTitleStyle: {
|
|
76
|
+
fontWeight: "600"
|
|
77
|
+
},
|
|
78
|
+
headerLeft: (props) => /* @__PURE__ */ React__default.createElement(
|
|
79
|
+
TouchableOpacity,
|
|
80
|
+
{
|
|
81
|
+
style: {
|
|
82
|
+
paddingHorizontal: 10
|
|
83
|
+
},
|
|
84
|
+
onPress: () => {
|
|
85
|
+
if (Platform.OS === "macos") {
|
|
86
|
+
navigation.navigate("MainStack", {
|
|
87
|
+
screen: NavigationRoutes.Home,
|
|
88
|
+
params: {
|
|
89
|
+
orgName
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
} else if (navigation.canGoBack()) {
|
|
93
|
+
navigation.goBack();
|
|
94
|
+
} else {
|
|
95
|
+
navigation.navigate("MainStack", {
|
|
96
|
+
screen: NavigationRoutes.Home,
|
|
97
|
+
params: {
|
|
98
|
+
orgName
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
/* @__PURE__ */ React__default.createElement(Ionicons, { color: Colors.slackBlack, name: "chevron-back", size: 20 })
|
|
105
|
+
),
|
|
106
|
+
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"))
|
|
107
|
+
});
|
|
108
|
+
}
|
|
46
109
|
}, [isFocused, navigation, selectedContacts]);
|
|
47
|
-
const
|
|
48
|
-
|
|
110
|
+
const toggleContact = (item) => {
|
|
111
|
+
if (!item.phoneNumbers || item.phoneNumbers.length === 0)
|
|
112
|
+
return;
|
|
113
|
+
const contact = {
|
|
49
114
|
id: item.id,
|
|
50
|
-
name: item.firstName
|
|
115
|
+
name: `${item.firstName || ""} ${item.lastName || ""}`.trim(),
|
|
51
116
|
mobile: item.phoneNumbers[0]
|
|
52
117
|
};
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
118
|
+
setSelectedContacts((prev) => {
|
|
119
|
+
const isSelected = prev.some((c) => c.id === contact.id);
|
|
120
|
+
if (isSelected) {
|
|
121
|
+
return prev.filter((c) => c.id !== contact.id);
|
|
122
|
+
} else {
|
|
123
|
+
return [...prev, contact];
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
const getInitials = (firstName, lastName) => {
|
|
128
|
+
const first = firstName ? firstName.charAt(0).toUpperCase() : "";
|
|
129
|
+
const last = lastName ? lastName.charAt(0).toUpperCase() : "";
|
|
130
|
+
return (first + last).substring(0, 2);
|
|
57
131
|
};
|
|
58
132
|
const renderContactList = ({
|
|
59
133
|
item
|
|
60
134
|
}) => {
|
|
61
|
-
var
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
135
|
+
var _a2, _b;
|
|
136
|
+
const isSelected = selectedContacts.some((c) => c.id === item.id);
|
|
137
|
+
const hasPhoneNumber = item.phoneNumbers && item.phoneNumbers.length > 0;
|
|
138
|
+
const initials = getInitials(item.firstName, item.lastName);
|
|
139
|
+
if (!hasPhoneNumber)
|
|
140
|
+
return null;
|
|
141
|
+
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: {
|
|
68
142
|
uri: item.image.uri
|
|
69
|
-
}, alt: item.firstName }) :
|
|
143
|
+
}, 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 = (_a2 = item.phoneNumbers) == null ? void 0 : _a2[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 })))));
|
|
70
144
|
};
|
|
71
145
|
const sendInvitation = () => {
|
|
72
|
-
var
|
|
146
|
+
var _a2;
|
|
147
|
+
if (selectedContacts.length === 0)
|
|
148
|
+
return;
|
|
149
|
+
const mobileNumbers = selectedContacts.map((i) => i.mobile.number);
|
|
150
|
+
sendOrganizationInvitation({
|
|
151
|
+
variables: {
|
|
152
|
+
request: {
|
|
153
|
+
orgName,
|
|
154
|
+
emails: mobileNumbers.map((num) => num.replace(/\s/g, "")),
|
|
155
|
+
invitedBy: ((_a2 = user == null ? void 0 : user.profile) == null ? void 0 : _a2.name) || "",
|
|
156
|
+
sentInvitee: true
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
onCompleted: (data) => {
|
|
160
|
+
console.log("Organization invitation sent successfully:", data);
|
|
161
|
+
sendSMSInvitations();
|
|
162
|
+
},
|
|
163
|
+
onError: (error) => {
|
|
164
|
+
console.error("Error sending invitations:", error);
|
|
165
|
+
sendSMSInvitations();
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
const sendSMSInvitations = () => {
|
|
170
|
+
var _a2;
|
|
73
171
|
const mobileNumbers = selectedContacts.map((i) => i.mobile.number);
|
|
74
172
|
let numbers = "";
|
|
75
173
|
mobileNumbers.forEach((phoneNumber) => {
|
|
76
174
|
numbers += `${phoneNumber.replace(/\s/g, "")},`;
|
|
77
175
|
});
|
|
78
176
|
numbers = numbers.slice(0, -1);
|
|
79
|
-
|
|
80
|
-
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 : ""}`;
|
|
177
|
+
const message = `Join me on ${config.APP_NAME} - it's a faster, simpler way to work. Sign up here from any device: ${(_a2 = organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink) != null ? _a2 : ""}`;
|
|
81
178
|
const url = Platform.OS === "android" ? `sms:${numbers}?body=${encodeURIComponent(message)}` : `sms:/open?addresses=${numbers}&body=${encodeURIComponent(message)}`;
|
|
82
179
|
Linking.openURL(url);
|
|
83
180
|
};
|
|
84
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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, { bg: "#fff", py: "$2" }, /* @__PURE__ */ React__default.createElement(VStack, { space: "md" }, /* @__PURE__ */ React__default.createElement(Box, { 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
|
|
181
|
+
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: {
|
|
182
|
+
marginLeft: 8
|
|
183
|
+
} })), /* @__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: {
|
|
184
|
+
marginRight: 8
|
|
185
|
+
} }, /* @__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")) }))));
|
|
186
|
+
};
|
|
187
|
+
const styles = StyleSheet.create({
|
|
188
|
+
container: {
|
|
189
|
+
flex: 1,
|
|
190
|
+
backgroundColor: "white"
|
|
191
|
+
},
|
|
192
|
+
listContainer: {
|
|
193
|
+
flexGrow: 1
|
|
194
|
+
},
|
|
195
|
+
contactItem: {
|
|
196
|
+
paddingHorizontal: 16,
|
|
197
|
+
paddingVertical: 12,
|
|
198
|
+
borderBottomWidth: 1,
|
|
199
|
+
borderBottomColor: "#f3f4f6"
|
|
200
|
+
},
|
|
201
|
+
avatarText: {
|
|
202
|
+
color: "white",
|
|
203
|
+
fontWeight: "600"
|
|
204
|
+
},
|
|
205
|
+
avatarImage: {
|
|
206
|
+
width: "100%",
|
|
207
|
+
height: "100%"
|
|
208
|
+
}
|
|
209
|
+
});export{AddFromContacts as default};//# sourceMappingURL=AddFromContacts.js.map
|