@messenger-box/slack-ui-mobile 10.0.3-alpha.36 → 10.0.3-alpha.38
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/screens/Home/Components/Channels/Channels.js +91 -103
- package/lib/screens/Home/Components/Channels/Channels.js.map +1 -1
- package/lib/screens/Home/Components/DirectChannels/DirectChannels.js +163 -231
- package/lib/screens/Home/Components/DirectChannels/DirectChannels.js.map +1 -1
- package/lib/screens/Home/Components/Teams/Teams.js +76 -91
- package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +3 -5
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/package.json +3 -3
- package/lib/screens/Home/Components/Channels/channels-xstate.js +0 -247
- package/lib/screens/Home/Components/Channels/channels-xstate.js.map +0 -1
- package/lib/screens/Home/Components/Channels/useSafeChannelsMachine.js +0 -128
- package/lib/screens/Home/Components/Channels/useSafeChannelsMachine.js.map +0 -1
- package/lib/screens/Home/Components/DirectChannels/directChannels-xstate.js +0 -202
- package/lib/screens/Home/Components/DirectChannels/directChannels-xstate.js.map +0 -1
- package/lib/screens/Home/Components/DirectChannels/useSafeDirectChannelsMachine.js +0 -108
- package/lib/screens/Home/Components/DirectChannels/useSafeDirectChannelsMachine.js.map +0 -1
- package/lib/screens/Home/Components/Teams/hooks/useSafeMachine.js +0 -96
- package/lib/screens/Home/Components/Teams/hooks/useSafeMachine.js.map +0 -1
- package/lib/screens/Home/Components/Teams/workflow/teams-xstate.js +0 -198
- 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,
|
|
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
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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)
|
|
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
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
|
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
|
-
|
|
137
|
-
|
|
138
|
-
});
|
|
162
|
+
setState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
163
|
+
directChannels: []
|
|
164
|
+
}));
|
|
139
165
|
};
|
|
140
|
-
}, [orgName
|
|
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
|
|
173
|
+
if (orgName) {
|
|
148
174
|
reFetchDirectChannels();
|
|
149
175
|
}
|
|
150
|
-
}, [orgName
|
|
176
|
+
}, [orgName]));
|
|
151
177
|
const organizationDirectChannels = useMemo(() => {
|
|
152
178
|
var _a, _b;
|
|
153
|
-
|
|
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
|
|
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.
|
|
172
|
-
const
|
|
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:
|
|
189
|
-
totalMembers
|
|
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
|
|
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
|
|
198
|
-
"#
|
|
199
|
-
"#
|
|
200
|
-
"#
|
|
201
|
-
"#
|
|
202
|
-
"#
|
|
203
|
-
"#
|
|
204
|
-
"#
|
|
205
|
-
"#
|
|
206
|
-
"#
|
|
207
|
-
"#
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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(
|
|
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.
|
|
272
|
+
}, [state.error, reFetchDirectChannels]);
|
|
317
273
|
const ListFooterComponent = useCallback(() => {
|
|
318
|
-
return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.
|
|
274
|
+
return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.AddPeople, {
|
|
319
275
|
orgName
|
|
320
276
|
}), style: {
|
|
321
|
-
paddingVertical:
|
|
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
|
-
} }, "
|
|
331
|
-
}, [
|
|
282
|
+
} }, "Add People")));
|
|
283
|
+
}, [orgName, navigation]);
|
|
332
284
|
const SectionHeader = useCallback(() => {
|
|
333
|
-
return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: {
|
|
334
|
-
paddingVertical:
|
|
335
|
-
paddingHorizontal:
|
|
336
|
-
|
|
337
|
-
|
|
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(
|
|
291
|
+
} }, "Direct Messages"), /* @__PURE__ */ React__default.createElement(FontAwesome, { name: expandableMessage ? "chevron-down" : "chevron-left", color: colors.gray[800], size: 12 })));
|
|
345
292
|
}, [expandableMessage]);
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
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
|