@messenger-box/slack-ui-mobile 10.0.3-alpha.38 → 10.0.3-alpha.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/AppRootContextProviderComponent.js +16 -2
- package/lib/components/AppRootContextProviderComponent.js.map +1 -1
- package/lib/components/CustomDrawer/CustomDrawer.js +3 -3
- package/lib/components/CustomDrawer/CustomDrawer.js.map +1 -1
- package/lib/components/NavigationHeader/InboxNavigationHeader.js +4 -12
- package/lib/components/NavigationHeader/InboxNavigationHeader.js.map +1 -1
- package/lib/components/WorkSpaceDrawer/WorkSpaceDrawer.js +4 -8
- package/lib/components/WorkSpaceDrawer/WorkSpaceDrawer.js.map +1 -1
- package/lib/compute.js +25 -14
- package/lib/index.js.map +1 -1
- package/lib/queries/slackuiQueries.js +129 -0
- package/lib/queries/slackuiQueries.js.map +1 -0
- package/lib/routes.json +25 -14
- package/lib/screens/Account/AccountScreen.js.map +1 -1
- package/lib/screens/Channels/Add/AddVisibility.js +1 -1
- package/lib/screens/Channels/Add/AddVisibility.js.map +1 -1
- package/lib/screens/Channels/AddChannel.js +1 -1
- package/lib/screens/Channels/AddChannel.js.map +1 -1
- package/lib/screens/Channels/Channels.js +6 -16
- package/lib/screens/Channels/Channels.js.map +1 -1
- package/lib/screens/Home/Components/Channels/Channels.js +19 -98
- package/lib/screens/Home/Components/Channels/Channels.js.map +1 -1
- package/lib/screens/Home/Components/DirectChannels/DirectChannels.js +90 -116
- package/lib/screens/Home/Components/DirectChannels/DirectChannels.js.map +1 -1
- package/lib/screens/Home/Components/InviteMembers/index.js +2 -2
- package/lib/screens/Home/Components/InviteMembers/index.js.map +1 -1
- package/lib/screens/Home/Components/Teams/Teams.js +22 -77
- package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
- package/lib/screens/Home/HomeScreen.js +2 -2
- package/lib/screens/Home/HomeScreen.js.map +1 -1
- package/lib/screens/Inbox/InboxChannelDetail.js +45 -13
- package/lib/screens/Inbox/InboxChannelDetail.js.map +1 -1
- package/lib/screens/Organization/AddWorkspace.js +4 -8
- package/lib/screens/Organization/AddWorkspace.js.map +1 -1
- package/lib/screens/Organization/CreateOrganization.js +1 -1
- package/lib/screens/Organization/CreateOrganization.js.map +1 -1
- package/lib/screens/Organization/InitialChannelOnboarding.js +19 -3
- package/lib/screens/Organization/InitialChannelOnboarding.js.map +1 -1
- package/lib/screens/Organization/InitializeOrganizationChannel.js +6 -3
- package/lib/screens/Organization/InitializeOrganizationChannel.js.map +1 -1
- package/lib/screens/Organization/InviteOrganizationMembers.js +50 -10
- package/lib/screens/Organization/InviteOrganizationMembers.js.map +1 -1
- package/lib/screens/Peoples/AddByEmail.js +1 -1
- package/lib/screens/Peoples/AddByEmail.js.map +1 -1
- package/lib/screens/Peoples/AddFromContacts.js +34 -9
- package/lib/screens/Peoples/AddFromContacts.js.map +1 -1
- package/lib/screens/Peoples/AddPeople.js +8 -17
- package/lib/screens/Peoples/AddPeople.js.map +1 -1
- package/lib/screens/Peoples/People.js +42 -4
- package/lib/screens/Peoples/People.js.map +1 -1
- package/lib/screens/Profile/ProfileScreen.js +24 -9
- package/lib/screens/Profile/ProfileScreen.js.map +1 -1
- package/lib/screens/Search/Channels.js +3 -7
- package/lib/screens/Search/Channels.js.map +1 -1
- package/lib/screens/Search/People.js +2 -2
- package/lib/screens/Search/People.js.map +1 -1
- package/lib/screens/Search/Recents.js +2 -2
- package/lib/screens/Search/Recents.js.map +1 -1
- package/lib/screens/Search/SearchAddChannel.js +85 -12
- package/lib/screens/Search/SearchAddChannel.js.map +1 -1
- package/lib/screens/Search/SearchChannelPeople.js +22 -2
- package/lib/screens/Search/SearchChannelPeople.js.map +1 -1
- package/lib/screens/Search/SearchScreen.js +2 -2
- package/lib/screens/Search/SearchScreen.js.map +1 -1
- package/lib/screens/Teams/AddTeam.js +1 -1
- package/lib/screens/Teams/AddTeam.js.map +1 -1
- package/lib/screens/Teams/Components/Channels/Channels.js +2 -2
- package/lib/screens/Teams/Components/Channels/Channels.js.map +1 -1
- package/lib/screens/Teams/Components/Members/Members.js.map +1 -1
- package/lib/screens/Teams/Team.js +2 -7
- package/lib/screens/Teams/Team.js.map +1 -1
- package/lib/screens/Teams/Teams.js +1 -1
- package/lib/screens/Teams/Teams.js.map +1 -1
- package/lib/screens/Teams/useTeams.js +27 -90
- package/lib/screens/Teams/useTeams.js.map +1 -1
- package/package.json +3 -3
- package/lib/screens/Teams/Teams-xstate.js +0 -226
- package/lib/screens/Teams/Teams-xstate.js.map +0 -1
|
@@ -1,23 +1,4 @@
|
|
|
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 {
|
|
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 = () => {
|
|
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 {useChannelsQuery,useAddDirectChannelMutation}from'../../../../queries/slackuiQueries.js';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';import {gql}from'@apollo/client/index.js';const DirectChannels = () => {
|
|
21
2
|
const navigation = useNavigation();
|
|
22
3
|
const [expandableMessage, setExpendableMessage] = useState(true);
|
|
23
4
|
const user = useSelector(userSelector, shallowEqual);
|
|
@@ -28,16 +9,14 @@ const DirectChannels = () => {
|
|
|
28
9
|
const {
|
|
29
10
|
shouldRefetch
|
|
30
11
|
} = useContext(RefetchContext);
|
|
31
|
-
const [state, setState] = useState({
|
|
32
|
-
directChannels: [],
|
|
33
|
-
error: null
|
|
34
|
-
});
|
|
35
12
|
const reFetchDirectChannelsRef = useRef(() => {
|
|
36
13
|
});
|
|
37
14
|
const {
|
|
38
|
-
data
|
|
15
|
+
data,
|
|
16
|
+
loading,
|
|
17
|
+
error,
|
|
39
18
|
refetch: reFetchUserDirectChannels
|
|
40
|
-
} =
|
|
19
|
+
} = useChannelsQuery({
|
|
41
20
|
variables: {
|
|
42
21
|
criteria: {
|
|
43
22
|
orgName,
|
|
@@ -48,68 +27,66 @@ const DirectChannels = () => {
|
|
|
48
27
|
},
|
|
49
28
|
fetchPolicy: "cache-and-network",
|
|
50
29
|
nextFetchPolicy: "cache-first",
|
|
51
|
-
onCompleted(data) {
|
|
52
|
-
setState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
53
|
-
directChannels: (data == null ? void 0 : data.channelsByUser) || []
|
|
54
|
-
}));
|
|
55
|
-
},
|
|
56
|
-
onError(error) {
|
|
57
|
-
const isChannelServiceError = error.message.includes("Service 'ChannelService.getAll' is not found");
|
|
58
|
-
const errorMessage = isChannelServiceError ? "Channel service is temporarily unavailable. Please try again later." : error.message;
|
|
59
|
-
setState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
60
|
-
error: errorMessage
|
|
61
|
-
}));
|
|
62
|
-
},
|
|
63
30
|
skip: !orgName
|
|
64
31
|
});
|
|
65
32
|
const [addDirectChannel] = useAddDirectChannelMutation({
|
|
66
|
-
onCompleted: () => {
|
|
67
|
-
reFetchDirectChannelsRef.current();
|
|
68
|
-
},
|
|
69
|
-
onError: (error) => {
|
|
70
|
-
setState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
71
|
-
error: error.message
|
|
72
|
-
}));
|
|
73
|
-
},
|
|
74
33
|
update: (cache, {
|
|
75
|
-
data
|
|
34
|
+
data: data2
|
|
76
35
|
}) => {
|
|
77
36
|
try {
|
|
78
|
-
if (
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
team: null
|
|
100
|
-
},
|
|
101
|
-
limit: 21
|
|
102
|
-
},
|
|
103
|
-
data: {
|
|
104
|
-
channelsByUser: [data.createDirectChannel, ...existingData.channelsByUser]
|
|
37
|
+
if (data2 == null ? void 0 : data2.createDirectChannel) {
|
|
38
|
+
cache.modify({
|
|
39
|
+
fields: {
|
|
40
|
+
channelsByUser: (existingChannels = [], {
|
|
41
|
+
readField,
|
|
42
|
+
storeFieldName
|
|
43
|
+
}) => {
|
|
44
|
+
if (!storeFieldName.includes(RoomType.Direct) || !storeFieldName.includes(orgName)) {
|
|
45
|
+
return existingChannels;
|
|
46
|
+
}
|
|
47
|
+
const newChannelRef = cache.writeFragment({
|
|
48
|
+
data: data2.createDirectChannel,
|
|
49
|
+
fragment: gql`
|
|
50
|
+
fragment NewChannel on Channel {
|
|
51
|
+
id
|
|
52
|
+
}
|
|
53
|
+
`
|
|
54
|
+
});
|
|
55
|
+
const channelExists = existingChannels.some((channelRef) => readField("id", channelRef) === data2.createDirectChannel.id);
|
|
56
|
+
if (!channelExists) {
|
|
57
|
+
return [newChannelRef, ...existingChannels];
|
|
105
58
|
}
|
|
106
|
-
|
|
59
|
+
return existingChannels;
|
|
60
|
+
}
|
|
107
61
|
}
|
|
108
|
-
}
|
|
62
|
+
});
|
|
109
63
|
}
|
|
110
64
|
} catch (err) {
|
|
111
65
|
console.error("Error updating cache after adding direct channel:", err);
|
|
112
66
|
}
|
|
67
|
+
},
|
|
68
|
+
optimisticResponse: (variables) => {
|
|
69
|
+
return {
|
|
70
|
+
__typename: "Mutation",
|
|
71
|
+
createDirectChannel: {
|
|
72
|
+
__typename: "Channel",
|
|
73
|
+
id: `temp-id-${Date.now()}`,
|
|
74
|
+
title: "DIRECT CHANNEL",
|
|
75
|
+
displayName: "DIRECT CHANNEL",
|
|
76
|
+
type: RoomType.Direct,
|
|
77
|
+
members: [{
|
|
78
|
+
__typename: "ChannelMember",
|
|
79
|
+
id: `temp-member-${Date.now()}`,
|
|
80
|
+
user: {
|
|
81
|
+
__typename: "User",
|
|
82
|
+
id: user == null ? void 0 : user.id,
|
|
83
|
+
givenName: (user == null ? void 0 : user.givenName) || (user == null ? void 0 : user.username) || "You",
|
|
84
|
+
username: user == null ? void 0 : user.username,
|
|
85
|
+
picture: user == null ? void 0 : user.picture
|
|
86
|
+
}
|
|
87
|
+
}]
|
|
88
|
+
}
|
|
89
|
+
};
|
|
113
90
|
}
|
|
114
91
|
});
|
|
115
92
|
const reFetchDirectChannels = useCallback(() => {
|
|
@@ -122,14 +99,9 @@ const DirectChannels = () => {
|
|
|
122
99
|
},
|
|
123
100
|
limit: 21
|
|
124
101
|
}).then((res) => {
|
|
125
|
-
var _a, _b, _c
|
|
126
|
-
if ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.channelsByUser) {
|
|
127
|
-
|
|
128
|
-
directChannels: res.data.channelsByUser
|
|
129
|
-
}));
|
|
130
|
-
}
|
|
131
|
-
if (((_b = res == null ? void 0 : res.data) == null ? void 0 : _b.channelsByUser) && (user == null ? void 0 : user.id)) {
|
|
132
|
-
const filteredChannels = (_d = (_c = res == null ? void 0 : res.data) == null ? void 0 : _c.channelsByUser) == null ? void 0 : _d.filter((channel) => {
|
|
102
|
+
var _a, _b, _c;
|
|
103
|
+
if (((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.channelsByUser) && (user == null ? void 0 : user.id)) {
|
|
104
|
+
const filteredChannels = (_c = (_b = res == null ? void 0 : res.data) == null ? void 0 : _b.channelsByUser) == null ? void 0 : _c.filter((channel) => {
|
|
133
105
|
var _a2, _b2;
|
|
134
106
|
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);
|
|
135
107
|
});
|
|
@@ -145,25 +117,14 @@ const DirectChannels = () => {
|
|
|
145
117
|
});
|
|
146
118
|
}
|
|
147
119
|
}
|
|
148
|
-
}).catch((
|
|
149
|
-
|
|
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
|
+
}).catch((error2) => {
|
|
121
|
+
console.error("Failed to fetch direct messages:", error2.message);
|
|
154
122
|
});
|
|
155
123
|
}
|
|
156
124
|
}, [orgName, user == null ? void 0 : user.id, reFetchUserDirectChannels, addDirectChannel]);
|
|
157
125
|
useEffect(() => {
|
|
158
126
|
reFetchDirectChannelsRef.current = reFetchDirectChannels;
|
|
159
127
|
}, [reFetchDirectChannels]);
|
|
160
|
-
useEffect(() => {
|
|
161
|
-
return () => {
|
|
162
|
-
setState((prev) => __spreadProps(__spreadValues({}, prev), {
|
|
163
|
-
directChannels: []
|
|
164
|
-
}));
|
|
165
|
-
};
|
|
166
|
-
}, [orgName]);
|
|
167
128
|
useEffect(() => {
|
|
168
129
|
if (shouldRefetch && orgName) {
|
|
169
130
|
reFetchDirectChannels();
|
|
@@ -176,11 +137,11 @@ const DirectChannels = () => {
|
|
|
176
137
|
}, [orgName]));
|
|
177
138
|
const organizationDirectChannels = useMemo(() => {
|
|
178
139
|
var _a, _b;
|
|
179
|
-
return
|
|
140
|
+
return (data == null ? void 0 : data.channelsByUser) && ((_a = data.channelsByUser) == null ? void 0 : _a.length) && orderBy((_b = [...data.channelsByUser]) == null ? void 0 : _b.filter((i) => i.type === RoomType.Direct), [(ch) => {
|
|
180
141
|
var _a2, _b2;
|
|
181
142
|
return ch.members && ch.members.length > 0 ? (_b2 = (_a2 = ch.members[0]) == null ? void 0 : _a2.user) == null ? void 0 : _b2.givenName : "";
|
|
182
143
|
}], ["asc"]) || [];
|
|
183
|
-
}, [
|
|
144
|
+
}, [data == null ? void 0 : data.channelsByUser]);
|
|
184
145
|
const openInbox = useCallback((id, title, totalMembers, type) => {
|
|
185
146
|
navigation.navigate(NavigationRoutes.DialogMessages, {
|
|
186
147
|
channelId: id == null ? void 0 : id.toString(),
|
|
@@ -201,10 +162,11 @@ const DirectChannels = () => {
|
|
|
201
162
|
return ((_a2 = m == null ? void 0 : m.user) == null ? void 0 : _a2.id) !== (user == null ? void 0 : user.id);
|
|
202
163
|
})) == 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
164
|
const getUserName = () => {
|
|
165
|
+
var _a2, _b2;
|
|
204
166
|
if (isSelfDM) {
|
|
205
|
-
return (user == null ? void 0 : user.
|
|
167
|
+
return ((_a2 = user == null ? void 0 : user.profile) == null ? void 0 : _a2.name) || ((_b2 = user == null ? void 0 : user.profile) == null ? void 0 : _b2.nickname) || "You";
|
|
206
168
|
}
|
|
207
|
-
return (member == null ? void 0 : member.givenName) || (member == null ? void 0 : member.username) || "Unknown";
|
|
169
|
+
return (member == null ? void 0 : member.givenName) + " " + (member == null ? void 0 : member.familyName) || (member == null ? void 0 : member.givenName) || (member == null ? void 0 : member.username) || "Unknown";
|
|
208
170
|
};
|
|
209
171
|
return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => {
|
|
210
172
|
var _a2;
|
|
@@ -212,9 +174,9 @@ const DirectChannels = () => {
|
|
|
212
174
|
}, style: {
|
|
213
175
|
paddingVertical: 2,
|
|
214
176
|
paddingHorizontal: 12
|
|
215
|
-
} }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "items-center" }, /* @__PURE__ */ React__default.createElement(Avatar, { size: "xs", style: {
|
|
177
|
+
} }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "items-center" }, /* @__PURE__ */ React__default.createElement(Avatar, { size: "xs", className: "rounded-md", style: {
|
|
216
178
|
backgroundColor: getUserAvatarColor(getUserName())
|
|
217
|
-
} }, /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, getUserName()), (member == null ? void 0 : member.picture) && /* @__PURE__ */ React__default.createElement(AvatarImage, { source: {
|
|
179
|
+
} }, /* @__PURE__ */ React__default.createElement(AvatarFallbackText, null, getUserName()), (member == null ? void 0 : member.picture) && /* @__PURE__ */ React__default.createElement(AvatarImage, { className: "rounded-md", source: {
|
|
218
180
|
uri: member.picture
|
|
219
181
|
}, alt: getUserName() })), /* @__PURE__ */ React__default.createElement(Text, { className: "text-gray-900 flex-1 text-base" }, getUserName(), isSelfDM && " (you)")));
|
|
220
182
|
}, [user, openInbox]);
|
|
@@ -246,18 +208,23 @@ const DirectChannels = () => {
|
|
|
246
208
|
const ListEmptyComponent = useCallback(() => {
|
|
247
209
|
return /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
248
210
|
padding: 12
|
|
249
|
-
} },
|
|
211
|
+
} }, error ? /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
250
212
|
padding: 8,
|
|
251
213
|
backgroundColor: "#FFF4F4",
|
|
252
214
|
borderRadius: 4
|
|
253
215
|
} }, /* @__PURE__ */ React__default.createElement(Text, { color: "#E01E5A", style: {
|
|
254
216
|
marginBottom: 8,
|
|
255
217
|
fontWeight: "500"
|
|
256
|
-
} },
|
|
218
|
+
} }, error.message.includes("Service 'ChannelService.getAll' is not found") ? "Direct messages are temporarily unavailable. Please try again later." : error.message), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: reFetchDirectChannels }, /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", style: {
|
|
257
219
|
alignItems: "center"
|
|
258
220
|
} }, /* @__PURE__ */ React__default.createElement(Feather, { name: "refresh-cw", color: "#1264A3", size: 16 }), /* @__PURE__ */ React__default.createElement(Text, { color: "#1264A3", style: {
|
|
259
221
|
fontWeight: "500"
|
|
260
|
-
} }, "Retry")))) : /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
222
|
+
} }, "Retry")))) : loading ? /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
223
|
+
alignItems: "center",
|
|
224
|
+
paddingVertical: 16
|
|
225
|
+
} }, /* @__PURE__ */ React__default.createElement(Text, { style: {
|
|
226
|
+
color: "#616061"
|
|
227
|
+
} }, "Loading...")) : /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
261
228
|
alignItems: "center",
|
|
262
229
|
paddingVertical: 16
|
|
263
230
|
} }, /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
@@ -269,17 +236,24 @@ const DirectChannels = () => {
|
|
|
269
236
|
color: "#616061",
|
|
270
237
|
textAlign: "center"
|
|
271
238
|
} }, "No direct messages yet")));
|
|
272
|
-
}, [
|
|
239
|
+
}, [error, loading, reFetchDirectChannels]);
|
|
273
240
|
const ListFooterComponent = useCallback(() => {
|
|
274
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
241
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
242
|
+
TouchableOpacity,
|
|
243
|
+
{
|
|
244
|
+
onPress: () => navigation.navigate(NavigationRoutes.SearchAddChannel, {
|
|
245
|
+
orgName
|
|
246
|
+
}),
|
|
247
|
+
style: {
|
|
248
|
+
paddingVertical: 6,
|
|
249
|
+
paddingHorizontal: 12
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
/* @__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: {
|
|
253
|
+
fontSize: 16,
|
|
254
|
+
color: "#616061"
|
|
255
|
+
} }, "Start a new message"))
|
|
256
|
+
);
|
|
283
257
|
}, [orgName, navigation]);
|
|
284
258
|
const SectionHeader = useCallback(() => {
|
|
285
259
|
return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => setExpendableMessage(!expandableMessage), style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DirectChannels.js","sources":["../../../../../src/screens/Home/Components/DirectChannels/DirectChannels.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useCallback, useMemo, useRef, useContext } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport styles from '../../styles';\nimport {\n View,\n FlatList,\n HStack,\n Icon,\n Box,\n Text,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n AddIcon,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { startCase, orderBy } from 'lodash-es';\nimport { RoomType } from 'common';\nimport { useGetChannelsByUserQuery, useAddDirectChannelMutation, GetChannelsByUserDocument } from 'common/graphql';\nimport { NavigationRoutes } from '../../../../constants';\nimport { MaterialIcons, Feather, FontAwesome } from '@expo/vector-icons';\nimport { useDrawerLayout } from '../../../../hooks';\nimport colors from 'tailwindcss/colors';\nimport { RefetchContext } from '../../HomeScreen';\n\n// Define a type for the channel data\ninterface Channel {\n id: string;\n title: string;\n displayName: string;\n type: string;\n members: Array<{\n id: string;\n user: any;\n }>;\n}\n\ninterface ChannelsByUserData {\n channelsByUser: Channel[];\n}\n\nconst DirectChannels = () => {\n const navigation = useNavigation<any>();\n const [expandableMessage, setExpendableMessage] = useState(true);\n const user = useSelector(userSelector, shallowEqual);\n const isFocused = useIsFocused();\n const { orgName } = useDrawerLayout();\n const { shouldRefetch } = useContext(RefetchContext);\n\n // Simplified local state\n const [state, setState] = useState({\n directChannels: [],\n error: null,\n });\n\n // Refs to avoid circular dependencies\n const reFetchDirectChannelsRef = useRef<() => void>(() => {});\n\n // GraphQL Queries and Mutations\n const { data: userDirectChannels, refetch: reFetchUserDirectChannels } = useGetChannelsByUserQuery({\n variables: {\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n onCompleted(data) {\n setState((prev) => ({\n ...prev,\n directChannels: data?.channelsByUser || [],\n }));\n },\n onError(error) {\n // Check specifically for ChannelService error\n const isChannelServiceError = error.message.includes(\"Service 'ChannelService.getAll' is not found\");\n const errorMessage = isChannelServiceError\n ? 'Channel service is temporarily unavailable. Please try again later.'\n : error.message;\n\n // Update state to reflect the error\n setState((prev) => ({\n ...prev,\n error: errorMessage,\n }));\n },\n // Skip the query if organization name is not available\n skip: !orgName,\n });\n\n const [addDirectChannel] = useAddDirectChannelMutation({\n onCompleted: () => {\n reFetchDirectChannelsRef.current();\n },\n onError: (error: any) => {\n setState((prev) => ({\n ...prev,\n error: error.message,\n }));\n },\n update: (cache, { data }) => {\n // Update the cache with the new channel\n try {\n if (data?.createDirectChannel) {\n // Read the current query data from cache with type assertion\n const existingData = cache.readQuery({\n query: GetChannelsByUserDocument,\n variables: {\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n },\n }) as ChannelsByUserData | null;\n\n // If we have existing data, update it\n if (existingData?.channelsByUser) {\n // Check if the new channel already exists in the cache\n const channelExists = existingData.channelsByUser.some(\n (channel) => channel.id === data.createDirectChannel.id,\n );\n\n // Only add the new channel if it doesn't already exist\n if (!channelExists) {\n // Write the updated data back to the cache with type assertion\n cache.writeQuery({\n query: GetChannelsByUserDocument,\n variables: {\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n },\n data: {\n channelsByUser: [data.createDirectChannel, ...existingData.channelsByUser],\n } as ChannelsByUserData,\n });\n }\n }\n }\n } catch (err) {\n console.error('Error updating cache after adding direct channel:', err);\n }\n },\n });\n\n // Initialize reFetchDirectChannels function\n const reFetchDirectChannels = useCallback(() => {\n if (orgName) {\n reFetchUserDirectChannels({\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n })\n .then((res) => {\n if (res?.data?.channelsByUser) {\n setState((prev) => ({\n ...prev,\n directChannels: res.data.channelsByUser,\n }));\n }\n\n if (res?.data?.channelsByUser && user?.id) {\n const filteredChannels = res?.data?.channelsByUser?.filter(\n (channel) => channel.members.length === 1 && channel.members[0]?.user?.id === user?.id,\n );\n\n if (!filteredChannels?.length) {\n addDirectChannel({\n variables: {\n receiver: [user.id],\n displayName: 'DIRECT CHANNEL',\n channelOptions: { schemeAdmin: true },\n },\n });\n }\n }\n })\n .catch((error) => {\n // Check specifically for ChannelService error\n const isChannelServiceError =\n error.message && error.message.includes(\"Service 'ChannelService.getAll' is not found\");\n const errorMessage = isChannelServiceError\n ? 'Direct messages are temporarily unavailable. Please try again later.'\n : error.message || 'Failed to fetch direct messages';\n\n setState((prev) => ({\n ...prev,\n error: errorMessage,\n }));\n });\n }\n }, [orgName, user?.id, reFetchUserDirectChannels, addDirectChannel]);\n\n // Set ref for future calls\n useEffect(() => {\n reFetchDirectChannelsRef.current = reFetchDirectChannels;\n }, [reFetchDirectChannels]);\n\n // Reset state when unmounting\n useEffect(() => {\n return () => {\n setState((prev) => ({\n ...prev,\n directChannels: [],\n }));\n };\n }, [orgName]);\n\n // Use RefetchContext to control when to refetch data\n useEffect(() => {\n if (shouldRefetch && orgName) {\n reFetchDirectChannels();\n }\n }, [shouldRefetch, orgName, reFetchDirectChannels]);\n\n // Focus effect to fetch data when screen is focused\n useFocusEffect(\n useCallback(() => {\n if (orgName) {\n reFetchDirectChannels();\n }\n }, [orgName]),\n );\n\n const organizationDirectChannels = useMemo(() => {\n return (\n (state.directChannels &&\n state.directChannels?.length &&\n orderBy(\n [...state.directChannels]?.filter((i: any) => i.type === RoomType.Direct),\n [(ch: any) => (ch.members && ch.members.length > 0 ? ch.members[0]?.user?.givenName : '')],\n ['asc'],\n )) ||\n []\n );\n }, [state.directChannels]);\n\n const openInbox = useCallback(\n (id: any, title: any, totalMembers: any, type?: any) => {\n navigation.navigate(NavigationRoutes.DialogMessages, {\n channelId: id?.toString(),\n title: title?.toString(),\n totalMembers: totalMembers,\n channelType: type,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName, navigation],\n );\n\n const renderDirectChannelItem = useCallback(\n ({ item }) => {\n const isSelfDM = item.members?.length === 1 && item.members?.[0]?.user?.id === user?.id;\n\n const member =\n item.members?.filter((m: any) => m?.user?.id !== user?.id)?.[0]?.user || item.members?.[0]?.user;\n\n const getUserName = () => {\n if (isSelfDM) {\n return user?.givenName || user?.username || 'You';\n }\n\n return member?.givenName || member?.username || 'Unknown';\n };\n\n return (\n <TouchableOpacity\n onPress={() => openInbox(item.id, getUserName(), item.members?.length, item.type)}\n style={{ paddingVertical: 2, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Avatar size=\"xs\" style={{ backgroundColor: getUserAvatarColor(getUserName()) }}>\n <AvatarFallbackText>{getUserName()}</AvatarFallbackText>\n {member?.picture && <AvatarImage source={{ uri: member.picture }} alt={getUserName()} />}\n </Avatar>\n <Text className=\"text-gray-900 flex-1 text-base\">\n {getUserName()}\n {isSelfDM && ' (you)'}\n </Text>\n </HStack>\n </TouchableOpacity>\n );\n },\n [user, openInbox],\n );\n\n const getUserAvatarColor = (name: string) => {\n const colorOptions = [\n '#E57373', // Red\n '#F06292', // Pink\n '#BA68C8', // Purple\n '#9575CD', // Deep Purple\n '#7986CB', // Indigo\n '#64B5F6', // Blue\n '#4FC3F7', // Light Blue\n '#4DD0E1', // Cyan\n '#4DB6AC', // Teal\n '#81C784', // Green\n '#AED581', // Light Green\n '#DCE775', // Lime\n '#FFD54F', // Amber\n '#FFB74D', // Orange\n '#FF8A65', // Deep Orange\n ];\n\n // Simple hash function to map names to consistent colors\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n hash = Math.abs(hash);\n return colorOptions[hash % colorOptions.length];\n };\n\n const ListEmptyComponent = useCallback(() => {\n return (\n <Box style={{ padding: 12 }}>\n {state.error ? (\n <Box style={{ padding: 8, backgroundColor: '#FFF4F4', borderRadius: 4 }}>\n <Text color=\"#E01E5A\" style={{ marginBottom: 8, fontWeight: '500' }}>\n {state.error}\n </Text>\n <TouchableOpacity onPress={reFetchDirectChannels}>\n <HStack space=\"sm\" style={{ alignItems: 'center' }}>\n <Feather name=\"refresh-cw\" color=\"#1264A3\" size={16} />\n <Text color=\"#1264A3\" style={{ fontWeight: '500' }}>\n Retry\n </Text>\n </HStack>\n </TouchableOpacity>\n </Box>\n ) : (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Box style={{ padding: 12, marginBottom: 8, borderRadius: 24, backgroundColor: '#F8F8F8' }}>\n <MaterialIcons name=\"person-outline\" color=\"#616061\" size={20} />\n </Box>\n <Text style={{ color: '#616061', textAlign: 'center' }}>No direct messages yet</Text>\n </Box>\n )}\n </Box>\n );\n }, [state.error, reFetchDirectChannels]);\n\n const ListFooterComponent = useCallback(() => {\n return (\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.AddPeople, { orgName })}\n style={{ paddingVertical: 6, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Feather color=\"#616061\" name=\"plus\" size={18} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Add People</Text>\n </HStack>\n </TouchableOpacity>\n );\n }, [orgName, navigation]);\n\n const SectionHeader = useCallback(() => {\n return (\n <TouchableOpacity\n onPress={() => setExpendableMessage(!expandableMessage)}\n style={{ paddingVertical: 6, paddingHorizontal: 16 }}\n >\n <HStack className=\"justify-between items-center\">\n <Text className=\"font-semibold\" style={{ fontSize: 15, color: '#1D1C1D' }}>\n Direct Messages\n </Text>\n <FontAwesome\n name={expandableMessage ? 'chevron-down' : 'chevron-left'}\n color={colors.gray[800]}\n size={12}\n />\n </HStack>\n </TouchableOpacity>\n );\n }, [expandableMessage]);\n\n if (!expandableMessage) {\n return <SectionHeader />;\n }\n\n return (\n <Box>\n <SectionHeader />\n {organizationDirectChannels?.length > 0 ? (\n <FlatList\n keyExtractor={(item) => (item?.id || 'direct') + '-' + item?.title}\n data={organizationDirectChannels}\n renderItem={renderDirectChannelItem}\n ListFooterComponent={ListFooterComponent}\n style={{ marginTop: 6 }}\n scrollEnabled={false}\n />\n ) : (\n <Box>\n <ListEmptyComponent />\n <ListFooterComponent />\n </Box>\n )}\n </Box>\n );\n};\n\nexport default DirectChannels;\n"],"names":["_a","_b","React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DirectChannels.js","sources":["../../../../../src/screens/Home/Components/DirectChannels/DirectChannels.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useCallback, useMemo, useRef, useContext } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport styles from '../../styles';\nimport {\n View,\n FlatList,\n HStack,\n Icon,\n Box,\n Text,\n Avatar,\n AvatarFallbackText,\n AvatarImage,\n AvatarBadge,\n AddIcon,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { startCase, orderBy } from 'lodash-es';\nimport { RoomType } from 'common';\nimport {\n useChannelsQuery,\n useAddDirectChannelMutation,\n GetChannelsByUserDocument,\n} from '../../../../queries/slackuiQueries';\nimport { NavigationRoutes } from '../../../../constants';\nimport { MaterialIcons, Feather, FontAwesome } from '@expo/vector-icons';\nimport { useDrawerLayout } from '../../../../hooks';\nimport colors from 'tailwindcss/colors';\nimport { RefetchContext } from '../../HomeScreen';\nimport { gql } from '@apollo/client';\n\n// Define a type for the channel data\ninterface Channel {\n id: string;\n title: string;\n displayName: string;\n type: string;\n members: Array<{\n id: string;\n user: any;\n }>;\n}\n\ninterface ChannelsByUserData {\n channelsByUser: Channel[];\n}\n\nconst DirectChannels = () => {\n const navigation = useNavigation<any>();\n const [expandableMessage, setExpendableMessage] = useState(true);\n const user = useSelector(userSelector, shallowEqual);\n const isFocused = useIsFocused();\n const { orgName } = useDrawerLayout();\n const { shouldRefetch } = useContext(RefetchContext);\n\n // Refs to avoid circular dependencies\n const reFetchDirectChannelsRef = useRef<() => void>(() => {});\n\n // GraphQL Queries and Mutations\n const {\n data,\n loading,\n error,\n refetch: reFetchUserDirectChannels,\n } = useChannelsQuery({\n variables: {\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n // Skip the query if organization name is not available\n skip: !orgName,\n });\n\n const [addDirectChannel] = useAddDirectChannelMutation({\n update: (cache, { data }) => {\n // Update the cache with the new channel\n try {\n if (data?.createDirectChannel) {\n // Use cache.modify instead of readQuery/writeQuery for better integration with type policies\n cache.modify({\n fields: {\n channelsByUser: (existingChannels = [], { readField, storeFieldName }) => {\n // Get variables from the storeFieldName to ensure we're modifying the correct query\n // Only do this if we can extract the correct variables from the storeFieldName\n if (!storeFieldName.includes(RoomType.Direct) || !storeFieldName.includes(orgName)) {\n return existingChannels;\n }\n\n // Check if the new channel already exists in the cache\n const newChannelRef = cache.writeFragment({\n data: data.createDirectChannel,\n fragment: gql`\n fragment NewChannel on Channel {\n id\n }\n `,\n });\n\n // Check if this channel already exists\n const channelExists = existingChannels.some(\n (channelRef) => readField('id', channelRef) === data.createDirectChannel.id,\n );\n\n // Only add the channel if it doesn't already exist\n if (!channelExists) {\n return [newChannelRef, ...existingChannels];\n }\n\n return existingChannels;\n },\n },\n });\n }\n } catch (err) {\n console.error('Error updating cache after adding direct channel:', err);\n }\n },\n optimisticResponse: (variables) => {\n // Create an optimistic response that mimics the expected server response\n return {\n __typename: 'Mutation',\n createDirectChannel: {\n __typename: 'Channel',\n id: `temp-id-${Date.now()}`, // Temporary ID that will be replaced when the server responds\n title: 'DIRECT CHANNEL',\n displayName: 'DIRECT CHANNEL',\n type: RoomType.Direct,\n members: [\n {\n __typename: 'ChannelMember',\n id: `temp-member-${Date.now()}`,\n user: {\n __typename: 'User',\n id: user?.id,\n givenName: user?.givenName || user?.username || 'You',\n username: user?.username,\n picture: user?.picture,\n },\n },\n ],\n },\n };\n },\n });\n\n // Initialize reFetchDirectChannels function\n const reFetchDirectChannels = useCallback(() => {\n if (orgName) {\n reFetchUserDirectChannels({\n criteria: {\n orgName: orgName,\n type: RoomType.Direct,\n team: null,\n },\n limit: 21,\n })\n .then((res) => {\n if (res?.data?.channelsByUser && user?.id) {\n const filteredChannels = res?.data?.channelsByUser?.filter(\n (channel) => channel.members.length === 1 && channel.members[0]?.user?.id === user?.id,\n );\n\n if (!filteredChannels?.length) {\n addDirectChannel({\n variables: {\n receiver: [user.id],\n displayName: 'DIRECT CHANNEL',\n channelOptions: { schemeAdmin: true },\n },\n });\n }\n }\n })\n .catch((error) => {\n console.error('Failed to fetch direct messages:', error.message);\n });\n }\n }, [orgName, user?.id, reFetchUserDirectChannels, addDirectChannel]);\n\n // Set ref for future calls\n useEffect(() => {\n reFetchDirectChannelsRef.current = reFetchDirectChannels;\n }, [reFetchDirectChannels]);\n\n // Use RefetchContext to control when to refetch data\n useEffect(() => {\n if (shouldRefetch && orgName) {\n reFetchDirectChannels();\n }\n }, [shouldRefetch, orgName, reFetchDirectChannels]);\n\n // Focus effect to fetch data when screen is focused\n useFocusEffect(\n useCallback(() => {\n if (orgName) {\n reFetchDirectChannels();\n }\n }, [orgName]),\n );\n\n const organizationDirectChannels = useMemo(() => {\n return (\n (data?.channelsByUser &&\n data.channelsByUser?.length &&\n orderBy(\n [...data.channelsByUser]?.filter((i: any) => i.type === RoomType.Direct),\n [(ch: any) => (ch.members && ch.members.length > 0 ? ch.members[0]?.user?.givenName : '')],\n ['asc'],\n )) ||\n []\n );\n }, [data?.channelsByUser]);\n\n const openInbox = useCallback(\n (id: any, title: any, totalMembers: any, type?: any) => {\n navigation.navigate(NavigationRoutes.DialogMessages, {\n channelId: id?.toString(),\n title: title?.toString(),\n totalMembers: totalMembers,\n channelType: type,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName, navigation],\n );\n\n const renderDirectChannelItem = useCallback(\n ({ item }) => {\n const isSelfDM = item.members?.length === 1 && item.members?.[0]?.user?.id === user?.id;\n\n const member =\n item.members?.filter((m: any) => m?.user?.id !== user?.id)?.[0]?.user || item.members?.[0]?.user;\n\n const getUserName = () => {\n if (isSelfDM) {\n return user?.profile?.name || user?.profile?.nickname || 'You';\n }\n\n return (\n member?.givenName + ' ' + member?.familyName || member?.givenName || member?.username || 'Unknown'\n );\n };\n\n return (\n <TouchableOpacity\n onPress={() => openInbox(item.id, getUserName(), item.members?.length, item.type)}\n style={{ paddingVertical: 2, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Avatar\n size=\"xs\"\n className=\"rounded-md\"\n style={{ backgroundColor: getUserAvatarColor(getUserName()) }}\n >\n <AvatarFallbackText>{getUserName()}</AvatarFallbackText>\n {member?.picture && (\n <AvatarImage\n className=\"rounded-md\"\n source={{ uri: member.picture }}\n alt={getUserName()}\n />\n )}\n </Avatar>\n <Text className=\"text-gray-900 flex-1 text-base\">\n {getUserName()}\n {isSelfDM && ' (you)'}\n </Text>\n </HStack>\n </TouchableOpacity>\n );\n },\n [user, openInbox],\n );\n\n const getUserAvatarColor = (name: string) => {\n const colorOptions = [\n '#E57373', // Red\n '#F06292', // Pink\n '#BA68C8', // Purple\n '#9575CD', // Deep Purple\n '#7986CB', // Indigo\n '#64B5F6', // Blue\n '#4FC3F7', // Light Blue\n '#4DD0E1', // Cyan\n '#4DB6AC', // Teal\n '#81C784', // Green\n '#AED581', // Light Green\n '#DCE775', // Lime\n '#FFD54F', // Amber\n '#FFB74D', // Orange\n '#FF8A65', // Deep Orange\n ];\n\n // Simple hash function to map names to consistent colors\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n hash = Math.abs(hash);\n return colorOptions[hash % colorOptions.length];\n };\n\n const ListEmptyComponent = useCallback(() => {\n return (\n <Box style={{ padding: 12 }}>\n {error ? (\n <Box style={{ padding: 8, backgroundColor: '#FFF4F4', borderRadius: 4 }}>\n <Text color=\"#E01E5A\" style={{ marginBottom: 8, fontWeight: '500' }}>\n {error.message.includes(\"Service 'ChannelService.getAll' is not found\")\n ? 'Direct messages are temporarily unavailable. Please try again later.'\n : error.message}\n </Text>\n <TouchableOpacity onPress={reFetchDirectChannels}>\n <HStack space=\"sm\" style={{ alignItems: 'center' }}>\n <Feather name=\"refresh-cw\" color=\"#1264A3\" size={16} />\n <Text color=\"#1264A3\" style={{ fontWeight: '500' }}>\n Retry\n </Text>\n </HStack>\n </TouchableOpacity>\n </Box>\n ) : loading ? (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Text style={{ color: '#616061' }}>Loading...</Text>\n </Box>\n ) : (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Box style={{ padding: 12, marginBottom: 8, borderRadius: 24, backgroundColor: '#F8F8F8' }}>\n <MaterialIcons name=\"person-outline\" color=\"#616061\" size={20} />\n </Box>\n <Text style={{ color: '#616061', textAlign: 'center' }}>No direct messages yet</Text>\n </Box>\n )}\n </Box>\n );\n }, [error, loading, reFetchDirectChannels]);\n\n const ListFooterComponent = useCallback(() => {\n return (\n <TouchableOpacity\n // onPress={() => navigation.navigate(NavigationRoutes.AddPeople, { orgName })}\n onPress={() => navigation.navigate(NavigationRoutes.SearchAddChannel, { orgName })}\n style={{ paddingVertical: 6, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Feather color=\"#616061\" name=\"plus\" size={18} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Start a new message</Text>\n </HStack>\n </TouchableOpacity>\n );\n }, [orgName, navigation]);\n\n const SectionHeader = useCallback(() => {\n return (\n <TouchableOpacity\n onPress={() => setExpendableMessage(!expandableMessage)}\n style={{ paddingVertical: 6, paddingHorizontal: 16 }}\n >\n <HStack className=\"justify-between items-center\">\n <Text className=\"font-semibold\" style={{ fontSize: 15, color: '#1D1C1D' }}>\n Direct Messages\n </Text>\n <FontAwesome\n name={expandableMessage ? 'chevron-down' : 'chevron-left'}\n color={colors.gray[800]}\n size={12}\n />\n </HStack>\n </TouchableOpacity>\n );\n }, [expandableMessage]);\n\n if (!expandableMessage) {\n return <SectionHeader />;\n }\n\n return (\n <Box>\n <SectionHeader />\n {organizationDirectChannels?.length > 0 ? (\n <FlatList\n keyExtractor={(item) => (item?.id || 'direct') + '-' + item?.title}\n data={organizationDirectChannels}\n renderItem={renderDirectChannelItem}\n ListFooterComponent={ListFooterComponent}\n style={{ marginTop: 6 }}\n scrollEnabled={false}\n />\n ) : (\n <Box>\n <ListEmptyComponent />\n <ListFooterComponent />\n </Box>\n )}\n </Box>\n );\n};\n\nexport default DirectChannels;\n"],"names":["data","_a","_b","error","React"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React__default from'react';import {TouchableOpacity,Share}from'react-native';import {Ionicons,AntDesign,MaterialCommunityIcons}from'@expo/vector-icons';import {useNavigation}from'@react-navigation/native';import {HStack,Text,Box}from'@admin-layout/gluestack-ui-mobile';import {useDisclose}from'../../../../hooks/useDisclose.js';import Colors from'../../../../constants/Colors.js';import'../../../../constants/device.js';import'../../../../constants/globalStyles.js';import'../../../../constants/Layout.js';import {NavigationRoutes}from'../../../../constants/routes.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 colors from'tailwindcss/colors';import'../../../../components/WorkSpaceDrawer/WorkSpaceDrawer.js';import'../../../../components/Channels/ChannelsByAlphabeticalAccordion.js';import'../../../../components/SlackSearchInput/index.js';import'
|
|
1
|
+
import React__default from'react';import {TouchableOpacity,Share}from'react-native';import {Ionicons,AntDesign,MaterialCommunityIcons}from'@expo/vector-icons';import {useNavigation}from'@react-navigation/native';import {HStack,Text,Box}from'@admin-layout/gluestack-ui-mobile';import {useDisclose}from'../../../../hooks/useDisclose.js';import Colors from'../../../../constants/Colors.js';import'../../../../constants/device.js';import'../../../../constants/globalStyles.js';import'../../../../constants/Layout.js';import {NavigationRoutes}from'../../../../constants/routes.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 colors from'tailwindcss/colors';import'../../../../components/WorkSpaceDrawer/WorkSpaceDrawer.js';import'../../../../components/Channels/ChannelsByAlphabeticalAccordion.js';import'../../../../components/SlackSearchInput/index.js';import'../../../../components/AppRootContextProviderComponent.js';import {Actionsheet as ActionSheet}from'../../../../components/Actionsheet.js';import {useOrganizationSharableLinkQuery}from'../../../../queries/slackuiQueries.js';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import {config}from'../../../../config/env-config.js';const InviteMembers = () => {
|
|
2
2
|
const {
|
|
3
3
|
isOpen,
|
|
4
4
|
onOpen,
|
|
@@ -10,7 +10,7 @@ import React__default from'react';import {TouchableOpacity,Share}from'react-nati
|
|
|
10
10
|
} = useDrawerLayout();
|
|
11
11
|
const {
|
|
12
12
|
data: organizationSharableLink
|
|
13
|
-
} =
|
|
13
|
+
} = useOrganizationSharableLinkQuery(orgName, {
|
|
14
14
|
fetchPolicy: "cache-and-network",
|
|
15
15
|
skip: !isOpen
|
|
16
16
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/screens/Home/Components/InviteMembers/index.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableHighlight, Share, TouchableOpacity } from 'react-native';\nimport { Ionicons, AntDesign, MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useNavigation } from '@react-navigation/native';\nimport { Box, Text, HStack, VStack } from '@admin-layout/gluestack-ui-mobile';\nimport { useDisclose } from '../../../../hooks/useDisclose';\nimport { NavigationRoutes, colors } from '../../../../constants';\nimport { Actionsheet } from '../../../../components';\nimport { useGetOrganizationSharableLinkQuery } from 'common/graphql';\nimport { useDrawerLayout } from '../../../../hooks/useDrawerLayout';\nimport { config } from '../../../../config';\nimport Colors from 'tailwindcss/colors';\n\nexport const InviteMembers = () => {\n const { isOpen, onOpen, onClose } = useDisclose();\n const navigation = useNavigation<any>();\n const { orgName } = useDrawerLayout();\n\n // Only fetch sharable link when needed (when action sheet is open)\n const { data: organizationSharableLink } = useGetOrganizationSharableLinkQuery({\n fetchPolicy: 'cache-and-network',\n skip: !isOpen,\n });\n\n const shareLink = async () => {\n try {\n await Share.share({\n message: `${config.APP_NAME} - ${organizationSharableLink?.getOrganizationSharableLink ?? ''}`,\n });\n } catch (error: any) {\n alert(error.message);\n }\n };\n\n const actionItems = [\n {\n id: 1,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center\"\n style={{\n backgroundColor: colors.green,\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n }}\n >\n <Ionicons color={'white'} name=\"share-outline\" size={22} />\n <Text className=\"text-white\" style={{ color: 'white', fontWeight: '600', fontSize: 16 }}>\n Share a Link\n </Text>\n </HStack>\n ),\n onPress: shareLink,\n },\n {\n id: 2,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center border\"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n backgroundColor: Colors.gray[50],\n }}\n >\n <AntDesign color={Colors.gray[900]} name=\"adduser\" size={22} />\n <Text style={{ color: Colors.gray[900], fontWeight: '600', fontSize: 16 }}>Add from Contacts</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleFromContacts, {\n orgName,\n }),\n },\n // {\n // id: 3,\n // label: (\n // <HStack\n // space={'sm'}\n // className=\"flex-1 justify-center items-center\"\n // style={{\n // paddingVertical: 12,\n // borderRadius: 8,\n // marginHorizontal: 10,\n // marginVertical: 5,\n // backgroundColor: Colors.gray[50],\n // }}\n // >\n // <AntDesign color={Colors.gray[900]} name=\"google\" size={22} />\n // <Text style={{ color: Colors.gray[900], fontWeight: '600', fontSize: 16 }}>\n // Add from Google Contacts\n // </Text>\n // </HStack>\n // ),\n // onPress: () => {\n // // Navigate to Google contacts integration\n // // This would be implemented based on your app's functionality\n // },\n // },\n {\n id: 4,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center border\"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n backgroundColor: Colors.gray[50],\n }}\n >\n <MaterialCommunityIcons color={Colors.gray[900]} name=\"email-outline\" size={22} />\n <Text style={{ color: Colors.gray[900], fontWeight: '600', fontSize: 16 }}>Add by Email</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleByEmail, {\n orgName,\n }),\n },\n ];\n\n return (\n <Box style={{ marginBottom: 8, paddingHorizontal: 12 }}>\n {/* Floating Action Button to open ActionSheet */}\n <TouchableOpacity onPress={onOpen}>\n <Box className=\"py-3 \">\n <HStack space={'sm'} className=\"w-full flex-1 items-center space-x-3\">\n <Box>\n <Ionicons name=\"add\" size={20} color=\"black\" />\n </Box>\n <Text style={{ fontSize: 15, fontWeight: '500' }} color={Colors.gray[800]}>\n Add teammates\n </Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n\n <Actionsheet\n isOpen={isOpen}\n actionItems={actionItems}\n onCancel={onClose}\n hideBottomWidth={true}\n isShowCancelButton={false}\n header={\n <Text\n className=\"text-center font-bold text-lg bg-white\"\n style={{\n paddingVertical: 16,\n color: Colors.gray[900],\n }}\n >\n Invite people to join your team\n </Text>\n }\n />\n </Box>\n );\n};\n"],"names":["React","colors","Colors","Actionsheet"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/screens/Home/Components/InviteMembers/index.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableHighlight, Share, TouchableOpacity } from 'react-native';\nimport { Ionicons, AntDesign, MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useNavigation } from '@react-navigation/native';\nimport { Box, Text, HStack, VStack } from '@admin-layout/gluestack-ui-mobile';\nimport { useDisclose } from '../../../../hooks/useDisclose';\nimport { NavigationRoutes, colors } from '../../../../constants';\nimport { Actionsheet } from '../../../../components';\nimport { useOrganizationSharableLinkQuery } from '../../../../queries/slackuiQueries';\nimport { useDrawerLayout } from '../../../../hooks/useDrawerLayout';\nimport { config } from '../../../../config';\nimport Colors from 'tailwindcss/colors';\n\nexport const InviteMembers = () => {\n const { isOpen, onOpen, onClose } = useDisclose();\n const navigation = useNavigation<any>();\n const { orgName } = useDrawerLayout();\n\n // Only fetch sharable link when needed (when action sheet is open)\n const { data: organizationSharableLink } = useOrganizationSharableLinkQuery(orgName, {\n fetchPolicy: 'cache-and-network',\n skip: !isOpen,\n });\n\n const shareLink = async () => {\n try {\n await Share.share({\n message: `${config.APP_NAME} - ${organizationSharableLink?.getOrganizationSharableLink ?? ''}`,\n });\n } catch (error: any) {\n alert(error.message);\n }\n };\n\n const actionItems = [\n {\n id: 1,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center\"\n style={{\n backgroundColor: colors.green,\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n }}\n >\n <Ionicons color={'white'} name=\"share-outline\" size={22} />\n <Text className=\"text-white\" style={{ color: 'white', fontWeight: '600', fontSize: 16 }}>\n Share a Link\n </Text>\n </HStack>\n ),\n onPress: shareLink,\n },\n {\n id: 2,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center border\"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n backgroundColor: Colors.gray[50],\n }}\n >\n <AntDesign color={Colors.gray[900]} name=\"adduser\" size={22} />\n <Text style={{ color: Colors.gray[900], fontWeight: '600', fontSize: 16 }}>Add from Contacts</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleFromContacts, {\n orgName,\n }),\n },\n // {\n // id: 3,\n // label: (\n // <HStack\n // space={'sm'}\n // className=\"flex-1 justify-center items-center\"\n // style={{\n // paddingVertical: 12,\n // borderRadius: 8,\n // marginHorizontal: 10,\n // marginVertical: 5,\n // backgroundColor: Colors.gray[50],\n // }}\n // >\n // <AntDesign color={Colors.gray[900]} name=\"google\" size={22} />\n // <Text style={{ color: Colors.gray[900], fontWeight: '600', fontSize: 16 }}>\n // Add from Google Contacts\n // </Text>\n // </HStack>\n // ),\n // onPress: () => {\n // // Navigate to Google contacts integration\n // // This would be implemented based on your app's functionality\n // },\n // },\n {\n id: 4,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center border\"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n backgroundColor: Colors.gray[50],\n }}\n >\n <MaterialCommunityIcons color={Colors.gray[900]} name=\"email-outline\" size={22} />\n <Text style={{ color: Colors.gray[900], fontWeight: '600', fontSize: 16 }}>Add by Email</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleByEmail, {\n orgName,\n }),\n },\n ];\n\n return (\n <Box style={{ marginBottom: 8, paddingHorizontal: 12 }}>\n {/* Floating Action Button to open ActionSheet */}\n <TouchableOpacity onPress={onOpen}>\n <Box className=\"py-3 \">\n <HStack space={'sm'} className=\"w-full flex-1 items-center space-x-3\">\n <Box>\n <Ionicons name=\"add\" size={20} color=\"black\" />\n </Box>\n <Text style={{ fontSize: 15, fontWeight: '500' }} color={Colors.gray[800]}>\n Add teammates\n </Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n\n <Actionsheet\n isOpen={isOpen}\n actionItems={actionItems}\n onCancel={onClose}\n hideBottomWidth={true}\n isShowCancelButton={false}\n header={\n <Text\n className=\"text-center font-bold text-lg bg-white\"\n style={{\n paddingVertical: 16,\n color: Colors.gray[900],\n }}\n >\n Invite people to join your team\n </Text>\n }\n />\n </Box>\n );\n};\n"],"names":["React","colors","Colors","Actionsheet"],"mappings":"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"}
|