@messenger-box/slack-ui-mobile 10.0.3-alpha.22 → 10.0.3-alpha.23
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {Ionicons,AntDesign,MaterialCommunityIcons,FontAwesome5}from'@expo/vector-icons';import {useNavigation,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useCallback}from'react';import {Share,TouchableHighlight,Dimensions}from'react-native';import {useSelector,shallowEqual}from'react-redux';import styles from'./styles.js';import {HStack,Text,Box,Avatar,Icon,AddIcon,Spinner,Center,Fab}from'@admin-layout/gluestack-ui-mobile';import {RoomType}from'common';import {useSetDeviceTokenMutation,useGetOrganizationSharableLinkQuery}from'common/graphql';import VirtualizedScrollView from'../../components/VirtualizedScrollView/VirtualizedScrollView.js';import {useDrawerLayout}from'../../hooks/useDrawerLayout.js';import {useDisclose}from'../../hooks/useDisclose.js';import {useExpoNotification}from'../../hooks/useExpoNotificationProvider.js';import Teams from'./Components/Teams/Teams.js';import Channels from'./Components/Channels/Channels.js';import'./Components/Channels/channels-xstate.js';import DirectChannels from'./Components/DirectChannels/DirectChannels.js';import TopCommonSlider from'./Components/TopCommonSlider/TopCommonSlider.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 {LoadingSpinnerDefault}from'../../components/LoadingSpinner/index.js';import'../../components/WorkSpaceDrawer/WorkSpaceDrawer.js';import'../../components/Channels/ChannelsByAlphabeticalAccordion.js';import'../../components/SlackSearchInput/index.js';import'expo-font';import'expo-splash-screen';import ActionSheet from'../../components/Actionsheet.js';import {config}from'../../config/env-config.js';import colors from'tailwindcss/colors';var __defProp = Object.defineProperty;
|
|
2
2
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
3
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
4
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
@@ -14,14 +14,12 @@ var __spreadValues = (a, b) => {
|
|
|
14
14
|
}
|
|
15
15
|
return a;
|
|
16
16
|
};
|
|
17
|
-
Dimensions.get("window").width;
|
|
18
17
|
const windowHeight = Dimensions.get("window").height;
|
|
19
18
|
[RoomType.Channel, RoomType.Private, RoomType.Public];
|
|
20
19
|
const HomeScreen = ({
|
|
21
20
|
navigation,
|
|
22
21
|
route
|
|
23
22
|
}) => {
|
|
24
|
-
var _a, _b;
|
|
25
23
|
useSelector((state) => state.user, shallowEqual);
|
|
26
24
|
const {
|
|
27
25
|
isOpen,
|
|
@@ -31,20 +29,32 @@ const HomeScreen = ({
|
|
|
31
29
|
const {
|
|
32
30
|
setSwipeEnabled,
|
|
33
31
|
orgName,
|
|
34
|
-
organizationDetail
|
|
35
|
-
setDrawerContent
|
|
32
|
+
organizationDetail
|
|
36
33
|
} = useDrawerLayout();
|
|
37
34
|
const {
|
|
38
|
-
expoToken
|
|
39
|
-
setExpoToken
|
|
35
|
+
expoToken
|
|
40
36
|
} = useExpoNotification();
|
|
41
37
|
const [setDeviceTokenMutation] = useSetDeviceTokenMutation();
|
|
42
38
|
const [loading, setLoading] = useState(true);
|
|
43
|
-
|
|
39
|
+
const [teamsLoaded, setTeamsLoaded] = useState(false);
|
|
40
|
+
const [channelsLoaded, setChannelsLoaded] = useState(false);
|
|
41
|
+
const [directChannelsLoaded, setDirectChannelsLoaded] = useState(false);
|
|
44
42
|
const {
|
|
45
43
|
data: organizationSharableLink
|
|
46
|
-
} = useGetOrganizationSharableLinkQuery(
|
|
47
|
-
|
|
44
|
+
} = useGetOrganizationSharableLinkQuery({
|
|
45
|
+
skip: !isOpen
|
|
46
|
+
});
|
|
47
|
+
const shareLink = useCallback(async () => {
|
|
48
|
+
var _a;
|
|
49
|
+
try {
|
|
50
|
+
const result = await Share.share({
|
|
51
|
+
message: `${config.APP_NAME} - ${(_a = organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink) != null ? _a : ""}`
|
|
52
|
+
});
|
|
53
|
+
} catch (error) {
|
|
54
|
+
alert(error.message);
|
|
55
|
+
}
|
|
56
|
+
}, [organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink]);
|
|
57
|
+
const actionItems = React__default.useMemo(() => [{
|
|
48
58
|
id: 1,
|
|
49
59
|
label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center bg-green-800", style: {
|
|
50
60
|
backgroundColor: "#166534",
|
|
@@ -92,8 +102,8 @@ const HomeScreen = ({
|
|
|
92
102
|
onPress: () => navigation.navigate(NavigationRoutes.AddPeopleByEmail, {
|
|
93
103
|
orgName
|
|
94
104
|
})
|
|
95
|
-
}];
|
|
96
|
-
const handlerExpoToken =
|
|
105
|
+
}], [isOpen, navigation, orgName, shareLink]);
|
|
106
|
+
const handlerExpoToken = useCallback(() => {
|
|
97
107
|
if (expoToken) {
|
|
98
108
|
setDeviceTokenMutation({
|
|
99
109
|
variables: {
|
|
@@ -102,47 +112,31 @@ const HomeScreen = ({
|
|
|
102
112
|
});
|
|
103
113
|
}
|
|
104
114
|
}, [expoToken, setDeviceTokenMutation]);
|
|
105
|
-
useFocusEffect(
|
|
115
|
+
useFocusEffect(useCallback(() => {
|
|
106
116
|
setSwipeEnabled(true);
|
|
107
117
|
handlerExpoToken();
|
|
108
118
|
setLoading(true);
|
|
109
119
|
const timer = setTimeout(() => {
|
|
110
120
|
setLoading(false);
|
|
111
|
-
|
|
121
|
+
setTimeout(() => {
|
|
122
|
+
setTeamsLoaded(true);
|
|
123
|
+
setTimeout(() => {
|
|
124
|
+
setChannelsLoaded(true);
|
|
125
|
+
setTimeout(() => {
|
|
126
|
+
setDirectChannelsLoaded(true);
|
|
127
|
+
}, 100);
|
|
128
|
+
}, 100);
|
|
129
|
+
}, 100);
|
|
130
|
+
}, 800);
|
|
112
131
|
return () => {
|
|
113
132
|
clearTimeout(timer);
|
|
114
133
|
setSwipeEnabled(false);
|
|
134
|
+
setTeamsLoaded(false);
|
|
135
|
+
setChannelsLoaded(false);
|
|
136
|
+
setDirectChannelsLoaded(false);
|
|
115
137
|
};
|
|
116
138
|
}, [orgName, setSwipeEnabled, handlerExpoToken]));
|
|
117
|
-
const
|
|
118
|
-
var _a2;
|
|
119
|
-
try {
|
|
120
|
-
const result = await Share.share({
|
|
121
|
-
message: `${config.APP_NAME} - ${(_a2 = organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink) != null ? _a2 : ""}`
|
|
122
|
-
});
|
|
123
|
-
if (result.action === Share.sharedAction) {
|
|
124
|
-
if (result.activityType) {
|
|
125
|
-
} else {
|
|
126
|
-
}
|
|
127
|
-
} else if (result.action === Share.dismissedAction) {
|
|
128
|
-
}
|
|
129
|
-
} catch (error) {
|
|
130
|
-
alert(error.message);
|
|
131
|
-
}
|
|
132
|
-
}, [organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink]);
|
|
133
|
-
useEffect(() => {
|
|
134
|
-
const timer = setTimeout(() => {
|
|
135
|
-
setLoading(false);
|
|
136
|
-
}, 1e3);
|
|
137
|
-
return () => clearTimeout(timer);
|
|
138
|
-
}, []);
|
|
139
|
-
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, { className: "bg-slate-50 flex-1" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-slate-50 pb-10 pt-2" }, loading ? /* @__PURE__ */ React__default.createElement(LoadingSpinnerDefault, null) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, orgName ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(TopCommonSlider, null), /* @__PURE__ */ React__default.createElement(Box, { style: [styles.border, {
|
|
140
|
-
marginVertical: 8
|
|
141
|
-
}] }), /* @__PURE__ */ React__default.createElement(Teams, null), /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
142
|
-
marginTop: 10
|
|
143
|
-
} }, /* @__PURE__ */ React__default.createElement(Channels, null)), /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
144
|
-
marginTop: 12
|
|
145
|
-
} }, /* @__PURE__ */ React__default.createElement(DirectChannels, null)), /* @__PURE__ */ React__default.createElement(Box, { style: [styles.bottomContainer, {
|
|
139
|
+
const AddTeammates = useCallback(() => /* @__PURE__ */ React__default.createElement(Box, { style: [styles.bottomContainer, {
|
|
146
140
|
marginTop: 15,
|
|
147
141
|
paddingHorizontal: 10
|
|
148
142
|
}] }, /* @__PURE__ */ React__default.createElement(TouchableHighlight, { underlayColor: "transparent", activeOpacity: 0.7, onPress: onOpen }, /* @__PURE__ */ React__default.createElement(Box, { className: "pr-10 py-2 pl-2" }, /* @__PURE__ */ React__default.createElement(HStack, { className: "w-full flex-1 items-center space-x-2" }, /* @__PURE__ */ React__default.createElement(Avatar, { key: "home-add-teammates-key", size: "sm", className: "bg-gray-100" }, /* @__PURE__ */ React__default.createElement(Icon, { as: AddIcon, style: {
|
|
@@ -155,7 +149,14 @@ const HomeScreen = ({
|
|
|
155
149
|
borderTopLeftRadius: 12,
|
|
156
150
|
borderTopRightRadius: 12,
|
|
157
151
|
paddingTop: 10
|
|
158
|
-
} }, "Invite people to join your team") }))
|
|
152
|
+
} }, "Invite people to join your team") })), [isOpen, onOpen, onClose, actionItems]);
|
|
153
|
+
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, { className: "bg-slate-50 flex-1" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-slate-50 pb-10 pt-2" }, loading ? /* @__PURE__ */ React__default.createElement(LoadingSpinnerDefault, null) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, orgName ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(TopCommonSlider, null), /* @__PURE__ */ React__default.createElement(Box, { style: [styles.border, {
|
|
154
|
+
marginVertical: 8
|
|
155
|
+
}] }), teamsLoaded ? /* @__PURE__ */ React__default.createElement(Teams, null) : /* @__PURE__ */ React__default.createElement(Box, { className: "py-2" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "small", color: Colors.primaryBgColor })), /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
156
|
+
marginTop: 10
|
|
157
|
+
} }, channelsLoaded ? /* @__PURE__ */ React__default.createElement(Channels, null) : /* @__PURE__ */ React__default.createElement(Box, { className: "py-2" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "small", color: Colors.primaryBgColor }))), /* @__PURE__ */ React__default.createElement(Box, { style: {
|
|
158
|
+
marginTop: 12
|
|
159
|
+
} }, directChannelsLoaded ? /* @__PURE__ */ React__default.createElement(DirectChannels, null) : /* @__PURE__ */ React__default.createElement(Box, { className: "py-2" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "small", color: Colors.primaryBgColor }))), /* @__PURE__ */ React__default.createElement(AddTeammates, null)) : /* @__PURE__ */ React__default.createElement(Center, { className: `flex-1 h-[${windowHeight - windowHeight / 3}] items-center justify-center` }, /* @__PURE__ */ React__default.createElement(Text, { style: {
|
|
159
160
|
fontSize: 15
|
|
160
161
|
} }, "No organization found"))))), /* @__PURE__ */ React__default.createElement(Fab, { onPress: () => navigation.navigate(NavigationRoutes.SearchAddChannel, {
|
|
161
162
|
orgName
|
|
@@ -165,7 +166,7 @@ const HomeScreen = ({
|
|
|
165
166
|
marginRight: 16
|
|
166
167
|
} }, /* @__PURE__ */ React__default.createElement(FontAwesome5, { color: "white", name: "edit", size: 18 })));
|
|
167
168
|
};
|
|
168
|
-
const Home = (props) => {
|
|
169
|
+
const Home = React__default.memo((props) => {
|
|
169
170
|
const user = useSelector((state) => state.user, shallowEqual);
|
|
170
171
|
const {
|
|
171
172
|
orgName
|
|
@@ -180,4 +181,4 @@ const Home = (props) => {
|
|
|
180
181
|
if (!orgName)
|
|
181
182
|
return /* @__PURE__ */ React__default.createElement(LoadingSpinnerDefault, null);
|
|
182
183
|
return /* @__PURE__ */ React__default.createElement(HomeScreen, __spreadValues({}, props));
|
|
183
|
-
};export{Home as default};//# sourceMappingURL=HomeScreen.js.map
|
|
184
|
+
});export{Home as default};//# sourceMappingURL=HomeScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HomeScreen.js","sources":["../../../src/screens/Home/HomeScreen.tsx"],"sourcesContent":["import { Ionicons, AntDesign, FontAwesome5, MaterialCommunityIcons, Octicons } from '@expo/vector-icons';\nimport { useFocusEffect, useNavigation } from '@react-navigation/native';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { TouchableHighlight, Share, Platform, Dimensions } from 'react-native';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport styles from './styles';\nimport {\n Box,\n // Actionsheet,\n // ActionsheetBackdrop,\n // ActionsheetContent,\n // ActionsheetDragIndicatorWrapper,\n // ActionsheetDragIndicator,\n // ActionsheetItem,\n // ActionsheetItemText,\n // ActionsheetIcon,\n Avatar,\n Icon,\n AddIcon,\n Text,\n Button,\n ButtonText,\n Spinner,\n Center,\n Fab,\n HStack,\n VStack,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { StatusBar } from 'expo-status-bar';\nimport { RoomType } from 'common';\nimport {\n useSetDeviceTokenMutation,\n useGetChannelsByUserQuery,\n useGetOrganizationTeamsQuery,\n useGetOrganizationSharableLinkQuery,\n} from 'common/graphql';\nimport { isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport VirtualizedScrollView from '../../components/VirtualizedScrollView';\nimport { useDrawerLayout } from '../../hooks/useDrawerLayout';\nimport { useDisclose } from '../../hooks/useDisclose';\nimport { useExpoNotification } from '../../hooks/useExpoNotificationProvider';\nimport { Teams } from './Components/Teams';\nimport { Channels } from './Components/Channels/index';\nimport { DirectChannels } from './Components/DirectChannels';\nimport { TopCommonSlider } from './Components/TopCommonSlider';\nimport { NavigationRoutes, colors } from '../../constants';\nimport { startCase, orderBy, uniqBy } from 'lodash-es';\nimport { navigationRef } from '@common-stack/client-react';\nimport { LoadingSpinnerDefault, Actionsheet } from '../../components';\nimport { config } from '../../config';\nimport Colors from 'tailwindcss/colors';\n\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];\n\nconst HomeScreen = ({ navigation, route }) => {\n const user = useSelector((state: any) => state.user, shallowEqual);\n const { isOpen, onOpen, onClose } = useDisclose();\n const { setSwipeEnabled, orgName, organizationDetail, setDrawerContent } = useDrawerLayout();\n const { expoToken, setExpoToken } = useExpoNotification();\n const [setDeviceTokenMutation] = useSetDeviceTokenMutation();\n const [loading, setLoading] = useState(true);\n\n const currentRoute = navigationRef?.isReady() ? navigationRef?.getCurrentRoute() : null;\n const { data: organizationSharableLink } = useGetOrganizationSharableLinkQuery();\n const actionItems = [\n {\n id: 1,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center bg-green-800\"\n style={{\n backgroundColor: '#166534',\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: 'bold', fontSize: 16 }}>\n {' '}\n Share a Link\n </Text>\n </HStack>\n ),\n onPress: async () => await shareLink(),\n },\n {\n id: 2,\n //label: 'Add from Contacts',\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 borderWidth: 1,\n borderColor: '#d1d5db',\n }}\n >\n <AntDesign color={'black'} name=\"adduser\" size={22} />\n <Text className=\"text-black\" style={{ color: 'black', fontWeight: 'bold', fontSize: 16 }}>\n Add from Contacts\n </Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleFromContacts, {\n orgName,\n }),\n },\n {\n id: 3,\n // label: 'Add by Email',\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 borderWidth: 1,\n borderColor: '#d1d5db',\n }}\n >\n <MaterialCommunityIcons color={'black'} name=\"email-outline\" size={22} />\n <Text style={{ color: 'black', fontWeight: 'bold', fontSize: 16 }}>Add by Email</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleByEmail, {\n orgName,\n }),\n },\n ];\n\n // Define handlerExpoToken before useFocusEffect\n const handlerExpoToken = React.useCallback(() => {\n if (expoToken) {\n setDeviceTokenMutation({\n variables: {\n deviceToken: expoToken,\n },\n });\n }\n }, [expoToken, setDeviceTokenMutation]);\n\n // useFocusEffect callback\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n setSwipeEnabled(true);\n handlerExpoToken();\n\n // Set loading state\n setLoading(true);\n\n // Turn off loading after a timeout in case other mechanisms fail\n const timer = setTimeout(() => {\n setLoading(false);\n }, 2000);\n\n return () => {\n clearTimeout(timer);\n setSwipeEnabled(false);\n };\n }, [orgName, setSwipeEnabled, handlerExpoToken]),\n );\n\n const shareLink = React.useCallback(async () => {\n try {\n const result = await Share.share({\n message: `${config.APP_NAME} - ${organizationSharableLink?.getOrganizationSharableLink ?? ''}`,\n });\n if (result.action === Share.sharedAction) {\n if (result.activityType) {\n // shared with activity type of result.activityType\n } else {\n // shared\n }\n } else if (result.action === Share.dismissedAction) {\n // dismissed\n }\n } catch (error: any) {\n alert(error.message);\n }\n }, [organizationSharableLink?.getOrganizationSharableLink]);\n\n // Turn off loading after initial render\n useEffect(() => {\n const timer = setTimeout(() => {\n setLoading(false);\n }, 1000);\n\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <>\n <VirtualizedScrollView className=\"bg-slate-50 flex-1\">\n <Box className=\"flex-1 bg-slate-50 pb-10 pt-2\">\n {/* <StatusBar style=\"light\" /> */}\n {loading ? (\n <LoadingSpinnerDefault />\n ) : (\n <>\n {orgName ? (\n <>\n <TopCommonSlider />\n <Box style={[styles.border, { marginVertical: 8 }]} />\n\n {/* Organization Teams */}\n <Teams />\n\n {/* Channels */}\n <Box style={{ marginTop: 10 }}>\n <Channels />\n </Box>\n\n {/* Direct Channels */}\n <Box style={{ marginTop: 12 }}>\n <DirectChannels />\n </Box>\n\n <Box style={[styles.bottomContainer, { marginTop: 15, paddingHorizontal: 10 }]}>\n <TouchableHighlight\n underlayColor={'transparent'}\n activeOpacity={0.7}\n onPress={onOpen}\n >\n <Box className=\"pr-10 py-2 pl-2\">\n <HStack className=\"w-full flex-1 items-center space-x-2\">\n <Avatar\n key={'home-add-teammates-key'}\n size={'sm'}\n className=\"bg-gray-100\"\n >\n <Icon\n as={AddIcon}\n style={{ width: '70%', height: '70%' }}\n color={Colors.gray[700]}\n />\n </Avatar>\n <Text\n style={{ fontSize: 15, fontWeight: '500' }}\n color={Colors.gray[800]}\n >\n Add teammates\n </Text>\n </HStack>\n </Box>\n </TouchableHighlight>\n\n <Actionsheet\n isOpen={isOpen}\n actionItems={actionItems}\n onCancel={onClose}\n hideBottomWidth={true}\n header={\n <Text\n className=\"text-center font-bold text-lg bg-white \"\n style={{\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n paddingTop: 10,\n }}\n >\n Invite people to join your team\n </Text>\n }\n />\n </Box>\n </>\n ) : (\n //\n <Center\n className={`flex-1 h-[${\n windowHeight - windowHeight / 3\n }] items-center justify-center`}\n >\n <Text style={{ fontSize: 15 }}>No organization found</Text>\n </Center>\n )}\n </>\n )}\n </Box>\n </VirtualizedScrollView>\n <Fab\n onPress={() => navigation.navigate(NavigationRoutes.SearchAddChannel, { orgName })}\n size=\"sm\"\n className=\"items-center shadow-md\"\n style={{ backgroundColor: colors.primaryBgColor, marginBottom: 16, marginRight: 16 }}\n >\n <FontAwesome5 color=\"white\" name=\"edit\" size={18} />\n </Fab>\n </>\n );\n};\n\nconst Home = (props: any) => {\n const user = useSelector((state: any) => state.user, shallowEqual);\n const { orgName } = useDrawerLayout();\n const navigation = useNavigation<any>();\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n if (!user?.profile) navigation?.navigate(NavigationRoutes.Login);\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n if (!orgName) return <LoadingSpinnerDefault />;\n\n return <HomeScreen {...props} />;\n};\n\nexport default Home;\n"],"names":["React","_a","Colors","Actionsheet","colors"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HomeScreen.js","sources":["../../../src/screens/Home/HomeScreen.tsx"],"sourcesContent":["import { Ionicons, AntDesign, FontAwesome5, MaterialCommunityIcons } from '@expo/vector-icons';\nimport { useFocusEffect, useNavigation } from '@react-navigation/native';\nimport React, { useCallback, useState } from 'react';\nimport { TouchableHighlight, Share, Dimensions } from 'react-native';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport styles from './styles';\nimport { Box, Avatar, Icon, AddIcon, Text, Spinner, Center, Fab, HStack } from '@admin-layout/gluestack-ui-mobile';\nimport { RoomType } from 'common';\nimport { useSetDeviceTokenMutation, useGetOrganizationSharableLinkQuery } from 'common/graphql';\nimport VirtualizedScrollView from '../../components/VirtualizedScrollView';\nimport { useDrawerLayout } from '../../hooks/useDrawerLayout';\nimport { useDisclose } from '../../hooks/useDisclose';\nimport { useExpoNotification } from '../../hooks/useExpoNotificationProvider';\nimport { Teams } from './Components/Teams';\nimport { Channels } from './Components/Channels/index';\nimport { DirectChannels } from './Components/DirectChannels';\nimport { TopCommonSlider } from './Components/TopCommonSlider';\nimport { NavigationRoutes, colors } from '../../constants';\nimport { navigationRef } from '@common-stack/client-react';\nimport { LoadingSpinnerDefault, Actionsheet } from '../../components';\nimport { config } from '../../config';\nimport Colors from 'tailwindcss/colors';\n\nconst windowHeight = Dimensions.get('window').height;\n\nconst defaultChannelType = [RoomType.Channel, RoomType.Private, RoomType.Public];\n\nconst HomeScreen = ({ navigation, route }) => {\n const user = useSelector((state: any) => state.user, shallowEqual);\n const { isOpen, onOpen, onClose } = useDisclose();\n const { setSwipeEnabled, orgName, organizationDetail } = useDrawerLayout();\n const { expoToken } = useExpoNotification();\n const [setDeviceTokenMutation] = useSetDeviceTokenMutation();\n const [loading, setLoading] = useState(true);\n const [teamsLoaded, setTeamsLoaded] = useState(false);\n const [channelsLoaded, setChannelsLoaded] = useState(false);\n const [directChannelsLoaded, setDirectChannelsLoaded] = useState(false);\n\n // Only fetch sharable link when needed (when action sheet is open)\n const { data: organizationSharableLink } = useGetOrganizationSharableLinkQuery({\n skip: !isOpen,\n });\n\n // Define shareLink before it's used in the memo\n const shareLink = useCallback(async () => {\n try {\n const result = await Share.share({\n message: `${config.APP_NAME} - ${organizationSharableLink?.getOrganizationSharableLink ?? ''}`,\n });\n } catch (error: any) {\n alert(error.message);\n }\n }, [organizationSharableLink?.getOrganizationSharableLink]);\n\n // Memoize action items to prevent unnecessary re-renders\n const actionItems = React.useMemo(\n () => [\n {\n id: 1,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center bg-green-800\"\n style={{\n backgroundColor: '#166534',\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: 'bold', fontSize: 16 }}>\n {' '}\n Share a Link\n </Text>\n </HStack>\n ),\n onPress: async () => await shareLink(),\n },\n {\n id: 2,\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 borderWidth: 1,\n borderColor: '#d1d5db',\n }}\n >\n <AntDesign color={'black'} name=\"adduser\" size={22} />\n <Text className=\"text-black\" style={{ color: 'black', fontWeight: 'bold', fontSize: 16 }}>\n Add from Contacts\n </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 borderWidth: 1,\n borderColor: '#d1d5db',\n }}\n >\n <MaterialCommunityIcons color={'black'} name=\"email-outline\" size={22} />\n <Text style={{ color: 'black', fontWeight: 'bold', fontSize: 16 }}>Add by Email</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleByEmail, {\n orgName,\n }),\n },\n ],\n [isOpen, navigation, orgName, shareLink],\n );\n\n // Optimize token handling\n const handlerExpoToken = useCallback(() => {\n if (expoToken) {\n setDeviceTokenMutation({\n variables: {\n deviceToken: expoToken,\n },\n });\n }\n }, [expoToken, setDeviceTokenMutation]);\n\n // Optimize focus effect\n useFocusEffect(\n useCallback(() => {\n setSwipeEnabled(true);\n handlerExpoToken();\n\n // Reduce initial loading time from 2000ms to 800ms\n setLoading(true);\n const timer = setTimeout(() => {\n setLoading(false);\n\n // Stagger component loading for better perceived performance\n setTimeout(() => {\n setTeamsLoaded(true);\n\n setTimeout(() => {\n setChannelsLoaded(true);\n\n setTimeout(() => {\n setDirectChannelsLoaded(true);\n }, 100);\n }, 100);\n }, 100);\n }, 800);\n\n return () => {\n clearTimeout(timer);\n setSwipeEnabled(false);\n // Reset loading states\n setTeamsLoaded(false);\n setChannelsLoaded(false);\n setDirectChannelsLoaded(false);\n };\n }, [orgName, setSwipeEnabled, handlerExpoToken]),\n );\n\n // Memoize the AddTeammates component to prevent unnecessary re-renders\n const AddTeammates = useCallback(\n () => (\n <Box style={[styles.bottomContainer, { marginTop: 15, paddingHorizontal: 10 }]}>\n <TouchableHighlight underlayColor={'transparent'} activeOpacity={0.7} onPress={onOpen}>\n <Box className=\"pr-10 py-2 pl-2\">\n <HStack className=\"w-full flex-1 items-center space-x-2\">\n <Avatar key={'home-add-teammates-key'} size={'sm'} className=\"bg-gray-100\">\n <Icon as={AddIcon} style={{ width: '70%', height: '70%' }} color={Colors.gray[700]} />\n </Avatar>\n <Text style={{ fontSize: 15, fontWeight: '500' }} color={Colors.gray[800]}>\n Add teammates\n </Text>\n </HStack>\n </Box>\n </TouchableHighlight>\n\n <Actionsheet\n isOpen={isOpen}\n actionItems={actionItems}\n onCancel={onClose}\n hideBottomWidth={true}\n header={\n <Text\n className=\"text-center font-bold text-lg bg-white \"\n style={{\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n paddingTop: 10,\n }}\n >\n Invite people to join your team\n </Text>\n }\n />\n </Box>\n ),\n [isOpen, onOpen, onClose, actionItems],\n );\n\n return (\n <>\n <VirtualizedScrollView className=\"bg-slate-50 flex-1\">\n <Box className=\"flex-1 bg-slate-50 pb-10 pt-2\">\n {/* <StatusBar style=\"light\" /> */}\n {loading ? (\n <LoadingSpinnerDefault />\n ) : (\n <>\n {orgName ? (\n <>\n <TopCommonSlider />\n <Box style={[styles.border, { marginVertical: 8 }]} />\n\n {/* Progressive loading of components */}\n {/* Organization Teams */}\n {teamsLoaded ? (\n <Teams />\n ) : (\n <Box className=\"py-2\">\n <Spinner size=\"small\" color={colors.primaryBgColor} />\n </Box>\n )}\n\n {/* Channels */}\n <Box style={{ marginTop: 10 }}>\n {channelsLoaded ? (\n <Channels />\n ) : (\n <Box className=\"py-2\">\n <Spinner size=\"small\" color={colors.primaryBgColor} />\n </Box>\n )}\n </Box>\n\n {/* Direct Channels */}\n <Box style={{ marginTop: 12 }}>\n {directChannelsLoaded ? (\n <DirectChannels />\n ) : (\n <Box className=\"py-2\">\n <Spinner size=\"small\" color={colors.primaryBgColor} />\n </Box>\n )}\n </Box>\n\n <AddTeammates />\n </>\n ) : (\n //\n <Center\n className={`flex-1 h-[${\n windowHeight - windowHeight / 3\n }] items-center justify-center`}\n >\n <Text style={{ fontSize: 15 }}>No organization found</Text>\n </Center>\n )}\n </>\n )}\n </Box>\n </VirtualizedScrollView>\n <Fab\n onPress={() => navigation.navigate(NavigationRoutes.SearchAddChannel, { orgName })}\n size=\"sm\"\n className=\"items-center shadow-md\"\n style={{ backgroundColor: colors.primaryBgColor, marginBottom: 16, marginRight: 16 }}\n >\n <FontAwesome5 color=\"white\" name=\"edit\" size={18} />\n </Fab>\n </>\n );\n};\n\n// Memoize the entire Home component to prevent unnecessary re-renders\nconst Home = React.memo((props: any) => {\n const user = useSelector((state: any) => state.user, shallowEqual);\n const { orgName } = useDrawerLayout();\n const navigation = useNavigation<any>();\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n if (!user?.profile) navigation?.navigate(NavigationRoutes.Login);\n\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n if (!orgName) return <LoadingSpinnerDefault />;\n\n return <HomeScreen {...props} />;\n});\n\nexport default Home;\n"],"names":["React","Colors","Actionsheet","colors"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@messenger-box/slack-ui-mobile",
|
|
3
|
-
"version": "10.0.3-alpha.
|
|
3
|
+
"version": "10.0.3-alpha.23",
|
|
4
4
|
"description": "Slack ui ref mobile package",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"watch-ts": "tsc --watch"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@messenger-box/platform-mobile": "10.0.3-alpha.
|
|
26
|
+
"@messenger-box/platform-mobile": "10.0.3-alpha.23"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"cp-cli": "^2.0.0"
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"typescript": {
|
|
49
49
|
"definition": "lib/index.d.ts"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "bb2351bcc0f7a1b26c73b3c89f66d148a1797b26"
|
|
52
52
|
}
|