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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/lib/components/Actionsheet.js +19 -14
  2. package/lib/components/Actionsheet.js.map +1 -1
  3. package/lib/components/SlackSearchInput/index.js +1 -1
  4. package/lib/components/SlackSearchInput/index.js.map +1 -1
  5. package/lib/index.js +1 -1
  6. package/lib/index.js.map +1 -1
  7. package/lib/navigation/SearchTabNavigation.js +1 -1
  8. package/lib/navigation/TeamTabNavigation.js +1 -1
  9. package/lib/screens/Channels/Add/AddName.js +4 -4
  10. package/lib/screens/Channels/Add/AddName.js.map +1 -1
  11. package/lib/screens/Channels/AddChannel.js +1 -1
  12. package/lib/screens/Channels/AddChannel.js.map +1 -1
  13. package/lib/screens/Channels/Channels.js +1 -1
  14. package/lib/screens/Channels/Channels.js.map +1 -1
  15. package/lib/screens/Home/Components/InviteMembers/index.js +88 -0
  16. package/lib/screens/Home/Components/InviteMembers/index.js.map +1 -0
  17. package/lib/screens/Home/Components/Teams/Teams.js +11 -13
  18. package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
  19. package/lib/screens/Home/HomeScreen.js +51 -65
  20. package/lib/screens/Home/HomeScreen.js.map +1 -1
  21. package/lib/screens/Organization/CreateOrganization.js +1 -1
  22. package/lib/screens/Organization/CreateOrganization.js.map +1 -1
  23. package/lib/screens/Organization/InitializeOrganizationChannel.js +1 -1
  24. package/lib/screens/Organization/InitializeOrganizationChannel.js.map +1 -1
  25. package/lib/screens/Peoples/AddByEmail.js +1 -1
  26. package/lib/screens/Peoples/AddByEmail.js.map +1 -1
  27. package/lib/screens/Peoples/AddFromContacts.js +118 -83
  28. package/lib/screens/Peoples/AddFromContacts.js.map +1 -1
  29. package/lib/screens/Search/SearchAddChannel.js +1 -1
  30. package/lib/screens/Search/SearchAddChannel.js.map +1 -1
  31. package/lib/screens/Teams/AddTeam.js +1 -1
  32. package/lib/screens/Teams/AddTeam.js.map +1 -1
  33. package/lib/screens/Teams/Teams.js +1 -1
  34. package/lib/screens/Teams/Teams.js.map +1 -1
  35. package/package.json +3 -3
@@ -0,0 +1,88 @@
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'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';import {Actionsheet as ActionSheet}from'../../../../components/Actionsheet.js';import {useGetOrganizationSharableLinkQuery}from'common/graphql';import {config}from'../../../../config/env-config.js';const InviteMembers = () => {
2
+ const {
3
+ isOpen,
4
+ onOpen,
5
+ onClose
6
+ } = useDisclose();
7
+ const navigation = useNavigation();
8
+ const {
9
+ orgName
10
+ } = useDrawerLayout();
11
+ const {
12
+ data: organizationSharableLink
13
+ } = useGetOrganizationSharableLinkQuery({
14
+ fetchPolicy: "cache-and-network",
15
+ skip: !isOpen
16
+ });
17
+ const shareLink = async () => {
18
+ var _a;
19
+ try {
20
+ await Share.share({
21
+ message: `${config.APP_NAME} - ${(_a = organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink) != null ? _a : ""}`
22
+ });
23
+ } catch (error) {
24
+ alert(error.message);
25
+ }
26
+ };
27
+ const actionItems = [
28
+ {
29
+ id: 1,
30
+ label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center", style: {
31
+ backgroundColor: Colors.green,
32
+ paddingVertical: 12,
33
+ borderRadius: 8,
34
+ marginHorizontal: 10,
35
+ marginVertical: 5
36
+ } }, /* @__PURE__ */ React__default.createElement(Ionicons, { color: "white", name: "share-outline", size: 22 }), /* @__PURE__ */ React__default.createElement(Text, { className: "text-white", style: {
37
+ color: "white",
38
+ fontWeight: "600",
39
+ fontSize: 16
40
+ } }, "Share a Link")),
41
+ onPress: shareLink
42
+ },
43
+ {
44
+ id: 2,
45
+ label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center border", style: {
46
+ paddingVertical: 12,
47
+ borderRadius: 8,
48
+ marginHorizontal: 10,
49
+ marginVertical: 5,
50
+ backgroundColor: colors.gray[50]
51
+ } }, /* @__PURE__ */ React__default.createElement(AntDesign, { color: colors.gray[900], name: "adduser", size: 22 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
52
+ color: colors.gray[900],
53
+ fontWeight: "600",
54
+ fontSize: 16
55
+ } }, "Add from Contacts")),
56
+ onPress: () => navigation.navigate(NavigationRoutes.AddPeopleFromContacts, {
57
+ orgName
58
+ })
59
+ },
60
+ {
61
+ id: 4,
62
+ label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center border", style: {
63
+ paddingVertical: 12,
64
+ borderRadius: 8,
65
+ marginHorizontal: 10,
66
+ marginVertical: 5,
67
+ backgroundColor: colors.gray[50]
68
+ } }, /* @__PURE__ */ React__default.createElement(MaterialCommunityIcons, { color: colors.gray[900], name: "email-outline", size: 22 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
69
+ color: colors.gray[900],
70
+ fontWeight: "600",
71
+ fontSize: 16
72
+ } }, "Add by Email")),
73
+ onPress: () => navigation.navigate(NavigationRoutes.AddPeopleByEmail, {
74
+ orgName
75
+ })
76
+ }
77
+ ];
78
+ return /* @__PURE__ */ React__default.createElement(Box, { style: {
79
+ marginBottom: 8,
80
+ paddingHorizontal: 12
81
+ } }, /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: onOpen }, /* @__PURE__ */ React__default.createElement(Box, { className: "py-3 " }, /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "w-full flex-1 items-center space-x-3" }, /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Ionicons, { name: "add", size: 20, color: "black" })), /* @__PURE__ */ React__default.createElement(Text, { style: {
82
+ fontSize: 15,
83
+ fontWeight: "500"
84
+ }, color: colors.gray[800] }, "Add teammates")))), /* @__PURE__ */ React__default.createElement(ActionSheet, { isOpen, actionItems, onCancel: onClose, hideBottomWidth: true, isShowCancelButton: false, header: /* @__PURE__ */ React__default.createElement(Text, { className: "text-center font-bold text-lg bg-white", style: {
85
+ paddingVertical: 16,
86
+ color: colors.gray[900]
87
+ } }, "Invite people to join your team") }));
88
+ };export{InviteMembers};//# sourceMappingURL=index.js.map
@@ -0,0 +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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"}
@@ -29,12 +29,15 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
29
29
  fetchPolicy: "cache-and-network",
30
30
  nextFetchPolicy: "cache-first",
31
31
  onCompleted(data) {
32
- send({
33
- type: "SET_TEAMS",
34
- data: {
35
- teams: (data == null ? void 0 : data.getOrganizationTeams) || []
36
- }
37
- });
32
+ var _a;
33
+ if ((_a = data == null ? void 0 : data.getOrganizationTeams) == null ? void 0 : _a.length) {
34
+ send({
35
+ type: "SET_TEAMS",
36
+ data: {
37
+ teams: (data == null ? void 0 : data.getOrganizationTeams) || []
38
+ }
39
+ });
40
+ }
38
41
  },
39
42
  onError(error2) {
40
43
  const isTeamServiceError = error2.message.includes("Service 'TeamService");
@@ -100,16 +103,11 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
100
103
  });
101
104
  };
102
105
  }, [send]);
103
- useEffect(() => {
104
- if (shouldRefetch && orgName) {
105
- reFetchTeams();
106
- }
107
- }, [shouldRefetch, orgName, reFetchTeams]);
108
106
  useFocusEffect(useCallback(() => {
109
- if (orgName && (!teams || teams.length === 0)) {
107
+ if (orgName) {
110
108
  reFetchTeams();
111
109
  }
112
- }, [reFetchTeams, teams, orgName]));
110
+ }, [orgName]));
113
111
  const organizationTeams = useMemo(() => {
114
112
  var _a;
115
113
  return teams && (teams == null ? void 0 : teams.length) && take(orderBy(uniqBy((_a = [...teams]) == null ? void 0 : _a.filter((t) => (t == null ? void 0 : t.orgName) === orgName), ({
@@ -1 +1 @@
1
- {"version":3,"file":"Teams.js","sources":["../../../../../src/screens/Home/Components/Teams/Teams.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useCallback, useMemo, useContext } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport styles from '../../styles';\nimport { View, FlatList, Box, Text, Spinner, HStack, VStack } from '@admin-layout/gluestack-ui-mobile';\nimport { NavigationRoutes } from '../../../../constants/routes';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { orderBy, uniqBy, take } from 'lodash-es';\nimport { useGetOrganizationTeamsQuery } from 'common/graphql';\nimport { useDrawerLayout } from '../../../../hooks';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\nimport colors from 'tailwindcss/colors';\nimport { teamsXstate } from './workflow/teams-xstate';\nimport { useSafeMachine } from './hooks/useSafeMachine';\nimport { RefetchContext } from '../../HomeScreen';\n\nconst Teams = () => {\n const { orgName, organizationDetail } = useDrawerLayout();\n const navigation = useNavigation<any>();\n const [teamExpandable, setTeamExpendable] = useState(true);\n const user = useSelector(userSelector, shallowEqual);\n const isFocused = useIsFocused();\n const { shouldRefetch } = useContext(RefetchContext);\n\n // Using the safe XState machine hook\n const [state, send] = useSafeMachine(teamsXstate);\n const { teams, loading, teamsLoading, error } = state.context;\n\n const {\n data: orgTeams,\n loading: orgTeamsLoading,\n error: orgTeamsError,\n refetch: reFetchOrgTeams,\n } = useGetOrganizationTeamsQuery({\n variables: { orgName: orgName },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n onCompleted(data) {\n send({\n type: 'SET_TEAMS',\n data: { teams: data?.getOrganizationTeams || [] },\n });\n },\n onError(error) {\n // Check specifically for team service errors\n const isTeamServiceError = error.message.includes(\"Service 'TeamService\");\n const errorMessage = isTeamServiceError\n ? 'Team service is temporarily unavailable. Please try again later.'\n : error.message;\n\n // Update state to reflect the error\n send({\n type: 'ERROR',\n data: { message: errorMessage },\n });\n },\n skip: !orgName,\n });\n\n const reFetchTeams = useCallback(() => {\n // Skip refetch if we're already loading\n if (state.context.teamsLoading) {\n console.log('Skipping teams refetch - already in progress');\n return;\n }\n\n if (orgName) {\n console.log('Refetching teams');\n send({ type: 'REFETCH_TEAMS' });\n reFetchOrgTeams({ orgName: orgName })\n .then((res) => {\n if (res?.data?.getOrganizationTeams) {\n send({\n type: 'SET_TEAMS',\n data: { teams: res.data.getOrganizationTeams },\n });\n }\n })\n .catch((error) => {\n // Check specifically for team service errors\n const isTeamServiceError = error.message && error.message.includes(\"Service 'TeamService\");\n const errorMessage = isTeamServiceError\n ? 'Teams are temporarily unavailable. Please try again later.'\n : error.message || 'Failed to fetch teams';\n\n send({\n type: 'ERROR',\n data: { message: errorMessage },\n });\n });\n }\n }, [orgName, send, state.context.teamsLoading, reFetchOrgTeams]);\n\n // Initialize XState with the org name when component mounts or orgName changes\n useEffect(() => {\n if (orgName && !state.context.orgName) {\n console.log('Initializing state with orgName:', orgName);\n send({\n type: 'INITIAL_CONTEXT',\n data: { orgName },\n });\n }\n }, [orgName, state.context.orgName, send]);\n\n // Clean up when unmounting\n useEffect(() => {\n return () => {\n send({ type: 'CLEAR_DATA' });\n };\n }, [send]);\n\n // Use RefetchContext to control when to refetch data\n useEffect(() => {\n if (shouldRefetch && orgName) {\n reFetchTeams();\n }\n }, [shouldRefetch, orgName, reFetchTeams]);\n\n useFocusEffect(\n useCallback(() => {\n // Only fetch teams when first focused or when we don't have any teams\n if (orgName && (!teams || teams.length === 0)) {\n reFetchTeams();\n }\n }, [reFetchTeams, teams, orgName]),\n );\n\n const organizationTeams = useMemo(() => {\n return (\n (teams &&\n teams?.length &&\n take(\n orderBy(\n uniqBy(\n [...teams]?.filter((t: any) => t?.orgName === orgName),\n ({ _id }) => _id,\n ),\n [(ch: any) => ch?.title.toLowerCase()],\n ['asc'],\n ),\n 10,\n )) ||\n []\n );\n }, [teams, orgName]);\n\n const viewTeam = useCallback(\n (item: any) => {\n navigation.navigate(NavigationRoutes.ViewTeam, {\n teamId: item?.id?.toString(),\n teamName: item?.name,\n title: item?.title?.toString(),\n totalMembers: item?.teamMembers?.length,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName, navigation],\n );\n\n const renderOrganizationTeamItem = useCallback(\n ({ item }) => (\n <TouchableOpacity\n key={item.id}\n onPress={() => viewTeam(item)}\n style={{ paddingVertical: 2, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Octicons color={colors.gray[700]} name=\"lock\" size={18} />\n <Text className=\"text-gray-900 flex-1 text-base\">{item.title}</Text>\n </HStack>\n </TouchableOpacity>\n ),\n [viewTeam],\n );\n\n const ListEmptyComponent = useCallback(() => {\n return (\n <Box style={{ padding: 12 }}>\n {teamsLoading ? (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Spinner color=\"#4A154B\" size=\"small\" />\n <Text style={{ marginTop: 8, color: '#616061' }}>Loading teams...</Text>\n </Box>\n ) : error ? (\n <Box style={{ padding: 8, backgroundColor: '#FFF4F4', borderRadius: 4 }}>\n <Text color=\"#E01E5A\" style={{ marginBottom: 8, fontWeight: '500' }}>\n {error}\n </Text>\n <TouchableOpacity onPress={reFetchTeams}>\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 <Octicons name=\"organization\" color=\"#616061\" size={20} />\n </Box>\n <Text style={{ color: '#616061', textAlign: 'center' }}>No teams available</Text>\n </Box>\n )}\n </Box>\n );\n }, [teamsLoading, error, reFetchTeams]);\n\n const ListFooterComponent = useCallback(() => {\n return (\n <VStack>\n {teams?.length > 10 && (\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.Teams, { orgName })}\n style={{ paddingVertical: 8, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <MaterialIcons color=\"#616061\" name=\"search\" size={18} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Browse all Teams</Text>\n </HStack>\n </TouchableOpacity>\n )}\n\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.AddTeam, { orgName })}\n style={{ paddingBottom: 5, 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 Team</Text>\n </HStack>\n </TouchableOpacity>\n </VStack>\n );\n }, [teams, orgName, navigation]);\n\n const SectionHeader = useCallback(() => {\n return (\n <TouchableOpacity\n style={{\n paddingVertical: 8,\n paddingHorizontal: 12,\n marginBottom: 4,\n }}\n onPress={() => setTeamExpendable(!teamExpandable)}\n >\n <HStack className=\"items-center justify-between\">\n <Text className=\"text-gray-900 font-bold text-lg\">Teams</Text>\n <HStack space=\"sm\" className=\"items-center\">\n {teamsLoading && <Spinner size=\"small\" color=\"#4A154B\" />}\n <MaterialIcons\n name={teamExpandable ? 'keyboard-arrow-up' : 'keyboard-arrow-down'}\n color=\"#616061\"\n size={22}\n />\n </HStack>\n </HStack>\n </TouchableOpacity>\n );\n }, [teamExpandable, teamsLoading]);\n\n return (\n <View style={{ flex: 1 }}>\n <SectionHeader />\n\n {teamExpandable && (\n <FlatList\n data={organizationTeams}\n renderItem={renderOrganizationTeamItem}\n keyExtractor={(item) => String(item.id || item._id)}\n ListEmptyComponent={ListEmptyComponent}\n ListFooterComponent={ListFooterComponent}\n showsVerticalScrollIndicator={false}\n initialNumToRender={10}\n maxToRenderPerBatch={10}\n windowSize={5}\n contentContainerStyle={{\n flexGrow: 1,\n }}\n />\n )}\n </View>\n );\n};\n\nexport default React.memo(Teams);\n"],"names":["error","React"],"mappings":"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"}
1
+ {"version":3,"file":"Teams.js","sources":["../../../../../src/screens/Home/Components/Teams/Teams.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useCallback, useMemo, useContext } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport styles from '../../styles';\nimport { View, FlatList, Box, Text, Spinner, HStack, VStack } from '@admin-layout/gluestack-ui-mobile';\nimport { NavigationRoutes } from '../../../../constants/routes';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport { useNavigation } from '@react-navigation/native';\nimport { orderBy, uniqBy, take } from 'lodash-es';\nimport { useGetOrganizationTeamsQuery } from 'common/graphql';\nimport { useDrawerLayout } from '../../../../hooks';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\nimport colors from 'tailwindcss/colors';\nimport { teamsXstate } from './workflow/teams-xstate';\nimport { useSafeMachine } from './hooks/useSafeMachine';\nimport { RefetchContext } from '../../HomeScreen';\n\nconst Teams = () => {\n const { orgName, organizationDetail } = useDrawerLayout();\n const navigation = useNavigation<any>();\n const [teamExpandable, setTeamExpendable] = useState(true);\n const user = useSelector(userSelector, shallowEqual);\n const isFocused = useIsFocused();\n const { shouldRefetch } = useContext(RefetchContext);\n\n // Using the safe XState machine hook\n const [state, send] = useSafeMachine(teamsXstate);\n const { teams, loading, teamsLoading, error } = state.context;\n\n const {\n data: orgTeams,\n loading: orgTeamsLoading,\n error: orgTeamsError,\n refetch: reFetchOrgTeams,\n } = useGetOrganizationTeamsQuery({\n variables: { orgName: orgName },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n onCompleted(data) {\n if (data?.getOrganizationTeams?.length) {\n send({\n type: 'SET_TEAMS',\n data: { teams: data?.getOrganizationTeams || [] },\n });\n }\n },\n onError(error) {\n // Check specifically for team service errors\n const isTeamServiceError = error.message.includes(\"Service 'TeamService\");\n const errorMessage = isTeamServiceError\n ? 'Team service is temporarily unavailable. Please try again later.'\n : error.message;\n\n // Update state to reflect the error\n send({\n type: 'ERROR',\n data: { message: errorMessage },\n });\n },\n skip: !orgName,\n });\n\n const reFetchTeams = useCallback(() => {\n // Skip refetch if we're already loading\n if (state.context.teamsLoading) {\n console.log('Skipping teams refetch - already in progress');\n return;\n }\n\n if (orgName) {\n console.log('Refetching teams');\n send({ type: 'REFETCH_TEAMS' });\n reFetchOrgTeams({ orgName: orgName })\n .then((res) => {\n if (res?.data?.getOrganizationTeams) {\n send({\n type: 'SET_TEAMS',\n data: { teams: res.data.getOrganizationTeams },\n });\n }\n })\n .catch((error) => {\n // Check specifically for team service errors\n const isTeamServiceError = error.message && error.message.includes(\"Service 'TeamService\");\n const errorMessage = isTeamServiceError\n ? 'Teams are temporarily unavailable. Please try again later.'\n : error.message || 'Failed to fetch teams';\n\n send({\n type: 'ERROR',\n data: { message: errorMessage },\n });\n });\n }\n }, [orgName, send, state.context.teamsLoading, reFetchOrgTeams]);\n\n // Initialize XState with the org name when component mounts or orgName changes\n useEffect(() => {\n if (orgName && !state.context.orgName) {\n console.log('Initializing state with orgName:', orgName);\n send({\n type: 'INITIAL_CONTEXT',\n data: { orgName },\n });\n }\n }, [orgName, state.context.orgName, send]);\n\n // Clean up when unmounting\n useEffect(() => {\n return () => {\n send({ type: 'CLEAR_DATA' });\n };\n }, [send]);\n\n // Use RefetchContext to control when to refetch data\n // useEffect(() => {\n // if (shouldRefetch && orgName) {\n // reFetchTeams();\n // }\n // }, [shouldRefetch, orgName, reFetchTeams]);\n\n // useFocusEffect(\n // useCallback(() => {\n // // Only fetch teams when first focused or when we don't have any teams\n // if (orgName && (!teams || teams.length === 0)) {\n // reFetchTeams();\n // }\n // }, [reFetchTeams, teams, orgName]),\n // );\n\n useFocusEffect(\n useCallback(() => {\n // Only fetch teams when first focused or when we don't have any teams\n if (orgName) {\n reFetchTeams();\n }\n }, [orgName]),\n );\n\n const organizationTeams = useMemo(() => {\n return (\n (teams &&\n teams?.length &&\n take(\n orderBy(\n uniqBy(\n [...teams]?.filter((t: any) => t?.orgName === orgName),\n ({ _id }) => _id,\n ),\n [(ch: any) => ch?.title.toLowerCase()],\n ['asc'],\n ),\n 10,\n )) ||\n []\n );\n }, [teams, orgName]);\n\n const viewTeam = useCallback(\n (item: any) => {\n navigation.navigate(NavigationRoutes.ViewTeam, {\n teamId: item?.id?.toString(),\n teamName: item?.name,\n title: item?.title?.toString(),\n totalMembers: item?.teamMembers?.length,\n orgName: orgName,\n hideTabBar: true,\n });\n },\n [orgName, navigation],\n );\n\n const renderOrganizationTeamItem = useCallback(\n ({ item }) => (\n <TouchableOpacity\n key={item.id}\n onPress={() => viewTeam(item)}\n style={{ paddingVertical: 2, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <Octicons color={colors.gray[700]} name=\"lock\" size={18} />\n <Text className=\"text-gray-900 flex-1 text-base\">{item.title}</Text>\n </HStack>\n </TouchableOpacity>\n ),\n [viewTeam],\n );\n\n const ListEmptyComponent = useCallback(() => {\n return (\n <Box style={{ padding: 12 }}>\n {teamsLoading ? (\n <Box style={{ alignItems: 'center', paddingVertical: 16 }}>\n <Spinner color=\"#4A154B\" size=\"small\" />\n <Text style={{ marginTop: 8, color: '#616061' }}>Loading teams...</Text>\n </Box>\n ) : error ? (\n <Box style={{ padding: 8, backgroundColor: '#FFF4F4', borderRadius: 4 }}>\n <Text color=\"#E01E5A\" style={{ marginBottom: 8, fontWeight: '500' }}>\n {error}\n </Text>\n <TouchableOpacity onPress={reFetchTeams}>\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 <Octicons name=\"organization\" color=\"#616061\" size={20} />\n </Box>\n <Text style={{ color: '#616061', textAlign: 'center' }}>No teams available</Text>\n </Box>\n )}\n </Box>\n );\n }, [teamsLoading, error, reFetchTeams]);\n\n const ListFooterComponent = useCallback(() => {\n return (\n <VStack>\n {teams?.length > 10 && (\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.Teams, { orgName })}\n style={{ paddingVertical: 8, paddingHorizontal: 12 }}\n >\n <HStack space=\"md\" className=\"items-center\">\n <MaterialIcons color=\"#616061\" name=\"search\" size={18} />\n <Text style={{ fontSize: 16, color: '#616061' }}>Browse all Teams</Text>\n </HStack>\n </TouchableOpacity>\n )}\n\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.AddTeam, { orgName })}\n style={{ paddingBottom: 5, 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 Team</Text>\n </HStack>\n </TouchableOpacity>\n </VStack>\n );\n }, [teams, orgName, navigation]);\n\n const SectionHeader = useCallback(() => {\n return (\n <TouchableOpacity\n style={{\n paddingVertical: 8,\n paddingHorizontal: 12,\n marginBottom: 4,\n }}\n onPress={() => setTeamExpendable(!teamExpandable)}\n >\n <HStack className=\"items-center justify-between\">\n <Text className=\"text-gray-900 font-bold text-lg\">Teams</Text>\n <HStack space=\"sm\" className=\"items-center\">\n {teamsLoading && <Spinner size=\"small\" color=\"#4A154B\" />}\n <MaterialIcons\n name={teamExpandable ? 'keyboard-arrow-up' : 'keyboard-arrow-down'}\n color=\"#616061\"\n size={22}\n />\n </HStack>\n </HStack>\n </TouchableOpacity>\n );\n }, [teamExpandable, teamsLoading]);\n\n return (\n <View style={{ flex: 1 }}>\n <SectionHeader />\n\n {teamExpandable && (\n <FlatList\n data={organizationTeams}\n renderItem={renderOrganizationTeamItem}\n keyExtractor={(item) => String(item.id || item._id)}\n ListEmptyComponent={ListEmptyComponent}\n ListFooterComponent={ListFooterComponent}\n showsVerticalScrollIndicator={false}\n initialNumToRender={10}\n maxToRenderPerBatch={10}\n windowSize={5}\n contentContainerStyle={{\n flexGrow: 1,\n }}\n />\n )}\n </View>\n );\n};\n\nexport default React.memo(Teams);\n"],"names":["error","React"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import {Ionicons,AntDesign,MaterialCommunityIcons,FontAwesome5}from'@expo/vector-icons';import {useNavigation,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useMemo,useCallback,createContext}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,Divider,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;
1
+ import {Ionicons,AntDesign,MaterialCommunityIcons,FontAwesome5}from'@expo/vector-icons';import {useNavigation,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useMemo,useCallback,createContext}from'react';import {Share,TouchableHighlight,Dimensions}from'react-native';import {useSelector,shallowEqual}from'react-redux';import styles from'./styles.js';import {HStack,Text,Box,Icon,AddIcon,Center,Spinner,VStack,Divider,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 {InviteMembers}from'./Components/InviteMembers/index.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 as 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,7 +14,7 @@ var __spreadValues = (a, b) => {
14
14
  }
15
15
  return a;
16
16
  };
17
- const windowHeight = Dimensions.get("window").height;
17
+ Dimensions.get("window").height;
18
18
  [RoomType.Channel, RoomType.Private, RoomType.Public];
19
19
  const RefetchContext = createContext({
20
20
  shouldRefetch: false,
@@ -40,10 +40,7 @@ const HomeScreen = ({
40
40
  expoToken
41
41
  } = useExpoNotification();
42
42
  const [setDeviceTokenMutation] = useSetDeviceTokenMutation();
43
- const [loading, setLoading] = useState(true);
44
- const [teamsLoaded, setTeamsLoaded] = useState(false);
45
- const [channelsLoaded, setChannelsLoaded] = useState(false);
46
- const [directChannelsLoaded, setDirectChannelsLoaded] = useState(false);
43
+ const [isLoading, setIsLoading] = useState(true);
47
44
  const [shouldRefetch, setShouldRefetch] = useState(false);
48
45
  const refetchContextValue = useMemo(() => ({
49
46
  shouldRefetch,
@@ -67,30 +64,29 @@ const HomeScreen = ({
67
64
  }, [organizationSharableLink == null ? void 0 : organizationSharableLink.getOrganizationSharableLink]);
68
65
  const actionItems = useMemo(() => [{
69
66
  id: 1,
70
- label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center bg-green-800", style: {
71
- backgroundColor: "#166534",
67
+ label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center", style: {
68
+ backgroundColor: Colors.primaryBgColor,
72
69
  paddingVertical: 12,
73
70
  borderRadius: 8,
74
71
  marginHorizontal: 10,
75
72
  marginVertical: 5
76
73
  } }, /* @__PURE__ */ React__default.createElement(Ionicons, { color: "white", name: "share-outline", size: 22 }), /* @__PURE__ */ React__default.createElement(Text, { className: "text-white", style: {
77
74
  color: "white",
78
- fontWeight: "bold",
75
+ fontWeight: "600",
79
76
  fontSize: 16
80
- } }, " ", "Share a Link")),
77
+ } }, "Share a Link")),
81
78
  onPress: async () => await shareLink()
82
79
  }, {
83
80
  id: 2,
84
- label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center ", style: {
81
+ label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center", style: {
85
82
  paddingVertical: 12,
86
83
  borderRadius: 8,
87
84
  marginHorizontal: 10,
88
85
  marginVertical: 5,
89
- borderWidth: 1,
90
- borderColor: "#d1d5db"
91
- } }, /* @__PURE__ */ React__default.createElement(AntDesign, { color: "black", name: "adduser", size: 22 }), /* @__PURE__ */ React__default.createElement(Text, { className: "text-black", style: {
92
- color: "black",
93
- fontWeight: "bold",
86
+ backgroundColor: colors.gray[50]
87
+ } }, /* @__PURE__ */ React__default.createElement(AntDesign, { color: colors.gray[900], name: "adduser", size: 22 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
88
+ color: colors.gray[900],
89
+ fontWeight: "600",
94
90
  fontSize: 16
95
91
  } }, "Add from Contacts")),
96
92
  onPress: () => navigation.navigate(NavigationRoutes.AddPeopleFromContacts, {
@@ -98,16 +94,15 @@ const HomeScreen = ({
98
94
  })
99
95
  }, {
100
96
  id: 3,
101
- label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center ", style: {
97
+ label: /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", className: "flex-1 justify-center items-center", style: {
102
98
  paddingVertical: 12,
103
99
  borderRadius: 8,
104
100
  marginHorizontal: 10,
105
101
  marginVertical: 5,
106
- borderWidth: 1,
107
- borderColor: "#d1d5db"
108
- } }, /* @__PURE__ */ React__default.createElement(MaterialCommunityIcons, { color: "black", name: "email-outline", size: 22 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
109
- color: "black",
110
- fontWeight: "bold",
102
+ backgroundColor: colors.gray[50]
103
+ } }, /* @__PURE__ */ React__default.createElement(MaterialCommunityIcons, { color: colors.gray[900], name: "email-outline", size: 22 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
104
+ color: colors.gray[900],
105
+ fontWeight: "600",
111
106
  fontSize: 16
112
107
  } }, "Add by Email")),
113
108
  onPress: () => navigation.navigate(NavigationRoutes.AddPeopleByEmail, {
@@ -126,59 +121,50 @@ const HomeScreen = ({
126
121
  useFocusEffect(useCallback(() => {
127
122
  setSwipeEnabled(true);
128
123
  handlerExpoToken();
129
- if (!teamsLoaded || !channelsLoaded || !directChannelsLoaded) {
130
- setShouldRefetch(true);
131
- }
132
- if (loading) {
133
- const timer = setTimeout(() => {
134
- setLoading(false);
135
- setTimeout(() => {
136
- setTeamsLoaded(true);
137
- setTimeout(() => {
138
- setChannelsLoaded(true);
139
- setTimeout(() => {
140
- setDirectChannelsLoaded(true);
141
- setShouldRefetch(false);
142
- }, 100);
143
- }, 100);
144
- }, 100);
145
- return () => clearTimeout(timer);
146
- }, 800);
147
- }
124
+ setShouldRefetch(true);
125
+ const timer = setTimeout(() => {
126
+ setIsLoading(false);
127
+ setShouldRefetch(false);
128
+ }, 500);
148
129
  return () => {
130
+ clearTimeout(timer);
149
131
  setSwipeEnabled(false);
150
132
  };
151
- }, [orgName, setSwipeEnabled, handlerExpoToken, loading, teamsLoaded, channelsLoaded, directChannelsLoaded]));
152
- const AddTeammates = useCallback(() => /* @__PURE__ */ React__default.createElement(Box, { style: [styles.bottomContainer, {
133
+ }, [orgName, setSwipeEnabled, handlerExpoToken]));
134
+ useCallback(() => /* @__PURE__ */ React__default.createElement(Box, { style: [styles.bottomContainer, {
153
135
  marginBottom: 8,
154
- paddingHorizontal: 10
155
- }] }, /* @__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: {
156
- width: "70%",
157
- height: "70%"
136
+ paddingHorizontal: 16
137
+ }] }, /* @__PURE__ */ React__default.createElement(TouchableHighlight, { underlayColor: colors.gray[50], onPress: onOpen }, /* @__PURE__ */ React__default.createElement(Box, { className: "py-3 px-2" }, /* @__PURE__ */ React__default.createElement(HStack, { className: "w-full flex-1 items-center space-x-3" }, /* @__PURE__ */ React__default.createElement(Box, { style: {
138
+ backgroundColor: colors.gray[100],
139
+ borderRadius: 20,
140
+ padding: 6
141
+ } }, /* @__PURE__ */ React__default.createElement(Icon, { as: AddIcon, style: {
142
+ width: 20,
143
+ height: 20
158
144
  }, color: colors.gray[700] })), /* @__PURE__ */ React__default.createElement(Text, { style: {
159
145
  fontSize: 15,
160
146
  fontWeight: "500"
161
- }, color: colors.gray[800] }, "Add teammates")))), /* @__PURE__ */ React__default.createElement(ActionSheet, { isOpen, actionItems, onCancel: onClose, hideBottomWidth: true, header: /* @__PURE__ */ React__default.createElement(Text, { className: "text-center font-bold text-lg bg-white ", style: {
162
- borderTopLeftRadius: 12,
163
- borderTopRightRadius: 12,
164
- paddingTop: 10
147
+ }, color: colors.gray[800] }, "Add teammates")))), /* @__PURE__ */ React__default.createElement(ActionSheet, { isOpen, actionItems, onCancel: onClose, hideBottomWidth: true, header: /* @__PURE__ */ React__default.createElement(Text, { className: "text-center font-bold text-lg", style: {
148
+ paddingVertical: 16,
149
+ color: colors.gray[900]
165
150
  } }, "Invite people to join your team") })), [isOpen, onOpen, onClose, actionItems]);
166
- return /* @__PURE__ */ React__default.createElement(RefetchContext.Provider, { value: refetchContextValue }, /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, { className: "bg-white flex-1" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white 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(Divider, { style: {
167
- marginVertical: 8
168
- } }), teamsLoaded ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Teams, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
169
- marginVertical: 8
170
- } })) : /* @__PURE__ */ React__default.createElement(Box, { className: "py-2" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "small", color: Colors.primaryBgColor })), /* @__PURE__ */ React__default.createElement(Box, null, channelsLoaded ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Channels, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
171
- marginVertical: 8
172
- } })) : /* @__PURE__ */ React__default.createElement(Box, { className: "py-2" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "small", color: Colors.primaryBgColor }))), /* @__PURE__ */ React__default.createElement(Box, null, directChannelsLoaded ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(DirectChannels, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
173
- marginVertical: 8
174
- } })) : /* @__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: {
175
- fontSize: 15
176
- } }, "No organization found"))))), /* @__PURE__ */ React__default.createElement(Fab, { onPress: () => navigation.navigate(NavigationRoutes.SearchAddChannel, {
151
+ if (!orgName) {
152
+ return /* @__PURE__ */ React__default.createElement(Center, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(Spinner, { size: "large", color: Colors.primaryBgColor }));
153
+ }
154
+ return /* @__PURE__ */ React__default.createElement(RefetchContext.Provider, { value: refetchContextValue }, /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, { className: "bg-white flex-1" }, /* @__PURE__ */ React__default.createElement(Box, { className: "flex-1 bg-white pb-10" }, isLoading ? /* @__PURE__ */ React__default.createElement(VStack, { space: "md", className: "p-4" }, /* @__PURE__ */ React__default.createElement(Box, { className: "h-12 bg-gray-100 rounded-md animate-pulse" }), /* @__PURE__ */ React__default.createElement(Box, { className: "h-32 bg-gray-100 rounded-md animate-pulse" }), /* @__PURE__ */ React__default.createElement(Box, { className: "h-24 bg-gray-100 rounded-md animate-pulse" }), /* @__PURE__ */ React__default.createElement(Box, { className: "h-40 bg-gray-100 rounded-md animate-pulse" })) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(TopCommonSlider, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
155
+ marginVertical: 12
156
+ } }), /* @__PURE__ */ React__default.createElement(Teams, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
157
+ marginVertical: 12
158
+ } }), /* @__PURE__ */ React__default.createElement(Channels, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
159
+ marginVertical: 12
160
+ } }), /* @__PURE__ */ React__default.createElement(DirectChannels, null), /* @__PURE__ */ React__default.createElement(Divider, { style: {
161
+ marginVertical: 12
162
+ } }), /* @__PURE__ */ React__default.createElement(InviteMembers, null)))), /* @__PURE__ */ React__default.createElement(Fab, { onPress: () => navigation.navigate(NavigationRoutes.SearchAddChannel, {
177
163
  orgName
178
- }), size: "sm", className: "items-center shadow-md", style: {
164
+ }), size: "sm", className: "items-center shadow-lg", style: {
179
165
  backgroundColor: Colors.primaryBgColor,
180
- marginBottom: 16,
181
- marginRight: 16
166
+ marginBottom: 20,
167
+ marginRight: 20
182
168
  } }, /* @__PURE__ */ React__default.createElement(FontAwesome5, { color: "white", name: "edit", size: 18 })));
183
169
  };
184
170
  const Home = React__default.memo((props) => {
@@ -1 +1 @@
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, useMemo, createContext } from 'react';\nimport { TouchableHighlight, Share, Dimensions } from 'react-native';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport styles from './styles';\nimport {\n Box,\n Avatar,\n Icon,\n AddIcon,\n Text,\n Spinner,\n Center,\n Fab,\n HStack,\n Divider,\n} 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 { 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\n// Create a context to control refetching across child components\nexport const RefetchContext = createContext({\n shouldRefetch: false,\n setRefetchStatus: (status: boolean) => {},\n});\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 const [shouldRefetch, setShouldRefetch] = useState(false);\n\n // Memoize the refetch context value\n const refetchContextValue = useMemo(\n () => ({\n shouldRefetch,\n setRefetchStatus: setShouldRefetch,\n }),\n [shouldRefetch],\n );\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 // 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 = 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 with a lastFocusTime check to prevent continuous refetching\n useFocusEffect(\n useCallback(() => {\n // Enable swipe drawer\n setSwipeEnabled(true);\n\n // Handle expo token once\n handlerExpoToken();\n\n // Set shouldRefetch to true only on initial focus or when explicitly needed\n if (!teamsLoaded || !channelsLoaded || !directChannelsLoaded) {\n setShouldRefetch(true);\n }\n\n // Reduce initial loading time from 2000ms to 800ms\n if (loading) {\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 // Reset refetch flag after all components loaded\n setShouldRefetch(false);\n }, 100);\n }, 100);\n }, 100);\n\n return () => clearTimeout(timer);\n }, 800);\n }\n\n return () => {\n setSwipeEnabled(false);\n };\n }, [orgName, setSwipeEnabled, handlerExpoToken, loading, teamsLoaded, channelsLoaded, directChannelsLoaded]),\n );\n\n // Memoize the AddTeammates component to prevent unnecessary re-renders\n const AddTeammates = useCallback(\n () => (\n <Box style={[styles.bottomContainer, { marginBottom: 8, 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 <RefetchContext.Provider value={refetchContextValue}>\n <VirtualizedScrollView className=\"bg-white flex-1\">\n <Box className=\"flex-1 bg-white pb-10 pt-2\">\n {/* <StatusBar style=\"light\" /> */}\n {loading ? (\n <LoadingSpinnerDefault />\n ) : (\n <>\n {orgName ? (\n <>\n <TopCommonSlider />\n <Divider style={{ marginVertical: 8 }} />\n\n {/* Progressive loading of components */}\n {/* Organization Teams */}\n {teamsLoaded ? (\n <>\n <Teams />\n <Divider style={{ marginVertical: 8 }} />\n </>\n ) : (\n <Box className=\"py-2\">\n <Spinner size=\"small\" color={colors.primaryBgColor} />\n </Box>\n )}\n\n {/* Channels */}\n <Box>\n {channelsLoaded ? (\n <>\n <Channels />\n <Divider style={{ marginVertical: 8 }} />\n </>\n ) : (\n <Box className=\"py-2\">\n <Spinner size=\"small\" color={colors.primaryBgColor} />\n </Box>\n )}\n </Box>\n\n {/* Direct Channels */}\n <Box>\n {directChannelsLoaded ? (\n <>\n <DirectChannels />\n <Divider style={{ marginVertical: 8 }} />\n </>\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 </RefetchContext.Provider>\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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"}
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, useMemo, createContext } from 'react';\nimport { TouchableHighlight, Share, Dimensions } from 'react-native';\nimport { useSelector, shallowEqual } from 'react-redux';\nimport styles from './styles';\nimport {\n Box,\n Avatar,\n Icon,\n AddIcon,\n Text,\n Spinner,\n Center,\n Fab,\n HStack,\n Divider,\n VStack,\n} 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 { InviteMembers } from './Components/InviteMembers';\nimport { NavigationRoutes, colors } from '../../constants';\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\n// Create a context to control refetching across child components\nexport const RefetchContext = createContext({\n shouldRefetch: false,\n setRefetchStatus: (status: boolean) => {},\n});\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 [isLoading, setIsLoading] = useState(true);\n const [shouldRefetch, setShouldRefetch] = useState(false);\n\n // Memoize the refetch context value\n const refetchContextValue = useMemo(\n () => ({\n shouldRefetch,\n setRefetchStatus: setShouldRefetch,\n }),\n [shouldRefetch],\n );\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 // 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 = useMemo(\n () => [\n {\n id: 1,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center\"\n style={{\n backgroundColor: colors.primaryBgColor,\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: 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 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 }}>\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 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 [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 useFocusEffect(\n useCallback(() => {\n setSwipeEnabled(true);\n handlerExpoToken();\n setShouldRefetch(true);\n\n // Simplified loading logic\n const timer = setTimeout(() => {\n setIsLoading(false);\n setShouldRefetch(false);\n }, 500);\n\n return () => {\n clearTimeout(timer);\n setSwipeEnabled(false);\n };\n }, [orgName, setSwipeEnabled, handlerExpoToken]),\n );\n\n // Memoize the AddTeammates component\n const AddTeammates = useCallback(\n () => (\n <Box style={[styles.bottomContainer, { marginBottom: 8, paddingHorizontal: 16 }]}>\n <TouchableHighlight underlayColor={Colors.gray[50]} onPress={onOpen}>\n <Box className=\"py-3 px-2\">\n <HStack className=\"w-full flex-1 items-center space-x-3\">\n <Box\n style={{\n backgroundColor: Colors.gray[100],\n borderRadius: 20,\n padding: 6,\n }}\n >\n <Icon as={AddIcon} style={{ width: 20, height: 20 }} color={Colors.gray[700]} />\n </Box>\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\"\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 [isOpen, onOpen, onClose, actionItems],\n );\n\n if (!orgName) {\n return (\n <Center className=\"flex-1 bg-white\">\n <Spinner size=\"large\" color={colors.primaryBgColor} />\n </Center>\n );\n }\n\n return (\n <RefetchContext.Provider value={refetchContextValue}>\n <VirtualizedScrollView className=\"bg-white flex-1\">\n <Box className=\"flex-1 bg-white pb-10\">\n {isLoading ? (\n <VStack space=\"md\" className=\"p-4\">\n <Box className=\"h-12 bg-gray-100 rounded-md animate-pulse\" />\n <Box className=\"h-32 bg-gray-100 rounded-md animate-pulse\" />\n <Box className=\"h-24 bg-gray-100 rounded-md animate-pulse\" />\n <Box className=\"h-40 bg-gray-100 rounded-md animate-pulse\" />\n </VStack>\n ) : (\n <>\n <TopCommonSlider />\n <Divider style={{ marginVertical: 12 }} />\n <Teams />\n <Divider style={{ marginVertical: 12 }} />\n <Channels />\n <Divider style={{ marginVertical: 12 }} />\n <DirectChannels />\n <Divider style={{ marginVertical: 12 }} />\n {/* <AddTeammates />\n <Divider style={{ marginVertical: 12 }} /> */}\n <InviteMembers />\n </>\n )}\n </Box>\n </VirtualizedScrollView>\n <Fab\n onPress={() => navigation.navigate(NavigationRoutes.SearchAddChannel, { orgName })}\n size=\"sm\"\n className=\"items-center shadow-lg\"\n style={{ backgroundColor: colors.primaryBgColor, marginBottom: 20, marginRight: 20 }}\n >\n <FontAwesome5 color=\"white\" name=\"edit\" size={18} />\n </Fab>\n </RefetchContext.Provider>\n );\n};\n\n// Memoize the entire Home component\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 if (!user?.profile) navigation?.navigate(NavigationRoutes.Login);\n return () => {};\n }, []),\n );\n\n if (!orgName) return <LoadingSpinnerDefault />;\n\n return <HomeScreen {...props} />;\n});\n\nexport default Home;\n"],"names":["React","colors","Colors","Actionsheet"],"mappings":"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"}
@@ -63,7 +63,7 @@ const CreateOrganization = ({
63
63
  } }, /* @__PURE__ */ React__default.createElement(Box, { className: "border-t-blue-600 border-t-[1px] w-[25%]" }), /* @__PURE__ */ React__default.createElement(Center, { className: "flex-1 bg-white" }, /* @__PURE__ */ React__default.createElement(VStack, { space: "sm" }, /* @__PURE__ */ React__default.createElement(Heading, { className: "px-4 items-center text-center" }, "What's the name of your company or team?"), /* @__PURE__ */ React__default.createElement(Text, { className: "text-center" }, "This will be the name of your workspace."), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(FormControl, { className: "mt-3 w-full px-2" }, /* @__PURE__ */ React__default.createElement(Input, { variant: "outline", size: "lg", style: {
64
64
  borderWidth: 1,
65
65
  borderColor: "1e3a8a"
66
- }, className: "py-3 border-blue-900 border-[2px]" }, /* @__PURE__ */ React__default.createElement(InputField, { maxLength: 80, placeholder: "Ex. Acme or Acme Marketing", value: name, onChangeText: (v) => setName(v), "aria-label": "Organization name", accessibilityLabel: "Organization name" })), /* @__PURE__ */ React__default.createElement(FormControlError, { className: "px-2" }, /* @__PURE__ */ React__default.createElement(FormControlErrorText, { className: "color-red-400" }, "Organization name must be lowercase, and can't contain spaces,periods,or most punctuation.")))), /* @__PURE__ */ React__default.createElement(Button, { variant: "solid", className: `${showCreateButton ? "bg-green-800" : "bg-gray-300"} active:bg-green-600 hover:bg-green-600 mx-2`, disabled: showCreateButton ? false : true, onPress: () => createOrganization(), style: {
66
+ }, className: "py-3 border-blue-900 border-[2px]" }, /* @__PURE__ */ React__default.createElement(InputField, { maxLength: 80, placeholder: "Ex. Acme or Acme Marketing", value: name, onChange: (event) => setName(event.nativeEvent.text), "aria-label": "Organization name", accessibilityLabel: "Organization name" })), /* @__PURE__ */ React__default.createElement(FormControlError, { className: "px-2" }, /* @__PURE__ */ React__default.createElement(FormControlErrorText, { className: "color-red-400" }, "Organization name must be lowercase, and can't contain spaces,periods,or most punctuation.")))), /* @__PURE__ */ React__default.createElement(Button, { variant: "solid", className: `${showCreateButton ? "bg-green-800" : "bg-gray-300"} active:bg-green-600 hover:bg-green-600 mx-2`, disabled: showCreateButton ? false : true, onPress: () => createOrganization(), style: {
67
67
  backgroundColor: showCreateButton ? "#166534" : "#d1d5db"
68
68
  } }, loading && /* @__PURE__ */ React__default.createElement(ButtonSpinner, { style: {
69
69
  marginRight: 1