@messenger-box/slack-ui-mobile 10.0.3-alpha.33 → 10.0.3-alpha.34
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 +19 -14
- package/lib/components/Actionsheet.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/navigation/SearchTabNavigation.js +1 -1
- package/lib/navigation/TeamTabNavigation.js +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 +11 -13
- package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +51 -65
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/lib/screens/Peoples/AddByEmail.js +1 -1
- package/lib/screens/Peoples/AddByEmail.js.map +1 -1
- package/lib/screens/Peoples/AddFromContacts.js +118 -83
- package/lib/screens/Peoples/AddFromContacts.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,77 +1,122 @@
|
|
|
1
|
-
import React__default,{useState,useEffect}from'react';import {Button,ButtonText,Box,Input,InputField,
|
|
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
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
} = await Contacts.requestPermissionsAsync();
|
|
18
|
-
if (status === "granted") {
|
|
30
|
+
try {
|
|
31
|
+
setLoading(true);
|
|
19
32
|
const {
|
|
20
|
-
|
|
21
|
-
} = await Contacts.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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(
|
|
45
|
-
|
|
46
|
-
|
|
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
|
|
50
|
-
|
|
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
|
|
86
|
+
name: `${item.firstName || ""} ${item.lastName || ""}`.trim(),
|
|
53
87
|
mobile: item.phoneNumbers[0]
|
|
54
88
|
};
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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,
|
|
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.
|
|
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(
|
|
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
|
-
|
|
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", onChangeText: setSearchQuery, 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":"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"}
|
|
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 onChangeText={setSearchQuery}\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@messenger-box/slack-ui-mobile",
|
|
3
|
-
"version": "10.0.3-alpha.
|
|
3
|
+
"version": "10.0.3-alpha.34",
|
|
4
4
|
"description": "Slack ui ref mobile package",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"watch-ts": "tsc --watch"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@messenger-box/platform-mobile": "10.0.3-alpha.
|
|
26
|
+
"@messenger-box/platform-mobile": "10.0.3-alpha.34"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"cp-cli": "^2.0.0"
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"typescript": {
|
|
49
49
|
"definition": "lib/index.d.ts"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "33c7bdb4f36c40b6368a5c96fe6312de009188a1"
|
|
52
52
|
}
|