@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 {FontAwesome5,Ionicons,AntDesign,MaterialCommunityIcons}from'@expo/vector-icons';import {useNavigation,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useEffect}from'react';import {Share,TouchableHighlight,Dimensions}from'react-native';import {useSelector,shallowEqual}from'react-redux';import styles from'./styles.js';import {Box,HStack,Avatar,Icon,AddIcon,Text,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 {navigationRef}from'@common-stack/client-react';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'../../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;
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
- ((_a = navigationRef) == null ? void 0 : _a.isReady()) ? (_b = navigationRef) == null ? void 0 : _b.getCurrentRoute() : null;
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
- const actionItems = [{
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 = React__default.useCallback(() => {
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(React__default.useCallback(() => {
115
+ useFocusEffect(useCallback(() => {
106
116
  setSwipeEnabled(true);
107
117
  handlerExpoToken();
108
118
  setLoading(true);
109
119
  const timer = setTimeout(() => {
110
120
  setLoading(false);
111
- }, 2e3);
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 shareLink = React__default.useCallback(async () => {
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") }))) : /* @__PURE__ */ React__default.createElement(Center, { className: `flex-1 h-[${windowHeight - windowHeight / 3}] items-center justify-center` }, /* @__PURE__ */ React__default.createElement(Text, { style: {
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.22",
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.22"
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": "440abaa249a10411e19507692ef6ed360253c7a5"
51
+ "gitHead": "bb2351bcc0f7a1b26c73b3c89f66d148a1797b26"
52
52
  }