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

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 (23) hide show
  1. package/lib/screens/Home/Components/Channels/Channels.js +91 -103
  2. package/lib/screens/Home/Components/Channels/Channels.js.map +1 -1
  3. package/lib/screens/Home/Components/DirectChannels/DirectChannels.js +163 -231
  4. package/lib/screens/Home/Components/DirectChannels/DirectChannels.js.map +1 -1
  5. package/lib/screens/Home/Components/Teams/Teams.js +76 -91
  6. package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
  7. package/lib/screens/Home/HomeScreen.js +3 -5
  8. package/lib/screens/Home/HomeScreen.js.map +1 -1
  9. package/lib/screens/Search/SearchAddChannel.js +1 -4
  10. package/lib/screens/Search/SearchAddChannel.js.map +1 -1
  11. package/package.json +3 -3
  12. package/lib/screens/Home/Components/Channels/channels-xstate.js +0 -247
  13. package/lib/screens/Home/Components/Channels/channels-xstate.js.map +0 -1
  14. package/lib/screens/Home/Components/Channels/useSafeChannelsMachine.js +0 -128
  15. package/lib/screens/Home/Components/Channels/useSafeChannelsMachine.js.map +0 -1
  16. package/lib/screens/Home/Components/DirectChannels/directChannels-xstate.js +0 -202
  17. package/lib/screens/Home/Components/DirectChannels/directChannels-xstate.js.map +0 -1
  18. package/lib/screens/Home/Components/DirectChannels/useSafeDirectChannelsMachine.js +0 -108
  19. package/lib/screens/Home/Components/DirectChannels/useSafeDirectChannelsMachine.js.map +0 -1
  20. package/lib/screens/Home/Components/Teams/hooks/useSafeMachine.js +0 -96
  21. package/lib/screens/Home/Components/Teams/hooks/useSafeMachine.js.map +0 -1
  22. package/lib/screens/Home/Components/Teams/workflow/teams-xstate.js +0 -198
  23. package/lib/screens/Home/Components/Teams/workflow/teams-xstate.js.map +0 -1
@@ -1,4 +1,23 @@
1
- import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useContext,useRef,useCallback,useEffect,useMemo}from'react';import {TouchableOpacity}from'react-native';import {HStack,Box,Text,Avatar,AvatarFallbackText,AvatarImage,Spinner,Icon,AddIcon,View,FlatList}from'@admin-layout/gluestack-ui-mobile';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector,shallowEqual}from'react-redux';import {orderBy}from'lodash-es';import {RoomType}from'common';import {useGetChannelsByUserQuery,useAddDirectChannelMutation}from'common/graphql';import'../../../../constants/device.js';import'../../../../constants/globalStyles.js';import'../../../../constants/Layout.js';import {NavigationRoutes}from'../../../../constants/routes.js';import {Feather,MaterialIcons}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';import'./directChannels-xstate.js';import {useSafeDirectChannelsMachine}from'./useSafeDirectChannelsMachine.js';import {RefetchContext}from'../../HomeScreen.js';const DirectChannels = () => {
1
+ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useContext,useRef,useCallback,useEffect,useMemo}from'react';import {TouchableOpacity}from'react-native';import {HStack,Avatar,AvatarFallbackText,AvatarImage,Text,Box,FlatList}from'@admin-layout/gluestack-ui-mobile';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector,shallowEqual}from'react-redux';import {orderBy}from'lodash-es';import {RoomType}from'common';import {useGetChannelsByUserQuery,useAddDirectChannelMutation,GetChannelsByUserDocument}from'common/graphql';import'../../../../constants/device.js';import'../../../../constants/globalStyles.js';import'../../../../constants/Layout.js';import {NavigationRoutes}from'../../../../constants/routes.js';import {Feather,MaterialIcons,FontAwesome}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';import colors from'tailwindcss/colors';import {RefetchContext}from'../../HomeScreen.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 DirectChannels = () => {
2
21
  const navigation = useNavigation();
3
22
  const [expandableMessage, setExpendableMessage] = useState(true);
4
23
  const user = useSelector(userSelector, shallowEqual);
@@ -9,14 +28,15 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
9
28
  const {
10
29
  shouldRefetch
11
30
  } = useContext(RefetchContext);
31
+ const [state, setState] = useState({
32
+ directChannels: [],
33
+ error: null
34
+ });
12
35
  const reFetchDirectChannelsRef = useRef(() => {
13
36
  });
14
- const [state, send] = useSafeDirectChannelsMachine();
15
37
  const {
16
38
  data: userDirectChannels,
17
- loading: userDirectChannelsLoading,
18
- refetch: reFetchUserDirectChannels,
19
- error: userDirectChannelsError
39
+ refetch: reFetchUserDirectChannels
20
40
  } = useGetChannelsByUserQuery({
21
41
  variables: {
22
42
  criteria: {
@@ -29,48 +49,71 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
29
49
  fetchPolicy: "cache-and-network",
30
50
  nextFetchPolicy: "cache-first",
31
51
  onCompleted(data) {
32
- send({
33
- type: "SET_DIRECT_CHANNELS",
34
- data: {
35
- directChannels: (data == null ? void 0 : data.channelsByUser) || []
36
- }
37
- });
52
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
53
+ directChannels: (data == null ? void 0 : data.channelsByUser) || []
54
+ }));
38
55
  },
39
56
  onError(error) {
40
57
  const isChannelServiceError = error.message.includes("Service 'ChannelService.getAll' is not found");
41
58
  const errorMessage = isChannelServiceError ? "Channel service is temporarily unavailable. Please try again later." : error.message;
42
- send({
43
- type: "ERROR",
44
- data: {
45
- message: errorMessage
46
- }
47
- });
59
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
60
+ error: errorMessage
61
+ }));
48
62
  },
49
63
  skip: !orgName
50
64
  });
51
- const [addDirectChannel, {
52
- loading: addDirectChannelLoading
53
- }] = useAddDirectChannelMutation({
65
+ const [addDirectChannel] = useAddDirectChannelMutation({
54
66
  onCompleted: () => {
55
67
  reFetchDirectChannelsRef.current();
56
68
  },
57
69
  onError: (error) => {
58
- send({
59
- type: "ERROR",
60
- data: {
61
- message: error.message
70
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
71
+ error: error.message
72
+ }));
73
+ },
74
+ update: (cache, {
75
+ data
76
+ }) => {
77
+ try {
78
+ if (data == null ? void 0 : data.createDirectChannel) {
79
+ const existingData = cache.readQuery({
80
+ query: GetChannelsByUserDocument,
81
+ variables: {
82
+ criteria: {
83
+ orgName,
84
+ type: RoomType.Direct,
85
+ team: null
86
+ },
87
+ limit: 21
88
+ }
89
+ });
90
+ if (existingData == null ? void 0 : existingData.channelsByUser) {
91
+ const channelExists = existingData.channelsByUser.some((channel) => channel.id === data.createDirectChannel.id);
92
+ if (!channelExists) {
93
+ cache.writeQuery({
94
+ query: GetChannelsByUserDocument,
95
+ variables: {
96
+ criteria: {
97
+ orgName,
98
+ type: RoomType.Direct,
99
+ team: null
100
+ },
101
+ limit: 21
102
+ },
103
+ data: {
104
+ channelsByUser: [data.createDirectChannel, ...existingData.channelsByUser]
105
+ }
106
+ });
107
+ }
108
+ }
62
109
  }
63
- });
110
+ } catch (err) {
111
+ console.error("Error updating cache after adding direct channel:", err);
112
+ }
64
113
  }
65
114
  });
66
115
  const reFetchDirectChannels = useCallback(() => {
67
- if (state.context.directChannelsLoading) {
68
- return;
69
- }
70
116
  if (orgName) {
71
- send({
72
- type: "REFETCH_DIRECT_CHANNELS"
73
- });
74
117
  reFetchUserDirectChannels({
75
118
  criteria: {
76
119
  orgName,
@@ -81,22 +124,16 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
81
124
  }).then((res) => {
82
125
  var _a, _b, _c, _d;
83
126
  if ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.channelsByUser) {
84
- send({
85
- type: "SET_DIRECT_CHANNELS",
86
- data: {
87
- directChannels: res.data.channelsByUser
88
- }
89
- });
127
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
128
+ directChannels: res.data.channelsByUser
129
+ }));
90
130
  }
91
131
  if (((_b = res == null ? void 0 : res.data) == null ? void 0 : _b.channelsByUser) && (user == null ? void 0 : user.id)) {
92
132
  const filteredChannels = (_d = (_c = res == null ? void 0 : res.data) == null ? void 0 : _c.channelsByUser) == null ? void 0 : _d.filter((channel) => {
93
133
  var _a2, _b2;
94
134
  return channel.members.length === 1 && ((_b2 = (_a2 = channel.members[0]) == null ? void 0 : _a2.user) == null ? void 0 : _b2.id) === (user == null ? void 0 : user.id);
95
135
  });
96
- if (!(filteredChannels == null ? void 0 : filteredChannels.length) && !addDirectChannelLoading) {
97
- send({
98
- type: "ADD_DIRECT_CHANNEL"
99
- });
136
+ if (!(filteredChannels == null ? void 0 : filteredChannels.length)) {
100
137
  addDirectChannel({
101
138
  variables: {
102
139
  receiver: [user.id],
@@ -110,194 +147,113 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
110
147
  }
111
148
  }).catch((error) => {
112
149
  const isChannelServiceError = error.message && error.message.includes("Service 'ChannelService.getAll' is not found");
113
- const errorMessage = isChannelServiceError ? "Direct Channels is temporarily unavailable. Please try again later." : error.message || "Failed to fetch direct channels";
114
- send({
115
- type: "ERROR",
116
- data: {
117
- message: errorMessage
118
- }
119
- });
150
+ const errorMessage = isChannelServiceError ? "Direct messages are temporarily unavailable. Please try again later." : error.message || "Failed to fetch direct messages";
151
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
152
+ error: errorMessage
153
+ }));
120
154
  });
121
155
  }
122
- }, [orgName, user, addDirectChannelLoading, send, state.context.directChannelsLoading, reFetchUserDirectChannels, addDirectChannel]);
156
+ }, [orgName, user == null ? void 0 : user.id, reFetchUserDirectChannels, addDirectChannel]);
123
157
  useEffect(() => {
124
158
  reFetchDirectChannelsRef.current = reFetchDirectChannels;
125
159
  }, [reFetchDirectChannels]);
126
160
  useEffect(() => {
127
- if (orgName) {
128
- send({
129
- type: "INITIAL_CONTEXT",
130
- data: {
131
- orgName
132
- }
133
- });
134
- }
135
161
  return () => {
136
- send({
137
- type: "CLEAR_DATA"
138
- });
162
+ setState((prev) => __spreadProps(__spreadValues({}, prev), {
163
+ directChannels: []
164
+ }));
139
165
  };
140
- }, [orgName, send]);
166
+ }, [orgName]);
141
167
  useEffect(() => {
142
168
  if (shouldRefetch && orgName) {
143
169
  reFetchDirectChannels();
144
170
  }
145
171
  }, [shouldRefetch, orgName, reFetchDirectChannels]);
146
172
  useFocusEffect(useCallback(() => {
147
- if (orgName && (!state.context.directChannels || state.context.directChannels.length === 0)) {
173
+ if (orgName) {
148
174
  reFetchDirectChannels();
149
175
  }
150
- }, [orgName, reFetchDirectChannels, state.context.directChannels]));
176
+ }, [orgName]));
151
177
  const organizationDirectChannels = useMemo(() => {
152
178
  var _a, _b;
153
- if (!state.context.directChannels)
154
- return [];
155
- return orderBy((_b = (_a = state.context.directChannels) == null ? void 0 : _a.filter((i) => i.type === RoomType.Direct)) == null ? void 0 : _b.filter((c) => {
156
- var _a2;
157
- return (_a2 = c == null ? void 0 : c.members) == null ? void 0 : _a2.some((u) => {
158
- var _a3, _b2, _c;
159
- return ((_a3 = c == null ? void 0 : c.members) == null ? void 0 : _a3.length) === 1 && ((_b2 = c == null ? void 0 : c.members) == null ? void 0 : _b2.filter((ch) => {
160
- var _a4;
161
- return ((_a4 = ch == null ? void 0 : ch.user) == null ? void 0 : _a4.id) === (user == null ? void 0 : user.id);
162
- }).length) > 0 ? u !== null : u !== null && ((_c = u == null ? void 0 : u.user) == null ? void 0 : _c.id) !== (user == null ? void 0 : user.id);
163
- });
164
- }), [(ch) => {
179
+ return state.directChannels && ((_a = state.directChannels) == null ? void 0 : _a.length) && orderBy((_b = [...state.directChannels]) == null ? void 0 : _b.filter((i) => i.type === RoomType.Direct), [(ch) => {
165
180
  var _a2, _b2;
166
- return (_b2 = (_a2 = ch == null ? void 0 : ch.members) == null ? void 0 : _a2.filter((m) => m == null ? void 0 : m.user)) == null ? void 0 : _b2.map((u) => {
167
- var _a3, _b3;
168
- return (_b3 = (_a3 = u == null ? void 0 : u.user) == null ? void 0 : _a3.givenName) == null ? void 0 : _b3.toLowerCase();
169
- });
181
+ return ch.members && ch.members.length > 0 ? (_b2 = (_a2 = ch.members[0]) == null ? void 0 : _a2.user) == null ? void 0 : _b2.givenName : "";
170
182
  }], ["asc"]) || [];
171
- }, [state.context.directChannels, user == null ? void 0 : user.id]);
172
- const openUserInbox = useCallback((id, title, members, type) => {
173
- var _a, _b, _c, _d, _e, _f, _g;
174
- const channelMembers = (_b = (_a = members == null ? void 0 : members.filter((ch) => {
175
- var _a2;
176
- return (members == null ? void 0 : members.length) === 1 && (members == null ? void 0 : members.filter((mem) => {
177
- var _a3;
178
- return ((_a3 = mem == null ? void 0 : mem.user) == null ? void 0 : _a3.id) === (user == null ? void 0 : user.id);
179
- }).length) > 0 ? ch !== null : ch !== null && ((_a2 = ch == null ? void 0 : ch.user) == null ? void 0 : _a2.id) !== (user == null ? void 0 : user.id);
180
- })) == null ? void 0 : _a.map((m) => m == null ? void 0 : m.user)) != null ? _b : null;
181
- const memberImage = (channelMembers == null ? void 0 : channelMembers.length) === 1 ? (_d = (_c = channelMembers[0]) == null ? void 0 : _c.picture) != null ? _d : null : null;
182
- const membersNameAsTitle = (_g = (_f = (_e = channelMembers == null ? void 0 : channelMembers.map((u) => {
183
- var _a2;
184
- return (_a2 = u == null ? void 0 : u.givenName) != null ? _a2 : "";
185
- })) == null ? void 0 : _e.filter((mu) => mu)) == null ? void 0 : _f.join(", ")) != null ? _g : "";
183
+ }, [state.directChannels]);
184
+ const openInbox = useCallback((id, title, totalMembers, type) => {
186
185
  navigation.navigate(NavigationRoutes.DialogMessages, {
187
186
  channelId: id == null ? void 0 : id.toString(),
188
- title: (membersNameAsTitle == null ? void 0 : membersNameAsTitle.toString()) || (title == null ? void 0 : title.toString()),
189
- totalMembers: members == null ? void 0 : members.length,
190
- memberImage,
187
+ title: title == null ? void 0 : title.toString(),
188
+ totalMembers,
191
189
  channelType: type,
192
190
  orgName,
193
191
  hideTabBar: true
194
192
  });
195
- }, [orgName, navigation, user == null ? void 0 : user.id]);
193
+ }, [orgName, navigation]);
194
+ const renderDirectChannelItem = useCallback(({
195
+ item
196
+ }) => {
197
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
198
+ const isSelfDM = ((_a = item.members) == null ? void 0 : _a.length) === 1 && ((_d = (_c = (_b = item.members) == null ? void 0 : _b[0]) == null ? void 0 : _c.user) == null ? void 0 : _d.id) === (user == null ? void 0 : user.id);
199
+ const member = ((_g = (_f = (_e = item.members) == null ? void 0 : _e.filter((m) => {
200
+ var _a2;
201
+ return ((_a2 = m == null ? void 0 : m.user) == null ? void 0 : _a2.id) !== (user == null ? void 0 : user.id);
202
+ })) == null ? void 0 : _f[0]) == null ? void 0 : _g.user) || ((_i = (_h = item.members) == null ? void 0 : _h[0]) == null ? void 0 : _i.user);
203
+ const getUserName = () => {
204
+ if (isSelfDM) {
205
+ return (user == null ? void 0 : user.givenName) || (user == null ? void 0 : user.username) || "You";
206
+ }
207
+ return (member == null ? void 0 : member.givenName) || (member == null ? void 0 : member.username) || "Unknown";
208
+ };
209
+ return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => {
210
+ var _a2;
211
+ return openInbox(item.id, getUserName(), (_a2 = item.members) == null ? void 0 : _a2.length, item.type);
212
+ }, style: {
213
+ paddingVertical: 2,
214
+ paddingHorizontal: 12
215
+ } }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "items-center" }, /* @__PURE__ */ React__default.createElement(Avatar, { size: "xs", style: {
216
+ backgroundColor: getUserAvatarColor(getUserName())
217
+ } }, /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, getUserName()), (member == null ? void 0 : member.picture) && /* @__PURE__ */ React__default.createElement(AvatarImage, { source: {
218
+ uri: member.picture
219
+ }, alt: getUserName() })), /* @__PURE__ */ React__default.createElement(Text, { className: "text-gray-900 flex-1 text-base" }, getUserName(), isSelfDM && " (you)")));
220
+ }, [user, openInbox]);
196
221
  const getUserAvatarColor = (name) => {
197
- const colors2 = [
198
- "#4a154b",
199
- "#36c5f0",
200
- "#2eb67d",
201
- "#ecb22e",
202
- "#e01e5a",
203
- "#8d44ad",
204
- "#3498db",
205
- "#1abc9c",
206
- "#f39c12",
207
- "#e74c3c"
222
+ const colorOptions = [
223
+ "#E57373",
224
+ "#F06292",
225
+ "#BA68C8",
226
+ "#9575CD",
227
+ "#7986CB",
228
+ "#64B5F6",
229
+ "#4FC3F7",
230
+ "#4DD0E1",
231
+ "#4DB6AC",
232
+ "#81C784",
233
+ "#AED581",
234
+ "#DCE775",
235
+ "#FFD54F",
236
+ "#FFB74D",
237
+ "#FF8A65"
208
238
  ];
209
239
  let hash = 0;
210
240
  for (let i = 0; i < name.length; i++) {
211
241
  hash = name.charCodeAt(i) + ((hash << 5) - hash);
212
242
  }
213
- return colors2[Math.abs(hash) % colors2.length];
243
+ hash = Math.abs(hash);
244
+ return colorOptions[hash % colorOptions.length];
214
245
  };
215
- const renderChannelMemebers = useCallback(({
216
- item
217
- }) => {
218
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
219
- const validMembers = ((_a = item == null ? void 0 : item.members) == null ? void 0 : _a.filter((m) => m && m.user)) || [];
220
- const channelMembers = (_c = (_b = validMembers == null ? void 0 : validMembers.filter((ch) => {
221
- var _a2;
222
- return validMembers.length === 1 && validMembers.filter((mem) => {
223
- var _a3;
224
- return ((_a3 = mem == null ? void 0 : mem.user) == null ? void 0 : _a3.id) === (user == null ? void 0 : user.id);
225
- }).length > 0 ? ch !== null : ch !== null && ((_a2 = ch == null ? void 0 : ch.user) == null ? void 0 : _a2.id) !== (user == null ? void 0 : user.id);
226
- })) == null ? void 0 : _b.map((m) => m == null ? void 0 : m.user)) != null ? _c : null;
227
- if (!channelMembers || channelMembers.length === 0) {
228
- return null;
229
- }
230
- const isGroupChat = channelMembers.length > 1;
231
- let title = (_f = (_e = (_d = channelMembers == null ? void 0 : channelMembers.map((u) => {
232
- var _a2, _b2;
233
- return (u == null ? void 0 : u.id) === (user == null ? void 0 : user.id) ? ((u == null ? void 0 : u.givenName) || "") + " " + ((u == null ? void 0 : u.familyName) || "") + " (you)" : ((_a2 = u == null ? void 0 : u.givenName) != null ? _a2 : "") + " " + ((_b2 = u == null ? void 0 : u.familyName) != null ? _b2 : "");
234
- })) == null ? void 0 : _d.filter((mu) => mu)) == null ? void 0 : _e.join(", ")) != null ? _f : "";
235
- let orgNamePart = ((_g = item == null ? void 0 : item.team) == null ? void 0 : _g.displayName) || "smarni";
236
- if (isGroupChat) {
237
- title = channelMembers.map((u) => (u == null ? void 0 : u.givenName) || (u == null ? void 0 : u.username) || "").filter(Boolean).join(", ");
238
- title = `${title}, ${orgNamePart}`;
239
- }
240
- const displayName = ((_h = channelMembers[0]) == null ? void 0 : _h.givenName) || ((_i = channelMembers[0]) == null ? void 0 : _i.username) || "?";
241
- const firstInitial = displayName.charAt(0).toUpperCase();
242
- const avatarBgColor = getUserAvatarColor(displayName);
243
- return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { key: item.id, onPress: () => openUserInbox(item.id, "Inbox", validMembers, item == null ? void 0 : item.type), style: {
244
- paddingVertical: 8,
245
- paddingHorizontal: 12
246
- } }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", style: {
247
- alignItems: "center"
248
- } }, isGroupChat ? /* @__PURE__ */ React__default.createElement(Box, { style: {
249
- width: 25,
250
- height: 25,
251
- borderRadius: "none",
252
- backgroundColor: "#E8E8E8",
253
- alignItems: "center",
254
- justifyContent: "center"
255
- }, className: "rounded-lg" }, /* @__PURE__ */ React__default.createElement(Text, { style: {
256
- fontWeight: "600",
257
- color: "#000"
258
- } }, channelMembers.length)) : /* @__PURE__ */ React__default.createElement(Box, { style: {
259
- position: "relative"
260
- } }, /* @__PURE__ */ React__default.createElement(Avatar, { size: "md", style: {
261
- width: 25,
262
- height: 25,
263
- borderRadius: 25,
264
- backgroundColor: avatarBgColor
265
- }, className: "rounded-lg" }, /* @__PURE__ */ React__default.createElement(AvatarFallbackText, { style: {
266
- color: "#FFF",
267
- fontWeight: "600"
268
- } }, firstInitial), ((_j = channelMembers[0]) == null ? void 0 : _j.picture) && /* @__PURE__ */ React__default.createElement(AvatarImage, { alt: firstInitial, source: {
269
- uri: (_k = channelMembers[0]) == null ? void 0 : _k.picture
270
- }, style: {
271
- borderRadius: "none"
272
- }, className: "rounded-lg" })), /* @__PURE__ */ React__default.createElement(Box, { style: {
273
- position: "absolute",
274
- width: 8,
275
- height: 8,
276
- borderRadius: 4,
277
- backgroundColor: "#2EB67D",
278
- borderWidth: 1,
279
- borderColor: "#FFF",
280
- bottom: 0,
281
- right: 0
282
- } })), /* @__PURE__ */ React__default.createElement(Text, { className: "text-gray-900 flex-1 text-base" }, title)));
283
- }, [openUserInbox, user == null ? void 0 : user.id]);
284
246
  const ListEmptyComponent = useCallback(() => {
285
247
  return /* @__PURE__ */ React__default.createElement(Box, { style: {
286
248
  padding: 12
287
- } }, state.context.directChannelsLoading ? /* @__PURE__ */ React__default.createElement(Box, { style: {
288
- alignItems: "center",
289
- paddingVertical: 16
290
- } }, /* @__PURE__ */ React__default.createElement(Spinner, { color: "#4A154B", size: "small" }), /* @__PURE__ */ React__default.createElement(Text, { style: {
291
- marginTop: 8,
292
- color: "#616061"
293
- } }, "Loading messages...")) : state.context.error ? /* @__PURE__ */ React__default.createElement(Box, { style: {
249
+ } }, state.error ? /* @__PURE__ */ React__default.createElement(Box, { style: {
294
250
  padding: 8,
295
251
  backgroundColor: "#FFF4F4",
296
252
  borderRadius: 4
297
253
  } }, /* @__PURE__ */ React__default.createElement(Text, { color: "#E01E5A", style: {
298
254
  marginBottom: 8,
299
255
  fontWeight: "500"
300
- } }, state.context.error), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: reFetchDirectChannels }, /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", style: {
256
+ } }, state.error), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: reFetchDirectChannels }, /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", style: {
301
257
  alignItems: "center"
302
258
  } }, /* @__PURE__ */ React__default.createElement(Feather, { name: "refresh-cw", color: "#1264A3", size: 16 }), /* @__PURE__ */ React__default.createElement(Text, { color: "#1264A3", style: {
303
259
  fontWeight: "500"
@@ -309,59 +265,35 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
309
265
  marginBottom: 8,
310
266
  borderRadius: 24,
311
267
  backgroundColor: "#F8F8F8"
312
- } }, /* @__PURE__ */ React__default.createElement(Feather, { name: "message-circle", color: "#616061", size: 20 })), /* @__PURE__ */ React__default.createElement(Text, { style: {
268
+ } }, /* @__PURE__ */ React__default.createElement(MaterialIcons, { name: "person-outline", color: "#616061", size: 20 })), /* @__PURE__ */ React__default.createElement(Text, { style: {
313
269
  color: "#616061",
314
270
  textAlign: "center"
315
271
  } }, "No direct messages yet")));
316
- }, [state.context.directChannelsLoading, state.context.error, reFetchDirectChannels]);
272
+ }, [state.error, reFetchDirectChannels]);
317
273
  const ListFooterComponent = useCallback(() => {
318
- return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.SearchAddChannel, {
274
+ return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.AddPeople, {
319
275
  orgName
320
276
  }), style: {
321
- paddingVertical: 8,
277
+ paddingVertical: 6,
322
278
  paddingHorizontal: 12
323
- } }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", style: {
324
- alignItems: "center"
325
- } }, /* @__PURE__ */ React__default.createElement(Icon, { as: AddIcon, style: {
326
- color: "#616061"
327
- } }), /* @__PURE__ */ React__default.createElement(Text, { style: {
279
+ } }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "items-center" }, /* @__PURE__ */ React__default.createElement(Feather, { color: "#616061", name: "plus", size: 18 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
328
280
  fontSize: 16,
329
281
  color: "#616061"
330
- } }, "Start a new message")));
331
- }, [navigation, orgName]);
282
+ } }, "Add People")));
283
+ }, [orgName, navigation]);
332
284
  const SectionHeader = useCallback(() => {
333
- return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: {
334
- paddingVertical: 8,
335
- paddingHorizontal: 12,
336
- marginBottom: 4
337
- }, onPress: () => setExpendableMessage(!expandableMessage) }, /* @__PURE__ */ React__default.createElement(HStack, { style: {
338
- alignItems: "center",
339
- justifyContent: "space-between"
340
- } }, /* @__PURE__ */ React__default.createElement(Text, { style: {
341
- fontSize: 17,
342
- fontWeight: "700",
285
+ return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => setExpendableMessage(!expandableMessage), style: {
286
+ paddingVertical: 6,
287
+ paddingHorizontal: 16
288
+ } }, /* @__PURE__ */ React__default.createElement(HStack, { className: "justify-between items-center" }, /* @__PURE__ */ React__default.createElement(Text, { className: "font-semibold", style: {
289
+ fontSize: 15,
343
290
  color: "#1D1C1D"
344
- } }, "Direct Messages"), /* @__PURE__ */ React__default.createElement(MaterialIcons, { name: expandableMessage ? "keyboard-arrow-up" : "keyboard-arrow-down", color: "#616061", size: 22 })));
291
+ } }, "Direct Messages"), /* @__PURE__ */ React__default.createElement(FontAwesome, { name: expandableMessage ? "chevron-down" : "chevron-left", color: colors.gray[800], size: 12 })));
345
292
  }, [expandableMessage]);
346
- return /* @__PURE__ */ React__default.createElement(View, { style: {
347
- flex: 1
348
- } }, /* @__PURE__ */ React__default.createElement(SectionHeader, null), expandableMessage && /* @__PURE__ */ React__default.createElement(
349
- FlatList,
350
- {
351
- data: organizationDirectChannels,
352
- renderItem: renderChannelMemebers,
353
- key: "direct-messages-key",
354
- keyExtractor: (item) => String(item.id),
355
- contentContainerStyle: {
356
- flexGrow: 1
357
- },
358
- ListEmptyComponent,
359
- ListFooterComponent,
360
- showsVerticalScrollIndicator: false,
361
- initialNumToRender: 10,
362
- maxToRenderPerBatch: 10,
363
- windowSize: 5
364
- }
365
- ));
366
- };
367
- var DirectChannels$1 = React__default.memo(DirectChannels);export{DirectChannels$1 as default};//# sourceMappingURL=DirectChannels.js.map
293
+ if (!expandableMessage) {
294
+ return /* @__PURE__ */ React__default.createElement(SectionHeader, null);
295
+ }
296
+ return /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(SectionHeader, null), (organizationDirectChannels == null ? void 0 : organizationDirectChannels.length) > 0 ? /* @__PURE__ */ React__default.createElement(FlatList, { keyExtractor: (item) => ((item == null ? void 0 : item.id) || "direct") + "-" + (item == null ? void 0 : item.title), data: organizationDirectChannels, renderItem: renderDirectChannelItem, ListFooterComponent, style: {
297
+ marginTop: 6
298
+ }, scrollEnabled: false }) : /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(ListEmptyComponent, null), /* @__PURE__ */ React__default.createElement(ListFooterComponent, null)));
299
+ };export{DirectChannels as default};//# sourceMappingURL=DirectChannels.js.map