@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.
Files changed (144) hide show
  1. package/lib/components/Actionsheet.js +96 -0
  2. package/lib/components/Actionsheet.js.map +1 -0
  3. package/lib/components/AppRootContextProviderComponent.js +16 -2
  4. package/lib/components/AppRootContextProviderComponent.js.map +1 -1
  5. package/lib/components/Channels/ChannelsByAlphabeticalAccordion.js +13 -7
  6. package/lib/components/Channels/ChannelsByAlphabeticalAccordion.js.map +1 -1
  7. package/lib/components/CustomBottomTabs/CustomBottomTabs.js +11 -24
  8. package/lib/components/CustomBottomTabs/CustomBottomTabs.js.map +1 -1
  9. package/lib/components/CustomDrawer/CustomDrawer.js +31 -31
  10. package/lib/components/CustomDrawer/CustomDrawer.js.map +1 -1
  11. package/lib/components/Header/styles.js +2 -2
  12. package/lib/components/Header/styles.js.map +1 -1
  13. package/lib/components/LoadingSpinner/index.js +3 -3
  14. package/lib/components/LoadingSpinner/index.js.map +1 -1
  15. package/lib/components/NavigationHeader/InboxNavigationHeader.js +20 -25
  16. package/lib/components/NavigationHeader/InboxNavigationHeader.js.map +1 -1
  17. package/lib/components/NavigationHeader/NavigationHeader.js +58 -40
  18. package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
  19. package/lib/components/NavigationHeader/NavigationHeaderChat.js +9 -9
  20. package/lib/components/NavigationHeader/NavigationHeaderChat.js.map +1 -1
  21. package/lib/components/NavigationHeader/index.js +1 -1
  22. package/lib/components/SlackSearchInput/Suggestion.js +1 -1
  23. package/lib/components/SlackSearchInput/Tag.js +1 -1
  24. package/lib/components/SlackSearchInput/index.js +3 -3
  25. package/lib/components/SlackSearchInput/index.js.map +1 -1
  26. package/lib/components/VirtualizedScrollView/VirtualizedScrollView.js +19 -4
  27. package/lib/components/VirtualizedScrollView/VirtualizedScrollView.js.map +1 -1
  28. package/lib/components/WorkSpaceDrawer/WorkSpaceDrawer.js +41 -31
  29. package/lib/components/WorkSpaceDrawer/WorkSpaceDrawer.js.map +1 -1
  30. package/lib/compute.js +32 -23
  31. package/lib/compute.js.map +1 -1
  32. package/lib/constants/Colors.js +2 -2
  33. package/lib/constants/globalStyles.js +3 -3
  34. package/lib/constants/globalStyles.js.map +1 -1
  35. package/lib/hooks/useOptimizedChannelsQueries.js +106 -0
  36. package/lib/hooks/useOptimizedChannelsQueries.js.map +1 -0
  37. package/lib/index.js +1 -1
  38. package/lib/index.js.map +1 -1
  39. package/lib/navigation/SearchTabNavigation.js +47 -39
  40. package/lib/navigation/SearchTabNavigation.js.map +1 -1
  41. package/lib/navigation/TeamTabNavigation.js +51 -38
  42. package/lib/navigation/TeamTabNavigation.js.map +1 -1
  43. package/lib/queries/slackuiQueries.js +129 -0
  44. package/lib/queries/slackuiQueries.js.map +1 -0
  45. package/lib/routes.json +32 -23
  46. package/lib/screens/Account/AccountScreen.js +23 -26
  47. package/lib/screens/Account/AccountScreen.js.map +1 -1
  48. package/lib/screens/Activity/ActivityScreen.js +6 -2
  49. package/lib/screens/Activity/ActivityScreen.js.map +1 -1
  50. package/lib/screens/Channels/Add/AddName.js +33 -8
  51. package/lib/screens/Channels/Add/AddName.js.map +1 -1
  52. package/lib/screens/Channels/Add/AddVisibility.js +6 -6
  53. package/lib/screens/Channels/Add/AddVisibility.js.map +1 -1
  54. package/lib/screens/Channels/AddChannel.js +5 -3
  55. package/lib/screens/Channels/AddChannel.js.map +1 -1
  56. package/lib/screens/Channels/Channels.js +101 -95
  57. package/lib/screens/Channels/Channels.js.map +1 -1
  58. package/lib/screens/Files/FilesScreen.js +2 -2
  59. package/lib/screens/Files/FilesScreen.js.map +1 -1
  60. package/lib/screens/Home/Components/Channels/Channels.js +91 -77
  61. package/lib/screens/Home/Components/Channels/Channels.js.map +1 -1
  62. package/lib/screens/Home/Components/DirectChannels/DirectChannels.js +249 -115
  63. package/lib/screens/Home/Components/DirectChannels/DirectChannels.js.map +1 -1
  64. package/lib/screens/Home/Components/InviteMembers/index.js +88 -0
  65. package/lib/screens/Home/Components/InviteMembers/index.js.map +1 -0
  66. package/lib/screens/Home/Components/Teams/Teams.js +110 -47
  67. package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
  68. package/lib/screens/Home/Components/TopCommonSlider/TopCommonSlider.js +44 -75
  69. package/lib/screens/Home/Components/TopCommonSlider/TopCommonSlider.js.map +1 -1
  70. package/lib/screens/Home/HomeScreen.js +161 -194
  71. package/lib/screens/Home/HomeScreen.js.map +1 -1
  72. package/lib/screens/Home/styles.js +4 -4
  73. package/lib/screens/Home/styles.js.map +1 -1
  74. package/lib/screens/Inbox/InboxChannelDetail.js +67 -34
  75. package/lib/screens/Inbox/InboxChannelDetail.js.map +1 -1
  76. package/lib/screens/Inbox/InboxDialogMessages.js +2 -2
  77. package/lib/screens/Inbox/InboxDialogMessages.js.map +1 -1
  78. package/lib/screens/Inbox/InboxScreen.js +3 -3
  79. package/lib/screens/Inbox/InboxScreen.js.map +1 -1
  80. package/lib/screens/Login.js +4 -2
  81. package/lib/screens/Login.js.map +1 -1
  82. package/lib/screens/Organization/AddWorkspace.js +42 -38
  83. package/lib/screens/Organization/AddWorkspace.js.map +1 -1
  84. package/lib/screens/Organization/CreateOrganization.js +11 -2
  85. package/lib/screens/Organization/CreateOrganization.js.map +1 -1
  86. package/lib/screens/Organization/InitialChannelOnboarding.js +22 -4
  87. package/lib/screens/Organization/InitialChannelOnboarding.js.map +1 -1
  88. package/lib/screens/Organization/InitializeOrganizationChannel.js +9 -4
  89. package/lib/screens/Organization/InitializeOrganizationChannel.js.map +1 -1
  90. package/lib/screens/Organization/InviteOrganizationMembers.js +52 -10
  91. package/lib/screens/Organization/InviteOrganizationMembers.js.map +1 -1
  92. package/lib/screens/Peoples/AddByEmail.js +24 -6
  93. package/lib/screens/Peoples/AddByEmail.js.map +1 -1
  94. package/lib/screens/Peoples/AddFromContacts.js +172 -87
  95. package/lib/screens/Peoples/AddFromContacts.js.map +1 -1
  96. package/lib/screens/Peoples/AddPeople.js +21 -42
  97. package/lib/screens/Peoples/AddPeople.js.map +1 -1
  98. package/lib/screens/Peoples/People.js +42 -4
  99. package/lib/screens/Peoples/People.js.map +1 -1
  100. package/lib/screens/Profile/ProfileScreen.js +27 -12
  101. package/lib/screens/Profile/ProfileScreen.js.map +1 -1
  102. package/lib/screens/Saved/SavedScreen.js +2 -2
  103. package/lib/screens/Saved/SavedScreen.js.map +1 -1
  104. package/lib/screens/Search/Channels.js +20 -32
  105. package/lib/screens/Search/Channels.js.map +1 -1
  106. package/lib/screens/Search/Files.js +2 -2
  107. package/lib/screens/Search/Files.js.map +1 -1
  108. package/lib/screens/Search/JumpTo.js +2 -2
  109. package/lib/screens/Search/JumpTo.js.map +1 -1
  110. package/lib/screens/Search/People.js +19 -27
  111. package/lib/screens/Search/People.js.map +1 -1
  112. package/lib/screens/Search/Recents.js +26 -31
  113. package/lib/screens/Search/Recents.js.map +1 -1
  114. package/lib/screens/Search/SearchAddChannel.js +366 -227
  115. package/lib/screens/Search/SearchAddChannel.js.map +1 -1
  116. package/lib/screens/Search/SearchChannelPeople.js +70 -37
  117. package/lib/screens/Search/SearchChannelPeople.js.map +1 -1
  118. package/lib/screens/Search/SearchScreen.js +5 -3
  119. package/lib/screens/Search/SearchScreen.js.map +1 -1
  120. package/lib/screens/Search/styles.js +2 -2
  121. package/lib/screens/Search/styles.js.map +1 -1
  122. package/lib/screens/Teams/AddTeam.js +3 -3
  123. package/lib/screens/Teams/AddTeam.js.map +1 -1
  124. package/lib/screens/Teams/Components/Channels/Channels.js +6 -6
  125. package/lib/screens/Teams/Components/Channels/Channels.js.map +1 -1
  126. package/lib/screens/Teams/Components/Members/Members.js +7 -3
  127. package/lib/screens/Teams/Components/Members/Members.js.map +1 -1
  128. package/lib/screens/Teams/Team.js +6 -8
  129. package/lib/screens/Teams/Team.js.map +1 -1
  130. package/lib/screens/Teams/Teams.js +137 -106
  131. package/lib/screens/Teams/Teams.js.map +1 -1
  132. package/lib/screens/Teams/useTeams.js +41 -0
  133. package/lib/screens/Teams/useTeams.js.map +1 -0
  134. package/lib/screens/Wiki/WikiScreen.js +2 -2
  135. package/lib/screens/Wiki/WikiScreen.js.map +1 -1
  136. package/lib/theme/index.js +2 -2
  137. package/lib/theme/index.js.map +1 -1
  138. package/package.json +6 -4
  139. package/lib/navigation/ActivityNavigator.js +0 -61
  140. package/lib/navigation/ActivityNavigator.js.map +0 -1
  141. package/lib/navigation/ExploreNavigator.js +0 -583
  142. package/lib/navigation/ExploreNavigator.js.map +0 -1
  143. package/lib/navigation/InboxNavigator.js +0 -183
  144. package/lib/navigation/InboxNavigator.js.map +0 -1
@@ -1,24 +1,5 @@
1
- import React__default,{useState,useEffect,useCallback}from'react';import {HStack,Box,Avatar,AvatarFallbackText,AvatarImage,AvatarBadge,Text,Checkbox,CheckboxIndicator,CheckboxIcon,CheckIcon}from'@admin-layout/gluestack-ui-mobile';import {Keyboard,TouchableOpacity,Dimensions}from'react-native';import {RoomType}from'common';import {useGetChannelsByUserLazyQuery,useGetOrganizationMembersWithChannelsQuery}from'common/lib/generated/generated.js';import {DialogMessages}from'@messenger-box/platform-mobile';import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector}from'react-redux';import {startCase,uniqBy}from'lodash-es';import {MaterialIcons,Octicons}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../hooks/useDrawerLayout.js';import'../../hooks/useExpoNotificationProvider.js';import'@react-navigation/core';import'../../components/Header/styles.js';import'../../components/Tiles/styles.js';import'../../components/CustomDrawer/CustomDrawer.js';import'../../components/CustomBottomTabs/CustomBottomTabs.js';import'../../components/NavigationHeader/NavigationHeader.js';import'@react-navigation/elements';import'@common-stack/client-react';import'../../components/NavigationHeader/InboxNavigationHeader.js';import {LoadingSpinnerDefault}from'../../components/LoadingSpinner/index.js';import'../../components/WorkSpaceDrawer/WorkSpaceDrawer.js';import'../../components/Channels/ChannelsByAlphabeticalAccordion.js';import {SlackInput}from'../../components/SlackSearchInput/index.js';var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- const windowWidth = Dimensions.get("window").width;
21
- const windowHeight = Dimensions.get("window").height;
1
+ import React__default,{useState,useEffect,useRef}from'react';import {Box,HStack,Text,Avatar,AvatarImage,AvatarFallbackText,AvatarBadge}from'@admin-layout/gluestack-ui-mobile';import {Keyboard,TouchableOpacity,Platform,SafeAreaView,StyleSheet,View,TextInput,FlatList,Dimensions}from'react-native';import {RoomType}from'common';import {NavigationRoutes}from'../../constants/routes.js';import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector}from'react-redux';import {startCase,uniqBy}from'lodash-es';import {MaterialIcons,Feather,Octicons}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../hooks/useDrawerLayout.js';import'../../hooks/useExpoNotificationProvider.js';import'../../hooks/useOptimizedChannelsQueries.js';import {useChannelsLazyQuery,useAddDirectChannelMutation,useAddChannelMutation,useSaveMembersToChannelMutation,useOrganizationMembersWithChannelsQuery}from'../../queries/slackuiQueries.js';Dimensions.get("window").width;
2
+ Dimensions.get("window").height;
22
3
  Dimensions.get("screen").height;
23
4
  const defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public, RoomType.Direct];
24
5
  const orgMemersDataFetchLimit = 10;
@@ -42,7 +23,6 @@ const useKeyboard = () => {
42
23
  return keyboardHeight;
43
24
  };
44
25
  const SearchAddChannel = (props) => {
45
- var _a, _b;
46
26
  const navigation = useNavigation();
47
27
  const {
48
28
  orgName,
@@ -52,37 +32,39 @@ const SearchAddChannel = (props) => {
52
32
  const user = useSelector(userSelector);
53
33
  const [channels, setChannels] = useState([]);
54
34
  const [initialOrgMembers, setInitialOrgMembers] = useState([]);
55
- const [selectedMembers, setSelectedMembers] = useState([]);
56
- const [selectedChannels, setSelectedChannels] = useState([]);
57
- const [showChannels, setShowChannels] = useState(false);
35
+ const [selectedItems, setSelectedItems] = useState([]);
36
+ const [searchText, setSearchText] = useState("");
58
37
  const [offset, setOffset] = useState(0);
59
- const [organizationMembers, setOrganizationMembers] = useState([]);
60
- const [totalMembers, setTotalMembers] = useState(0);
61
38
  const [channelId, setChannelId] = useState(null);
62
- const [isSetInputFocusOut, setInputFocusOut] = useState(false);
63
39
  const [isCreateNewChannel, setIsCreateNewChannel] = useState(false);
64
40
  useKeyboard();
41
+ const inputRef = useRef(null);
65
42
  const [tags, setTags] = useState([]);
66
- const labelExtractor = (tag) => (tag == null ? void 0 : tag.id) ? tag == null ? void 0 : tag.id : tag == null ? void 0 : tag.userId;
67
43
  const [getChannelByUser, {
68
44
  loading: isChannelByUserLoading
69
- }] = useGetChannelsByUserLazyQuery();
45
+ }] = useChannelsLazyQuery();
46
+ const [addDirectChannel, {
47
+ loading: isAddingDirectChannel
48
+ }] = useAddDirectChannelMutation();
49
+ const [addChannel, {
50
+ loading: isAddingChannel
51
+ }] = useAddChannelMutation();
52
+ const [saveMembersToChannel, {
53
+ loading: isSavingMembers
54
+ }] = useSaveMembersToChannelMutation();
55
+ const [messageText, setMessageText] = useState("");
70
56
  const {
71
57
  data,
72
58
  loading: oLoading,
73
59
  error: oError,
74
60
  refetch
75
- } = useGetOrganizationMembersWithChannelsQuery({
76
- variables: {
61
+ } = useOrganizationMembersWithChannelsQuery(orgName, {
62
+ channelCriteria: {
77
63
  orgName,
78
- channelCriteria: {
79
- orgName,
80
- type: defaultChannelType
81
- },
82
- offset,
83
- limit: orgMemersDataFetchLimit
64
+ type: defaultChannelType
84
65
  },
85
- fetchPolicy: "cache-and-network"
66
+ offset,
67
+ limit: orgMemersDataFetchLimit
86
68
  });
87
69
  useFocusEffect(React__default.useCallback(() => {
88
70
  refetch({
@@ -95,42 +77,58 @@ const SearchAddChannel = (props) => {
95
77
  limit: orgMemersDataFetchLimit
96
78
  });
97
79
  return () => {
98
- setChannels([]);
99
- setChannelId(null);
100
- setInitialOrgMembers([]);
101
80
  };
102
- }, [orgName]));
81
+ }, []));
103
82
  React__default.useEffect(() => {
104
83
  navigation.setOptions({
105
- headerLeft: (props2) => /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.goBack() }, /* @__PURE__ */ React__default.createElement(MaterialIcons, { size: 20, name: "close", color: "black" }))
84
+ headerLeft: (props2) => /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => {
85
+ console.log("canGoBack:", navigation.canGoBack(), "Platform:", Platform.OS);
86
+ if (Platform.OS === "macos") {
87
+ navigation.navigate("MainStack", {
88
+ screen: NavigationRoutes.Home,
89
+ params: {
90
+ orgName
91
+ }
92
+ });
93
+ } else if (navigation.canGoBack()) {
94
+ navigation.goBack();
95
+ } else {
96
+ navigation.navigate("MainStack", {
97
+ screen: NavigationRoutes.Home,
98
+ params: {
99
+ orgName
100
+ }
101
+ });
102
+ }
103
+ } }, /* @__PURE__ */ React__default.createElement(MaterialIcons, { size: 20, name: "close", color: "black" }))
106
104
  });
107
105
  }, []);
108
106
  React__default.useEffect(() => {
109
- var _a2, _b2, _c, _d, _e, _f, _g, _h, _i, _j, _k;
107
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
110
108
  if (data == null ? void 0 : data.channelsByUser) {
111
- const allChannels = (_d = (_c = (_b2 = (_a2 = data == null ? void 0 : data.channelsByUser) == null ? void 0 : _a2.filter((ch) => {
112
- var _a3, _b3, _c2;
113
- return ch.type == RoomType.Direct && ((_a3 = ch == null ? void 0 : ch.members) == null ? void 0 : _a3.length) == 1 && ((_b3 = ch == null ? void 0 : ch.members) == null ? void 0 : _b3.filter((ch2) => {
114
- var _a4;
115
- return ((_a4 = ch2 == null ? void 0 : ch2.user) == null ? void 0 : _a4.id) == (user == null ? void 0 : user.id);
109
+ const allChannels = (_d = (_c = (_b = (_a = data == null ? void 0 : data.channelsByUser) == null ? void 0 : _a.filter((ch) => {
110
+ var _a2, _b2, _c2;
111
+ return ch.type == RoomType.Direct && ((_a2 = ch == null ? void 0 : ch.members) == null ? void 0 : _a2.length) == 1 && ((_b2 = ch == null ? void 0 : ch.members) == null ? void 0 : _b2.filter((ch2) => {
112
+ var _a3;
113
+ return ((_a3 = ch2 == null ? void 0 : ch2.user) == null ? void 0 : _a3.id) == (user == null ? void 0 : user.id);
116
114
  })) ? ch : (_c2 = ch == null ? void 0 : ch.members) == null ? void 0 : _c2.filter((m) => {
117
- var _a4;
118
- return ((_a4 = m == null ? void 0 : m.user) == null ? void 0 : _a4.id) != (user == null ? void 0 : user.id);
115
+ var _a3;
116
+ return ((_a3 = m == null ? void 0 : m.user) == null ? void 0 : _a3.id) != (user == null ? void 0 : user.id);
119
117
  });
120
- })) == null ? void 0 : _b2.map((i) => {
121
- var _a3, _b3, _c2, _d2, _e2, _f2, _g2, _h2, _i2;
118
+ })) == null ? void 0 : _b.map((i) => {
119
+ var _a2, _b2, _c2, _d2, _e2, _f2, _g2, _h2, _i2;
122
120
  const ch = {
123
121
  id: i == null ? void 0 : i.id,
124
122
  title: i == null ? void 0 : i.title,
125
123
  type: i == null ? void 0 : i.type
126
124
  };
127
- const channelMembers = (_c2 = (_b3 = (_a3 = i.members) == null ? void 0 : _a3.map((m) => m == null ? void 0 : m.user)) == null ? void 0 : _b3.filter((ch2) => {
128
- var _a4;
129
- return ((_a4 = i.members) == null ? void 0 : _a4.length) == 1 && (ch2 == null ? void 0 : ch2.id) == (user == null ? void 0 : user.id) ? ch2 : (ch2 == null ? void 0 : ch2.id) != (user == null ? void 0 : user.id);
125
+ const channelMembers = (_c2 = (_b2 = (_a2 = i.members) == null ? void 0 : _a2.map((m) => m == null ? void 0 : m.user)) == null ? void 0 : _b2.filter((ch2) => {
126
+ var _a3;
127
+ return ((_a3 = i.members) == null ? void 0 : _a3.length) == 1 && (ch2 == null ? void 0 : ch2.id) == (user == null ? void 0 : user.id) ? ch2 : (ch2 == null ? void 0 : ch2.id) != (user == null ? void 0 : user.id);
130
128
  })) != null ? _c2 : null;
131
129
  const title = ch.type == RoomType.Direct ? (_f2 = (_e2 = (_d2 = channelMembers == null ? void 0 : channelMembers.map((u) => {
132
- var _a4;
133
- return (u == null ? void 0 : u.givenName) + " " + ((_a4 = u == null ? void 0 : u.familyName) != null ? _a4 : "");
130
+ var _a3;
131
+ return (u == null ? void 0 : u.givenName) + " " + ((_a3 = u == null ? void 0 : u.familyName) != null ? _a3 : "");
134
132
  })) == null ? void 0 : _d2.filter((mu) => mu)) == null ? void 0 : _e2.join(", ")) != null ? _f2 : "" : ch.title;
135
133
  ch.title = title;
136
134
  ch.channelImage = (_g2 = channelMembers[0]) == null ? void 0 : _g2.picture;
@@ -142,20 +140,20 @@ const SearchAddChannel = (props) => {
142
140
  return ch;
143
141
  })) == null ? void 0 : _c.filter((ch) => ch)) != null ? _d : [];
144
142
  const existingDirectChannelsToDelete = new Set((_f = (_e = data == null ? void 0 : data.channelsByUser) == null ? void 0 : _e.map((ch) => {
145
- var _a3;
146
- return (_a3 = ch == null ? void 0 : ch.members) == null ? void 0 : _a3.map((m) => {
147
- var _a4;
148
- return (_a4 = m == null ? void 0 : m.user) == null ? void 0 : _a4.id;
143
+ var _a2;
144
+ return (_a2 = ch == null ? void 0 : ch.members) == null ? void 0 : _a2.map((m) => {
145
+ var _a3;
146
+ return (_a3 = m == null ? void 0 : m.user) == null ? void 0 : _a3.id;
149
147
  });
150
148
  })) == null ? void 0 : _f.flat(1));
151
149
  const allOrgMembers = (_k = (_j = (_i = (_h = (_g = data == null ? void 0 : data.getOrganizationMembers) == null ? void 0 : _g.data) == null ? void 0 : _h.filter((m) => {
152
- var _a3;
153
- return ((_a3 = m == null ? void 0 : m.user) == null ? void 0 : _a3.id) != (user == null ? void 0 : user.id);
150
+ var _a2;
151
+ return ((_a2 = m == null ? void 0 : m.user) == null ? void 0 : _a2.id) != (user == null ? void 0 : user.id);
154
152
  }).filter((obj) => !existingDirectChannelsToDelete.has(obj == null ? void 0 : obj.userId))) == null ? void 0 : _i.map((i) => {
155
- var _a3, _b3, _c2, _d2, _e2, _f2;
153
+ var _a2, _b2, _c2, _d2, _e2, _f2;
156
154
  const ch = {
157
155
  id: null,
158
- title: ((_a3 = i == null ? void 0 : i.user) == null ? void 0 : _a3.givenName) + " " + ((_b3 = i == null ? void 0 : i.user) == null ? void 0 : _b3.familyName),
156
+ title: ((_a2 = i == null ? void 0 : i.user) == null ? void 0 : _a2.givenName) + " " + ((_b2 = i == null ? void 0 : i.user) == null ? void 0 : _b2.familyName),
159
157
  type: RoomType.Direct,
160
158
  channelImage: (_c2 = i == null ? void 0 : i.user) == null ? void 0 : _c2.picture,
161
159
  imageAcronym: startCase((_e2 = (_d2 = i == null ? void 0 : i.user) == null ? void 0 : _d2.username) == null ? void 0 : _e2.charAt(0)),
@@ -177,20 +175,20 @@ const SearchAddChannel = (props) => {
177
175
  }
178
176
  }, [data]);
179
177
  React__default.useEffect(() => {
180
- var _a2;
178
+ var _a;
181
179
  if (channelId && (tags == null ? void 0 : tags.length) === 0)
182
180
  setChannelId(null);
183
181
  if (!channelId && (tags == null ? void 0 : tags.length) > 0) {
184
- const userIds = [...new Set((_a2 = tags == null ? void 0 : tags.map((t) => {
185
- var _a3;
186
- return (t == null ? void 0 : t.userId) ? t == null ? void 0 : t.userId : (_a3 = t == null ? void 0 : t.members) == null ? void 0 : _a3.map((m) => m == null ? void 0 : m.id);
187
- })) == null ? void 0 : _a2.flat(1))];
182
+ const userIds = [...new Set((_a = tags == null ? void 0 : tags.map((t) => {
183
+ var _a2;
184
+ return (t == null ? void 0 : t.userId) ? t == null ? void 0 : t.userId : (_a2 = t == null ? void 0 : t.members) == null ? void 0 : _a2.map((m) => m == null ? void 0 : m.id);
185
+ })) == null ? void 0 : _a.flat(1))];
188
186
  getChannelId(userIds);
189
187
  }
190
188
  console.log("channelid", channelId, " tags?.length", tags == null ? void 0 : tags.length);
191
189
  }, [channelId, tags, orgName]);
192
190
  const getChannelId = React__default.useCallback(async (userIds) => {
193
- var _a2, _b2, _c, _d, _e;
191
+ var _a, _b, _c, _d, _e;
194
192
  const res = await getChannelByUser({
195
193
  variables: {
196
194
  criteria: {
@@ -203,171 +201,312 @@ const SearchAddChannel = (props) => {
203
201
  limit: 1
204
202
  }
205
203
  });
206
- if (((_b2 = (_a2 = res == null ? void 0 : res.data) == null ? void 0 : _a2.channelsByUser) == null ? void 0 : _b2.length) > 0) {
204
+ if (((_b = (_a = res == null ? void 0 : res.data) == null ? void 0 : _a.channelsByUser) == null ? void 0 : _b.length) > 0) {
207
205
  setChannelId((_e = (_d = (_c = res == null ? void 0 : res.data) == null ? void 0 : _c.channelsByUser) == null ? void 0 : _d[0]) == null ? void 0 : _e.id);
208
- setInputFocusOut(true);
209
206
  setIsCreateNewChannel(false);
210
207
  } else {
211
208
  setChannelId(null);
212
- setInputFocusOut(false);
213
209
  setIsCreateNewChannel(true);
214
210
  }
215
211
  }, [orgName, user]);
216
- React__default.useCallback((item) => {
217
- openInbox(item);
218
- if (selectedChannels) {
219
- const findIndex = selectedChannels.findIndex((ch) => (ch == null ? void 0 : ch.id) == (item == null ? void 0 : item.id) && (ch == null ? void 0 : ch.userId) == (item == null ? void 0 : item.userId));
220
- const selectedChannelValue = findIndex === -1 ? [...selectedChannels, {
221
- id: item == null ? void 0 : item.id,
222
- userId: item == null ? void 0 : item.userId
223
- }] : selectedChannels == null ? void 0 : selectedChannels.filter((ch) => (item == null ? void 0 : item.isOrgMembers) ? (ch == null ? void 0 : ch.userId) !== (item == null ? void 0 : item.userId) : (ch == null ? void 0 : ch.id) !== (item == null ? void 0 : item.id));
224
- setSelectedChannels(selectedChannelValue);
212
+ const toggleItemSelection = (item) => {
213
+ const itemExists = selectedItems.some((selectedItem) => selectedItem.id && selectedItem.id === item.id || selectedItem.userId && selectedItem.userId === item.userId);
214
+ if (itemExists) {
215
+ setSelectedItems(selectedItems.filter((selectedItem) => !(selectedItem.id && selectedItem.id === item.id || selectedItem.userId && selectedItem.userId === item.userId)));
216
+ } else {
217
+ if (item.type === RoomType.Channel || item.type === RoomType.Private) {
218
+ setSelectedItems([item]);
219
+ } else if (item.type === RoomType.Direct) {
220
+ const filteredSelectedItems = selectedItems.filter((selectedItem) => selectedItem.type !== RoomType.Channel && selectedItem.type !== RoomType.Private);
221
+ setSelectedItems([...filteredSelectedItems, item]);
222
+ } else {
223
+ setSelectedItems([...selectedItems, item]);
224
+ }
225
225
  }
226
- }, [selectedChannels]);
227
- const openInbox = React__default.useCallback((item) => {
228
- }, [orgName]);
229
- const renderChannelSuggestions = useCallback((item, onPress, index) => {
230
- var _a2, _b2, _c, _d;
231
- return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { key: `channel-suggestions-${index}`, style: {
232
- marginVertical: 10
233
- }, onPress: () => onPress(item) }, /* @__PURE__ */ React__default.createElement(HStack, { flex: 1, bg: "white", alignItems: "center", justifyContent: "space-between" }, /* @__PURE__ */ React__default.createElement(HStack, { flex: 1, alignItems: "center", space: "sm" }, /* @__PURE__ */ React__default.createElement(Box, { m: "$0", p: "$0" }, item.type == RoomType.Direct ? /* @__PURE__ */ React__default.createElement(Avatar, { size: "sm", bg: "transparent" }, /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, item == null ? void 0 : item.imageAcronym), /* @__PURE__ */ React__default.createElement(AvatarImage, { alt: "image", size: "md", style: {
234
- borderRadius: 6,
235
- borderWidth: 2,
236
- borderColor: "#fff"
237
- }, source: {
238
- uri: item == null ? void 0 : item.channelImage
239
- } }), (item == null ? void 0 : item.totalMembers) > 1 ? /* @__PURE__ */ React__default.createElement(
240
- AvatarBadge,
241
- {
242
- right: "-$1",
243
- bottom: "-$1",
244
- style: {
245
- width: 20,
246
- height: 20
247
- },
248
- alignItems: "center",
249
- bg: "#211627",
250
- rounded: "$md"
251
- },
252
- /* @__PURE__ */ React__default.createElement(Text, { style: {
253
- fontSize: 12,
254
- fontWeight: "bold",
255
- color: "#fff"
256
- } }, item == null ? void 0 : item.totalMembers)
257
- ) : /* @__PURE__ */ React__default.createElement(AvatarBadge, { style: {
258
- width: 10,
259
- height: 10
260
- }, bg: "$green800" })) : item.type == RoomType.Private ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Octicons, { color: "black", name: "lock", size: 20 })) : /* @__PURE__ */ React__default.createElement(Octicons, { color: "black", name: "hash", size: 20 })), /* @__PURE__ */ React__default.createElement(Text, { color: "$coolGray800", fontWeight: "$bold" }, item.title)), /* @__PURE__ */ React__default.createElement(Checkbox, { value: item == null ? void 0 : item.id, isChecked: selectedChannels && ((_a2 = selectedChannels == null ? void 0 : selectedChannels.filter((ch) => (ch == null ? void 0 : ch.id) === (item == null ? void 0 : item.id) && (ch == null ? void 0 : ch.userId) === (item == null ? void 0 : item.userId))) == null ? void 0 : _a2.length) > 0 ? true : false, accessibilityLabel: (_b2 = item.title) != null ? _b2 : "", "aria-label": (_c = item.title) != null ? _c : "", "aria-labelledby": (_d = item.title) != null ? _d : "", borderColor: "$trueGray600" }, /* @__PURE__ */ React__default.createElement(CheckboxIndicator, null, /* @__PURE__ */ React__default.createElement(CheckboxIcon, { as: CheckIcon })))));
261
- }, []);
262
- const onSuggestionPress = useCallback((item) => {
263
- var _a2, _b2;
264
- if (tags) {
265
- const findIndex = tags == null ? void 0 : tags.findIndex((ch) => (ch == null ? void 0 : ch.id) == (item == null ? void 0 : item.id) && (ch == null ? void 0 : ch.userId) == (item == null ? void 0 : item.userId));
266
- if (findIndex === -1) {
267
- if ((item == null ? void 0 : item.id) && (item == null ? void 0 : item.type) !== RoomType.Direct) {
268
- setChannelId(item == null ? void 0 : item.id);
269
- setInputFocusOut(true);
270
- setTags([item]);
226
+ };
227
+ const isItemSelected = (item) => {
228
+ return selectedItems.some((selectedItem) => selectedItem.id && selectedItem.id === item.id || selectedItem.userId && selectedItem.userId === item.userId);
229
+ };
230
+ const handleSendMessage = async () => {
231
+ var _a, _b, _c, _d;
232
+ if (selectedItems.length === 0)
233
+ return;
234
+ try {
235
+ const selectedChannel = selectedItems[0] || {};
236
+ if (selectedChannel && Object.keys(selectedChannel).length > 0) {
237
+ navigation.navigate(NavigationRoutes.DialogMessages, {
238
+ initialMessage: messageText,
239
+ channelId: (_a = selectedChannel == null ? void 0 : selectedChannel.id) == null ? void 0 : _a.toString(),
240
+ title: (_b = selectedChannel == null ? void 0 : selectedChannel.title) == null ? void 0 : _b.toString(),
241
+ totalMembers: selectedChannel == null ? void 0 : selectedChannel.totalMembers,
242
+ channelType: selectedChannel == null ? void 0 : selectedChannel.type,
243
+ orgName,
244
+ hideTabBar: true
245
+ });
246
+ return;
247
+ }
248
+ if (channelId) {
249
+ navigation.navigate(NavigationRoutes.DialogMessages, {
250
+ channelId,
251
+ initialMessage: messageText,
252
+ orgName
253
+ });
254
+ return;
255
+ }
256
+ if (isCreateNewChannel) {
257
+ if (selectedItems[0].type === RoomType.Direct || selectedItems.length === 1 && selectedItems[0].isOrgMembers) {
258
+ const userIds = selectedItems.map((item) => {
259
+ var _a2, _b2;
260
+ return item.userId || (((_a2 = item.members) == null ? void 0 : _a2.length) > 0 ? (_b2 = item.members[0]) == null ? void 0 : _b2.id : null);
261
+ }).filter(Boolean);
262
+ const result = await addDirectChannel({
263
+ variables: {
264
+ receiver: userIds,
265
+ displayName: "Direct Channel"
266
+ }
267
+ });
268
+ if ((_c = result.data) == null ? void 0 : _c.createDirectChannel) {
269
+ const newChannelId = result.data.createDirectChannel;
270
+ navigation.navigate("ChannelInfo", {
271
+ channelId: newChannelId,
272
+ initialMessage: messageText,
273
+ orgName
274
+ });
275
+ }
271
276
  } else {
272
- const previousTags = (_a2 = tags == null ? void 0 : tags.filter((t) => (t == null ? void 0 : t.type) === (item == null ? void 0 : item.type))) != null ? _a2 : [];
273
- const currentTags = [...previousTags != null ? previousTags : [], item];
274
- setTags(currentTags);
275
- const userIds = [...new Set((_b2 = currentTags == null ? void 0 : currentTags.map((t) => {
276
- var _a3;
277
- return (t == null ? void 0 : t.userId) ? t == null ? void 0 : t.userId : (_a3 = t == null ? void 0 : t.members) == null ? void 0 : _a3.map((m) => m == null ? void 0 : m.id);
278
- })) == null ? void 0 : _b2.flat(1))];
279
- getChannelId(userIds);
277
+ const userIds = selectedItems.map((item) => {
278
+ var _a2, _b2;
279
+ return item.userId || (((_a2 = item.members) == null ? void 0 : _a2.length) > 0 ? (_b2 = item.members[0]) == null ? void 0 : _b2.id : null);
280
+ }).filter(Boolean);
281
+ const result = await addChannel({
282
+ variables: {
283
+ name: `${selectedItems[0].title}'s chat`,
284
+ description: "",
285
+ type: RoomType.Direct
286
+ }
287
+ });
288
+ if ((_d = result.data) == null ? void 0 : _d.createChannel) {
289
+ const newChannelId = result.data.createChannel.id;
290
+ if (userIds.length > 0) {
291
+ await saveMembersToChannel({
292
+ variables: {
293
+ channelId: newChannelId,
294
+ membersIds: userIds
295
+ }
296
+ });
297
+ }
298
+ navigation.navigate("ChannelInfo", {
299
+ channelId: newChannelId,
300
+ initialMessage: messageText,
301
+ orgName
302
+ });
303
+ }
280
304
  }
281
305
  }
306
+ } catch (error) {
307
+ console.error("Error creating channel:", error);
282
308
  }
283
- }, [tags, orgName]);
284
- const onTagPress = useCallback((item) => {
285
- if (tags) {
286
- const filteredValue = tags == null ? void 0 : tags.filter((ch) => (item == null ? void 0 : item.isOrgMembers) ? (ch == null ? void 0 : ch.userId) !== (item == null ? void 0 : item.userId) : (ch == null ? void 0 : ch.id) !== (item == null ? void 0 : item.id));
287
- setTags(filteredValue);
288
- console.log("tagpress");
289
- }
290
- }, [tags]);
291
- const renderTagItemImage = useCallback((type, image, imageAcronym) => {
292
- return /* @__PURE__ */ React__default.createElement(Box, { m: "$0", p: "$0" }, type == RoomType.Direct ? /* @__PURE__ */ React__default.createElement(Avatar, { size: "sm", bg: "transparent", borderRadius: 6 }, /* @__PURE__ */ React__default.createElement(AvatarImage, { alt: "image", size: "md", style: {
293
- borderRadius: 6,
294
- borderWidth: 2,
295
- borderColor: "#fff"
296
- }, source: {
297
- uri: image
298
- } }), /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, imageAcronym)) : type == RoomType.Private ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Octicons, { color: "black", name: "lock", size: 20 })) : /* @__PURE__ */ React__default.createElement(Octicons, { color: "black", name: "hash", size: 20 }));
299
- }, []);
300
- const renderTagItem = useCallback((title, type, image, imageAcronym, key) => {
301
- return /* @__PURE__ */ React__default.createElement(HStack, { alignItems: "center", space: "sm", py: "$2", key: `render-tag-items-${key}` }, renderTagItemImage(type, image, imageAcronym), /* @__PURE__ */ React__default.createElement(Box, { bg: "$lightBlue100" }, /* @__PURE__ */ React__default.createElement(Text, { color: "$coolGray800", textAlign: "center", bold: true }, title)));
302
- }, []);
303
- const renderTag = useCallback((item, onPress, index) => {
304
- var _a2;
305
- return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => onPress(item), key: `channel-tags-${index}` }, item.isOrgMembers || (item == null ? void 0 : item.type) != RoomType.Direct ? /* @__PURE__ */ React__default.createElement(Box, { mx: "$1" }, renderTagItem(item == null ? void 0 : item.title, item == null ? void 0 : item.type, item == null ? void 0 : item.channelImage, item == null ? void 0 : item.imageAcronym, index)) : /* @__PURE__ */ React__default.createElement(HStack, { alignItems: "center", space: "sm", py: "$1" }, (_a2 = item == null ? void 0 : item.members) == null ? void 0 : _a2.map((m, i) => {
306
- var _a3;
307
- const title = (item == null ? void 0 : item.type) == RoomType.Direct ? (m == null ? void 0 : m.givenName) + " " + (m == null ? void 0 : m.familyName) : item.title;
308
- const acronym = startCase((_a3 = m == null ? void 0 : m.username) == null ? void 0 : _a3.charAt(0));
309
- return renderTagItem(title, item == null ? void 0 : item.type, m == null ? void 0 : m.picture, acronym, i);
310
- })));
311
- }, []);
312
- return /* @__PURE__ */ React__default.createElement(Box, { flex: 1, bg: "$white", w: windowWidth, h: windowHeight }, /* @__PURE__ */ React__default.createElement(
313
- SlackInput,
314
- {
315
- tags,
316
- suggestions: channels,
317
- onChangeTags: setTags,
318
- labelExtractor,
319
- allowCustomTags: false,
320
- isSetInputFocusOut,
321
- renderLeftElement: () => /* @__PURE__ */ React__default.createElement(Text, { pl: "$4", pr: "$1", fontSize: 15 }, "To:"),
322
- tagContainerStyle: {
323
- borderBottomWidth: 1,
324
- borderColor: "#D3D3D3",
325
- paddingVertical: 5
326
- },
327
- inputProps: {
328
- placeholder: "Search for a channel or conversation",
329
- placeholderTextColor: "#404040",
330
- autoCapitalize: "none",
331
- autoCorrect: false
332
- },
333
- inputStyle: {
334
- fontSize: 15,
335
- height: 30
336
- },
337
- flatListGluestackUiProps: {
338
- flex: 1,
339
- pb: "$10",
340
- contentContainerStyle: {
341
- flex: 1,
342
- marginBottom: 100,
343
- backgroundColor: "white",
344
- paddingHorizontal: 10
345
- }
346
- },
347
- flatListStyle: {
348
- maxHeight: "100%",
349
- maxWidth: "100%"
350
- },
351
- renderSuggestion: renderChannelSuggestions,
352
- filterSuggestions: (text) => {
353
- if (!text || text === "") {
354
- return [];
355
- }
356
- return channels == null ? void 0 : channels.filter((item) => {
357
- var _a2, _b2;
358
- return (_b2 = (_a2 = item == null ? void 0 : item.title) == null ? void 0 : _a2.toLowerCase()) == null ? void 0 : _b2.includes(text == null ? void 0 : text.toLowerCase());
359
- });
360
- },
361
- onSuggestionPress,
362
- renderTag,
363
- onTagPress
364
- }
365
- ), /* @__PURE__ */ React__default.createElement(Box, { flex: 1 }, isChannelByUserLoading ? /* @__PURE__ */ React__default.createElement(LoadingSpinnerDefault, null) : /* @__PURE__ */ React__default.createElement(DialogMessages, __spreadProps(__spreadValues({}, props), { channelId, isCreateNewChannel, newChannelData: {
366
- type: (_a = RoomType) == null ? void 0 : _a.Direct,
367
- userIds: [...new Set((_b = tags == null ? void 0 : tags.map((t) => {
368
- var _a2;
369
- return (t == null ? void 0 : t.userId) ? t == null ? void 0 : t.userId : (_a2 = t == null ? void 0 : t.members) == null ? void 0 : _a2.map((m) => m == null ? void 0 : m.id);
370
- })) == null ? void 0 : _b.flat(1))]
371
- } }))));
309
+ };
310
+ const renderSelectedItemChip = (item, index) => {
311
+ return /* @__PURE__ */ React__default.createElement(View, { key: index, style: styles.chipContainer }, /* @__PURE__ */ React__default.createElement(Avatar, { size: "xs", style: styles.chipAvatar }, item.channelImage ? /* @__PURE__ */ React__default.createElement(AvatarImage, { source: {
312
+ uri: item.channelImage
313
+ }, alt: item.title }) : /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, item.imageAcronym || item.title.charAt(0))), /* @__PURE__ */ React__default.createElement(Text, { style: styles.chipText }, item.title));
314
+ };
315
+ const renderListItem = (item, index) => {
316
+ return /* @__PURE__ */ React__default.createElement(HStack, { key: index, style: styles.listItem }, /* @__PURE__ */ React__default.createElement(HStack, { style: styles.listItemLeft }, item.type == RoomType.Channel && /* @__PURE__ */ React__default.createElement(View, { style: styles.iconContainer }, /* @__PURE__ */ React__default.createElement(Octicons, { name: "hash", size: 20, color: "#000" })), item.type == RoomType.Private && /* @__PURE__ */ React__default.createElement(View, { style: styles.iconContainer }, /* @__PURE__ */ React__default.createElement(Octicons, { name: "lock", size: 20, color: "#000" })), item.type == RoomType.Direct && /* @__PURE__ */ React__default.createElement(Avatar, { size: "sm", style: styles.userAvatar }, item.channelImage ? /* @__PURE__ */ React__default.createElement(AvatarImage, { source: {
317
+ uri: item.channelImage
318
+ }, alt: item.title }) : /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, item.title.charAt(0)), /* @__PURE__ */ React__default.createElement(AvatarBadge, { style: styles.onlineBadge })), /* @__PURE__ */ React__default.createElement(HStack, { style: styles.titleContainer }, /* @__PURE__ */ React__default.createElement(Text, { style: styles.itemTitle }, item.title), item.type === "app" && /* @__PURE__ */ React__default.createElement(View, { style: styles.appLabel }, /* @__PURE__ */ React__default.createElement(Text, { style: styles.appLabelText }, "APP")))), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => toggleItemSelection(item) }, isItemSelected(item) ? /* @__PURE__ */ React__default.createElement(View, { style: styles.checkedBox }, /* @__PURE__ */ React__default.createElement(Feather, { name: "check", size: 18, color: "#fff" })) : /* @__PURE__ */ React__default.createElement(View, { style: styles.uncheckedBox })));
319
+ };
320
+ const listData = [...channels];
321
+ const filteredData = searchText.trim() ? listData.filter((item) => item.type !== "header" && item.title.toLowerCase().includes(searchText.toLowerCase())) : listData;
322
+ return /* @__PURE__ */ React__default.createElement(SafeAreaView, { style: {
323
+ flex: 1,
324
+ backgroundColor: "#fff"
325
+ } }, /* @__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(FlatList, { style: styles.listContainer, data: filteredData, renderItem: ({
326
+ item,
327
+ index
328
+ }) => renderListItem(item, index), keyExtractor: (item, index) => {
329
+ var _a, _b;
330
+ return ((_a = item.id) == null ? void 0 : _a.toString()) || ((_b = item.userId) == null ? void 0 : _b.toString()) || index.toString();
331
+ }, showsVerticalScrollIndicator: false }), /* @__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", value: messageText, onChangeText: setMessageText }), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: styles.sendButton, onPress: handleSendMessage }, /* @__PURE__ */ React__default.createElement(Feather, { name: "arrow-right", size: 22, color: "#fff" })))));
372
332
  };
333
+ const styles = StyleSheet.create({
334
+ container: {
335
+ flex: 1,
336
+ backgroundColor: "#fff"
337
+ },
338
+ header: {
339
+ flexDirection: "row",
340
+ justifyContent: "space-between",
341
+ alignItems: "center",
342
+ paddingHorizontal: 16,
343
+ paddingVertical: 12,
344
+ borderBottomWidth: 1,
345
+ borderBottomColor: "#E5E5E5"
346
+ },
347
+ headerTitle: {
348
+ fontSize: 18,
349
+ fontWeight: "bold"
350
+ },
351
+ searchContainer: {
352
+ paddingHorizontal: 16,
353
+ paddingVertical: 12,
354
+ borderBottomWidth: 1,
355
+ borderBottomColor: "#E5E5E5",
356
+ flexDirection: "row",
357
+ alignItems: "flex-start"
358
+ },
359
+ toLabel: {
360
+ fontSize: 16,
361
+ marginRight: 8,
362
+ marginTop: 8,
363
+ color: "#374151"
364
+ },
365
+ chipContainerWrapper: {
366
+ flex: 1
367
+ },
368
+ chipWrapView: {
369
+ flexDirection: "row",
370
+ flexWrap: "wrap"
371
+ },
372
+ chipScrollView: {
373
+ flex: 1
374
+ },
375
+ chipScrollContent: {
376
+ alignItems: "center",
377
+ flexDirection: "row",
378
+ flexWrap: "wrap"
379
+ },
380
+ chipContainer: {
381
+ flexDirection: "row",
382
+ alignItems: "center",
383
+ backgroundColor: "#EFF6FF",
384
+ borderRadius: 4,
385
+ paddingHorizontal: 8,
386
+ paddingVertical: 6,
387
+ marginRight: 8,
388
+ marginBottom: 8
389
+ },
390
+ chipAvatar: {
391
+ width: 20,
392
+ height: 20,
393
+ marginRight: 4
394
+ },
395
+ chipText: {
396
+ color: "#1E40AF",
397
+ fontSize: 14
398
+ },
399
+ searchInput: {
400
+ flex: 1,
401
+ height: 40,
402
+ fontSize: 16,
403
+ minWidth: 100
404
+ },
405
+ listContainer: {
406
+ flex: 1
407
+ },
408
+ sectionHeader: {
409
+ flexDirection: "row",
410
+ alignItems: "center",
411
+ padding: 16,
412
+ paddingBottom: 8
413
+ },
414
+ sectionHeaderText: {
415
+ marginLeft: 8,
416
+ fontWeight: "bold",
417
+ fontSize: 16,
418
+ color: "#374151"
419
+ },
420
+ listItem: {
421
+ flexDirection: "row",
422
+ alignItems: "center",
423
+ justifyContent: "space-between",
424
+ paddingHorizontal: 16,
425
+ paddingVertical: 12
426
+ },
427
+ listItemLeft: {
428
+ flexDirection: "row",
429
+ alignItems: "center",
430
+ flex: 1
431
+ },
432
+ iconContainer: {
433
+ width: 24,
434
+ height: 24,
435
+ justifyContent: "center",
436
+ alignItems: "center",
437
+ marginRight: 12
438
+ },
439
+ userAvatar: {
440
+ marginRight: 12
441
+ },
442
+ onlineBadge: {
443
+ width: 8,
444
+ height: 8,
445
+ backgroundColor: "#10B981",
446
+ borderWidth: 1,
447
+ borderColor: "#FFFFFF",
448
+ bottom: 0,
449
+ right: 0
450
+ },
451
+ titleContainer: {
452
+ flexDirection: "row",
453
+ alignItems: "center"
454
+ },
455
+ itemTitle: {
456
+ fontSize: 16,
457
+ color: "#1F2937"
458
+ },
459
+ appLabel: {
460
+ backgroundColor: "#E5E5E5",
461
+ borderRadius: 4,
462
+ paddingHorizontal: 6,
463
+ paddingVertical: 2,
464
+ marginLeft: 8
465
+ },
466
+ appLabelText: {
467
+ fontSize: 10,
468
+ fontWeight: "bold",
469
+ color: "#4B5563"
470
+ },
471
+ uncheckedBox: {
472
+ width: 22,
473
+ height: 22,
474
+ borderRadius: 4,
475
+ borderWidth: 1,
476
+ borderColor: "#D1D5DB"
477
+ },
478
+ checkedBox: {
479
+ width: 22,
480
+ height: 22,
481
+ borderRadius: 4,
482
+ backgroundColor: "#2563EB",
483
+ justifyContent: "center",
484
+ alignItems: "center"
485
+ },
486
+ messageInputContainer: {
487
+ borderTopWidth: 1,
488
+ borderTopColor: "#E5E5E5",
489
+ paddingHorizontal: 16,
490
+ paddingVertical: 12,
491
+ flexDirection: "row",
492
+ alignItems: "center"
493
+ },
494
+ messageInput: {
495
+ flex: 1,
496
+ height: 40,
497
+ backgroundColor: "#F9FAFB",
498
+ borderRadius: 20,
499
+ paddingHorizontal: 16,
500
+ marginRight: 12,
501
+ fontSize: 16
502
+ },
503
+ sendButton: {
504
+ width: 40,
505
+ height: 40,
506
+ borderRadius: 20,
507
+ backgroundColor: "#2563EB",
508
+ justifyContent: "center",
509
+ alignItems: "center"
510
+ }
511
+ });
373
512
  var SearchAddChannel$1 = React__default.memo(SearchAddChannel);export{SearchAddChannel$1 as default,useKeyboard};//# sourceMappingURL=SearchAddChannel.js.map