@messenger-box/slack-ui-mobile 10.0.3-alpha.7 → 10.0.3-alpha.74

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 (144) hide show
  1. package/lib/components/Actionsheet.js +96 -0
  2. package/lib/components/Actionsheet.js.map +1 -0
  3. package/lib/components/AppRootContextProviderComponent.js +16 -2
  4. package/lib/components/AppRootContextProviderComponent.js.map +1 -1
  5. package/lib/components/Channels/ChannelsByAlphabeticalAccordion.js +13 -7
  6. package/lib/components/Channels/ChannelsByAlphabeticalAccordion.js.map +1 -1
  7. package/lib/components/CustomBottomTabs/CustomBottomTabs.js +11 -24
  8. package/lib/components/CustomBottomTabs/CustomBottomTabs.js.map +1 -1
  9. package/lib/components/CustomDrawer/CustomDrawer.js +31 -31
  10. package/lib/components/CustomDrawer/CustomDrawer.js.map +1 -1
  11. package/lib/components/Header/styles.js +2 -2
  12. package/lib/components/Header/styles.js.map +1 -1
  13. package/lib/components/LoadingSpinner/index.js +3 -3
  14. package/lib/components/LoadingSpinner/index.js.map +1 -1
  15. package/lib/components/NavigationHeader/InboxNavigationHeader.js +20 -25
  16. package/lib/components/NavigationHeader/InboxNavigationHeader.js.map +1 -1
  17. package/lib/components/NavigationHeader/NavigationHeader.js +58 -40
  18. package/lib/components/NavigationHeader/NavigationHeader.js.map +1 -1
  19. package/lib/components/NavigationHeader/NavigationHeaderChat.js +9 -9
  20. package/lib/components/NavigationHeader/NavigationHeaderChat.js.map +1 -1
  21. package/lib/components/NavigationHeader/index.js +1 -1
  22. package/lib/components/SlackSearchInput/Suggestion.js +1 -1
  23. package/lib/components/SlackSearchInput/Tag.js +1 -1
  24. package/lib/components/SlackSearchInput/index.js +3 -3
  25. package/lib/components/SlackSearchInput/index.js.map +1 -1
  26. package/lib/components/VirtualizedScrollView/VirtualizedScrollView.js +19 -4
  27. package/lib/components/VirtualizedScrollView/VirtualizedScrollView.js.map +1 -1
  28. package/lib/components/WorkSpaceDrawer/WorkSpaceDrawer.js +41 -31
  29. package/lib/components/WorkSpaceDrawer/WorkSpaceDrawer.js.map +1 -1
  30. package/lib/compute.js +32 -23
  31. package/lib/compute.js.map +1 -1
  32. package/lib/constants/Colors.js +2 -2
  33. package/lib/constants/globalStyles.js +3 -3
  34. package/lib/constants/globalStyles.js.map +1 -1
  35. package/lib/hooks/useOptimizedChannelsQueries.js +106 -0
  36. package/lib/hooks/useOptimizedChannelsQueries.js.map +1 -0
  37. package/lib/index.js +1 -1
  38. package/lib/index.js.map +1 -1
  39. package/lib/navigation/SearchTabNavigation.js +47 -39
  40. package/lib/navigation/SearchTabNavigation.js.map +1 -1
  41. package/lib/navigation/TeamTabNavigation.js +51 -38
  42. package/lib/navigation/TeamTabNavigation.js.map +1 -1
  43. package/lib/queries/slackuiQueries.js +129 -0
  44. package/lib/queries/slackuiQueries.js.map +1 -0
  45. package/lib/routes.json +32 -23
  46. package/lib/screens/Account/AccountScreen.js +23 -26
  47. package/lib/screens/Account/AccountScreen.js.map +1 -1
  48. package/lib/screens/Activity/ActivityScreen.js +6 -2
  49. package/lib/screens/Activity/ActivityScreen.js.map +1 -1
  50. package/lib/screens/Channels/Add/AddName.js +33 -8
  51. package/lib/screens/Channels/Add/AddName.js.map +1 -1
  52. package/lib/screens/Channels/Add/AddVisibility.js +6 -6
  53. package/lib/screens/Channels/Add/AddVisibility.js.map +1 -1
  54. package/lib/screens/Channels/AddChannel.js +5 -3
  55. package/lib/screens/Channels/AddChannel.js.map +1 -1
  56. package/lib/screens/Channels/Channels.js +101 -95
  57. package/lib/screens/Channels/Channels.js.map +1 -1
  58. package/lib/screens/Files/FilesScreen.js +2 -2
  59. package/lib/screens/Files/FilesScreen.js.map +1 -1
  60. package/lib/screens/Home/Components/Channels/Channels.js +91 -77
  61. package/lib/screens/Home/Components/Channels/Channels.js.map +1 -1
  62. package/lib/screens/Home/Components/DirectChannels/DirectChannels.js +249 -115
  63. package/lib/screens/Home/Components/DirectChannels/DirectChannels.js.map +1 -1
  64. package/lib/screens/Home/Components/InviteMembers/index.js +88 -0
  65. package/lib/screens/Home/Components/InviteMembers/index.js.map +1 -0
  66. package/lib/screens/Home/Components/Teams/Teams.js +110 -47
  67. package/lib/screens/Home/Components/Teams/Teams.js.map +1 -1
  68. package/lib/screens/Home/Components/TopCommonSlider/TopCommonSlider.js +44 -75
  69. package/lib/screens/Home/Components/TopCommonSlider/TopCommonSlider.js.map +1 -1
  70. package/lib/screens/Home/HomeScreen.js +161 -194
  71. package/lib/screens/Home/HomeScreen.js.map +1 -1
  72. package/lib/screens/Home/styles.js +4 -4
  73. package/lib/screens/Home/styles.js.map +1 -1
  74. package/lib/screens/Inbox/InboxChannelDetail.js +67 -34
  75. package/lib/screens/Inbox/InboxChannelDetail.js.map +1 -1
  76. package/lib/screens/Inbox/InboxDialogMessages.js +2 -2
  77. package/lib/screens/Inbox/InboxDialogMessages.js.map +1 -1
  78. package/lib/screens/Inbox/InboxScreen.js +3 -3
  79. package/lib/screens/Inbox/InboxScreen.js.map +1 -1
  80. package/lib/screens/Login.js +4 -2
  81. package/lib/screens/Login.js.map +1 -1
  82. package/lib/screens/Organization/AddWorkspace.js +42 -38
  83. package/lib/screens/Organization/AddWorkspace.js.map +1 -1
  84. package/lib/screens/Organization/CreateOrganization.js +11 -2
  85. package/lib/screens/Organization/CreateOrganization.js.map +1 -1
  86. package/lib/screens/Organization/InitialChannelOnboarding.js +22 -4
  87. package/lib/screens/Organization/InitialChannelOnboarding.js.map +1 -1
  88. package/lib/screens/Organization/InitializeOrganizationChannel.js +9 -4
  89. package/lib/screens/Organization/InitializeOrganizationChannel.js.map +1 -1
  90. package/lib/screens/Organization/InviteOrganizationMembers.js +52 -10
  91. package/lib/screens/Organization/InviteOrganizationMembers.js.map +1 -1
  92. package/lib/screens/Peoples/AddByEmail.js +24 -6
  93. package/lib/screens/Peoples/AddByEmail.js.map +1 -1
  94. package/lib/screens/Peoples/AddFromContacts.js +172 -87
  95. package/lib/screens/Peoples/AddFromContacts.js.map +1 -1
  96. package/lib/screens/Peoples/AddPeople.js +21 -42
  97. package/lib/screens/Peoples/AddPeople.js.map +1 -1
  98. package/lib/screens/Peoples/People.js +42 -4
  99. package/lib/screens/Peoples/People.js.map +1 -1
  100. package/lib/screens/Profile/ProfileScreen.js +27 -12
  101. package/lib/screens/Profile/ProfileScreen.js.map +1 -1
  102. package/lib/screens/Saved/SavedScreen.js +2 -2
  103. package/lib/screens/Saved/SavedScreen.js.map +1 -1
  104. package/lib/screens/Search/Channels.js +20 -32
  105. package/lib/screens/Search/Channels.js.map +1 -1
  106. package/lib/screens/Search/Files.js +2 -2
  107. package/lib/screens/Search/Files.js.map +1 -1
  108. package/lib/screens/Search/JumpTo.js +2 -2
  109. package/lib/screens/Search/JumpTo.js.map +1 -1
  110. package/lib/screens/Search/People.js +19 -27
  111. package/lib/screens/Search/People.js.map +1 -1
  112. package/lib/screens/Search/Recents.js +26 -31
  113. package/lib/screens/Search/Recents.js.map +1 -1
  114. package/lib/screens/Search/SearchAddChannel.js +366 -227
  115. package/lib/screens/Search/SearchAddChannel.js.map +1 -1
  116. package/lib/screens/Search/SearchChannelPeople.js +70 -37
  117. package/lib/screens/Search/SearchChannelPeople.js.map +1 -1
  118. package/lib/screens/Search/SearchScreen.js +5 -3
  119. package/lib/screens/Search/SearchScreen.js.map +1 -1
  120. package/lib/screens/Search/styles.js +2 -2
  121. package/lib/screens/Search/styles.js.map +1 -1
  122. package/lib/screens/Teams/AddTeam.js +3 -3
  123. package/lib/screens/Teams/AddTeam.js.map +1 -1
  124. package/lib/screens/Teams/Components/Channels/Channels.js +6 -6
  125. package/lib/screens/Teams/Components/Channels/Channels.js.map +1 -1
  126. package/lib/screens/Teams/Components/Members/Members.js +7 -3
  127. package/lib/screens/Teams/Components/Members/Members.js.map +1 -1
  128. package/lib/screens/Teams/Team.js +6 -8
  129. package/lib/screens/Teams/Team.js.map +1 -1
  130. package/lib/screens/Teams/Teams.js +137 -106
  131. package/lib/screens/Teams/Teams.js.map +1 -1
  132. package/lib/screens/Teams/useTeams.js +41 -0
  133. package/lib/screens/Teams/useTeams.js.map +1 -0
  134. package/lib/screens/Wiki/WikiScreen.js +2 -2
  135. package/lib/screens/Wiki/WikiScreen.js.map +1 -1
  136. package/lib/theme/index.js +2 -2
  137. package/lib/theme/index.js.map +1 -1
  138. package/package.json +6 -4
  139. package/lib/navigation/ActivityNavigator.js +0 -61
  140. package/lib/navigation/ActivityNavigator.js.map +0 -1
  141. package/lib/navigation/ExploreNavigator.js +0 -583
  142. package/lib/navigation/ExploreNavigator.js.map +0 -1
  143. package/lib/navigation/InboxNavigator.js +0 -183
  144. package/lib/navigation/InboxNavigator.js.map +0 -1
@@ -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'../../../../components/AppRootContextProviderComponent.js';import {Actionsheet as ActionSheet}from'../../../../components/Actionsheet.js';import {useOrganizationSharableLinkQuery}from'../../../../queries/slackuiQueries.js';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import {config}from'../../../../config/env-config.js';const InviteMembers = () => {
2
+ 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
+ } = useOrganizationSharableLinkQuery(orgName, {
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 { useOrganizationSharableLinkQuery } from '../../../../queries/slackuiQueries';\nimport { useDrawerLayout } from '../../../../hooks/useDrawerLayout';\nimport { config } from '../../../../config';\nimport Colors from 'tailwindcss/colors';\n\nexport const InviteMembers = () => {\n const { isOpen, onOpen, onClose } = useDisclose();\n const navigation = useNavigation<any>();\n const { orgName } = useDrawerLayout();\n\n // Only fetch sharable link when needed (when action sheet is open)\n const { data: organizationSharableLink } = useOrganizationSharableLinkQuery(orgName, {\n fetchPolicy: 'cache-and-network',\n skip: !isOpen,\n });\n\n const shareLink = async () => {\n try {\n await Share.share({\n message: `${config.APP_NAME} - ${organizationSharableLink?.getOrganizationSharableLink ?? ''}`,\n });\n } catch (error: any) {\n alert(error.message);\n }\n };\n\n const actionItems = [\n {\n id: 1,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center\"\n style={{\n backgroundColor: colors.green,\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n }}\n >\n <Ionicons color={'white'} name=\"share-outline\" size={22} />\n <Text className=\"text-white\" style={{ color: 'white', fontWeight: '600', fontSize: 16 }}>\n Share a Link\n </Text>\n </HStack>\n ),\n onPress: shareLink,\n },\n {\n id: 2,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center border\"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n backgroundColor: Colors.gray[50],\n }}\n >\n <AntDesign color={Colors.gray[900]} name=\"adduser\" size={22} />\n <Text style={{ color: Colors.gray[900], fontWeight: '600', fontSize: 16 }}>Add from Contacts</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleFromContacts, {\n orgName,\n }),\n },\n // {\n // id: 3,\n // label: (\n // <HStack\n // space={'sm'}\n // className=\"flex-1 justify-center items-center\"\n // style={{\n // paddingVertical: 12,\n // borderRadius: 8,\n // marginHorizontal: 10,\n // marginVertical: 5,\n // backgroundColor: Colors.gray[50],\n // }}\n // >\n // <AntDesign color={Colors.gray[900]} name=\"google\" size={22} />\n // <Text style={{ color: Colors.gray[900], fontWeight: '600', fontSize: 16 }}>\n // Add from Google Contacts\n // </Text>\n // </HStack>\n // ),\n // onPress: () => {\n // // Navigate to Google contacts integration\n // // This would be implemented based on your app's functionality\n // },\n // },\n {\n id: 4,\n label: (\n <HStack\n space={'sm'}\n className=\"flex-1 justify-center items-center border\"\n style={{\n paddingVertical: 12,\n borderRadius: 8,\n marginHorizontal: 10,\n marginVertical: 5,\n backgroundColor: Colors.gray[50],\n }}\n >\n <MaterialCommunityIcons color={Colors.gray[900]} name=\"email-outline\" size={22} />\n <Text style={{ color: Colors.gray[900], fontWeight: '600', fontSize: 16 }}>Add by Email</Text>\n </HStack>\n ),\n onPress: () =>\n navigation.navigate(NavigationRoutes.AddPeopleByEmail, {\n orgName,\n }),\n },\n ];\n\n return (\n <Box style={{ marginBottom: 8, paddingHorizontal: 12 }}>\n {/* Floating Action Button to open ActionSheet */}\n <TouchableOpacity onPress={onOpen}>\n <Box className=\"py-3 \">\n <HStack space={'sm'} className=\"w-full flex-1 items-center space-x-3\">\n <Box>\n <Ionicons name=\"add\" size={20} color=\"black\" />\n </Box>\n <Text style={{ fontSize: 15, fontWeight: '500' }} color={Colors.gray[800]}>\n Add teammates\n </Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n\n <Actionsheet\n isOpen={isOpen}\n actionItems={actionItems}\n onCancel={onClose}\n hideBottomWidth={true}\n isShowCancelButton={false}\n header={\n <Text\n className=\"text-center font-bold text-lg bg-white\"\n style={{\n paddingVertical: 16,\n color: Colors.gray[900],\n }}\n >\n Invite people to join your team\n </Text>\n }\n />\n </Box>\n );\n};\n"],"names":["React","colors","Colors","Actionsheet"],"mappings":"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"}
@@ -1,28 +1,51 @@
1
- import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default,{useState}from'react';import {TouchableOpacity}from'react-native';import styles from'../../styles.js';import {Box,HStack,Text,FlatList,Button,ButtonText,View,Spinner}from'@admin-layout/gluestack-ui-mobile';import {NavigationRoutes}from'../../../../constants/routes.js';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector}from'react-redux';import {take,orderBy,uniqBy}from'lodash-es';import {MaterialIcons,Octicons}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';const Teams = ({
2
- teams,
3
- refetchTeams,
4
- loading
5
- }) => {
1
+ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useContext,useCallback,useMemo}from'react';import {TouchableOpacity}from'react-native';import {HStack,Text,Box,VStack,FlatList}from'@admin-layout/gluestack-ui-mobile';import {NavigationRoutes}from'../../../../constants/routes.js';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector,shallowEqual}from'react-redux';import {take,orderBy,uniqBy}from'lodash-es';import {useTeamsQuery}from'../../../../queries/slackuiQueries.js';import {Octicons,Feather,MaterialIcons,FontAwesome}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';import'../../../../hooks/useOptimizedChannelsQueries.js';import colors from'tailwindcss/colors';import {RefetchContext}from'../../HomeScreen.js';const Teams = () => {
6
2
  const {
7
- orgName,
8
- organizationDetail
3
+ orgName
9
4
  } = useDrawerLayout();
10
5
  const navigation = useNavigation();
11
6
  const [teamExpandable, setTeamExpendable] = useState(true);
12
- useSelector(userSelector);
7
+ useSelector(userSelector, shallowEqual);
13
8
  useIsFocused();
14
- useFocusEffect(React__default.useCallback(() => {
15
- refetchTeams();
16
- return () => {
17
- };
18
- }, []));
19
- const organizationTeams = React__default.useMemo(() => {
9
+ const {
10
+ shouldRefetch
11
+ } = useContext(RefetchContext);
12
+ const {
13
+ data: orgTeamsData,
14
+ refetch: reFetchOrgTeams,
15
+ error: teamsError
16
+ } = useTeamsQuery({
17
+ variables: {
18
+ orgName
19
+ },
20
+ fetchPolicy: "cache-and-network",
21
+ nextFetchPolicy: "cache-first",
22
+ skip: !orgName
23
+ });
24
+ const reFetchTeams = useCallback(() => {
25
+ if (orgName) {
26
+ return reFetchOrgTeams({
27
+ orgName
28
+ });
29
+ }
30
+ }, [orgName, reFetchOrgTeams]);
31
+ useFocusEffect(useCallback(() => {
32
+ if (shouldRefetch && orgName) {
33
+ reFetchTeams();
34
+ }
35
+ }, [shouldRefetch, orgName, reFetchTeams]));
36
+ useFocusEffect(useCallback(() => {
37
+ if (orgName) {
38
+ reFetchTeams();
39
+ }
40
+ }, [orgName, reFetchTeams]));
41
+ const organizationTeams = useMemo(() => {
20
42
  var _a;
21
- 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), ({
22
- id
23
- }) => id), [(ch) => ch == null ? void 0 : ch.title.toLowerCase()], ["asc"]), 20) || [];
24
- }, [teams]);
25
- const viewTeam = React__default.useCallback((item) => {
43
+ const teams = (orgTeamsData == null ? void 0 : orgTeamsData.getOrganizationTeams) || [];
44
+ return teams.length ? take(orderBy(uniqBy((_a = [...teams]) == null ? void 0 : _a.filter((t) => (t == null ? void 0 : t.orgName) === orgName), ({
45
+ _id
46
+ }) => _id), [(ch) => ch == null ? void 0 : ch.title.toLowerCase()], ["asc"]), 10) : [];
47
+ }, [orgTeamsData, orgName]);
48
+ const viewTeam = useCallback((item) => {
26
49
  var _a, _b, _c;
27
50
  navigation.navigate(NavigationRoutes.ViewTeam, {
28
51
  teamId: (_a = item == null ? void 0 : item.id) == null ? void 0 : _a.toString(),
@@ -32,35 +55,75 @@ import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native'
32
55
  orgName,
33
56
  hideTabBar: true
34
57
  });
35
- }, [orgName]);
36
- const renderOrganizationTeamItem = ({
58
+ }, [orgName, navigation]);
59
+ const renderOrganizationTeamItem = useCallback(({
37
60
  item
38
- }) => {
39
- return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { key: item.id, onPress: () => viewTeam(item) }, /* @__PURE__ */ React__default.createElement(HStack, { py: "$1", flex: 1, alignItems: "center", space: "sm" }, /* @__PURE__ */ React__default.createElement(Octicons, { color: "black", name: "lock", size: 18 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
40
- fontSize: 14,
41
- fontWeight: "400"
42
- }, color: "$coolGray800" }, item.title)));
43
- };
44
- return /* @__PURE__ */ React__default.createElement(Box, { style: styles.channelContainer }, /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: styles.headingContainer, onPress: () => setTeamExpendable(!teamExpandable) }, /* @__PURE__ */ React__default.createElement(HStack, { flex: 1, alignItems: "center", justifyContent: "space-between" }, /* @__PURE__ */ React__default.createElement(Text, { style: {
45
- fontSize: 15,
46
- fontWeight: "600",
47
- color: "black"
48
- } }, "Teams"), teamExpandable ? /* @__PURE__ */ React__default.createElement(MaterialIcons, { color: "black", name: "keyboard-arrow-up", size: 20 }) : /* @__PURE__ */ React__default.createElement(MaterialIcons, { color: "black", name: "keyboard-arrow-down", size: 20 }))), teamExpandable && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(FlatList, { py: "$2", data: organizationTeams && organizationTeams.length > 0 ? organizationTeams : [], renderItem: renderOrganizationTeamItem, key: "teams-list", keyExtractor: (item, index) => String(index), contentContainerStyle: {
49
- flex: 1
50
- }, ListEmptyComponent: () => {
51
- return /* @__PURE__ */ React__default.createElement(View, { py: "$1" }, loading ? /* @__PURE__ */ React__default.createElement(Spinner, { color: "$blue500" }) : /* @__PURE__ */ React__default.createElement(Text, { style: {
52
- fontSize: 14
53
- }, color: "$coolGray600" }, "No Teams found"));
54
- }, ListFooterComponent: () => {
55
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, (teams == null ? void 0 : teams.length) > 20 && /* @__PURE__ */ React__default.createElement(HStack, { flex: 1, alignItems: "center" }, /* @__PURE__ */ React__default.createElement(Button, { bg: "transparent", variant: "solid", pl: "$0", onPress: () => navigation.navigate(NavigationRoutes.Teams, {
61
+ }) => /* @__PURE__ */ React__default.createElement(TouchableOpacity, { key: item.id, onPress: () => viewTeam(item), style: {
62
+ paddingVertical: 2,
63
+ paddingHorizontal: 12
64
+ } }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "items-center" }, /* @__PURE__ */ React__default.createElement(Octicons, { color: colors.gray[700], name: "lock", size: 18 }), /* @__PURE__ */ React__default.createElement(Text, { className: "text-gray-900 flex-1 text-base" }, item.title))), [viewTeam]);
65
+ const ListEmptyComponent = useCallback(() => {
66
+ const errorMessage = teamsError ? teamsError.message.includes("Service 'TeamService") ? "Team service is temporarily unavailable. Please try again later." : teamsError.message : null;
67
+ return /* @__PURE__ */ React__default.createElement(Box, { style: {
68
+ padding: 12
69
+ } }, errorMessage ? /* @__PURE__ */ React__default.createElement(Box, { style: {
70
+ padding: 8,
71
+ backgroundColor: "#FFF4F4",
72
+ borderRadius: 4
73
+ } }, /* @__PURE__ */ React__default.createElement(Text, { color: "#E01E5A", style: {
74
+ marginBottom: 8,
75
+ fontWeight: "500"
76
+ } }, errorMessage), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: reFetchTeams }, /* @__PURE__ */ React__default.createElement(HStack, { space: "sm", style: {
77
+ alignItems: "center"
78
+ } }, /* @__PURE__ */ React__default.createElement(Feather, { name: "refresh-cw", color: "#1264A3", size: 16 }), /* @__PURE__ */ React__default.createElement(Text, { color: "#1264A3", style: {
79
+ fontWeight: "500"
80
+ } }, "Retry")))) : /* @__PURE__ */ React__default.createElement(Box, { style: {
81
+ alignItems: "center",
82
+ paddingVertical: 16
83
+ } }, /* @__PURE__ */ React__default.createElement(Box, { style: {
84
+ padding: 12,
85
+ marginBottom: 8,
86
+ borderRadius: 24,
87
+ backgroundColor: "#F8F8F8"
88
+ } }, /* @__PURE__ */ React__default.createElement(Octicons, { name: "organization", color: "#616061", size: 20 })), /* @__PURE__ */ React__default.createElement(Text, { style: {
89
+ color: "#616061",
90
+ textAlign: "center"
91
+ } }, "No teams available")));
92
+ }, [teamsError, reFetchTeams]);
93
+ const ListFooterComponent = useCallback(() => {
94
+ var _a;
95
+ const teamsCount = ((_a = orgTeamsData == null ? void 0 : orgTeamsData.getOrganizationTeams) == null ? void 0 : _a.length) || 0;
96
+ return /* @__PURE__ */ React__default.createElement(VStack, null, teamsCount > 10 && /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.Teams, {
56
97
  orgName
57
- }), "$pressed-bg": "transparent", "$active-bg": "transparent" }, /* @__PURE__ */ React__default.createElement(MaterialIcons, { color: "black", name: "search", size: 20 }), /* @__PURE__ */ React__default.createElement(ButtonText, { color: "$black" }, "Browse all Teams"))), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.Teams, {
98
+ }), style: {
99
+ paddingVertical: 8,
100
+ paddingHorizontal: 12
101
+ } }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "items-center" }, /* @__PURE__ */ React__default.createElement(MaterialIcons, { color: "#616061", name: "search", size: 18 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
102
+ fontSize: 16,
103
+ color: "#616061"
104
+ } }, "Browse all Teams"))), /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => navigation.navigate(NavigationRoutes.AddTeam, {
58
105
  orgName
59
- }) }, /* @__PURE__ */ React__default.createElement(View, { style: {} }, /* @__PURE__ */ React__default.createElement(Text, { style: {
106
+ }), style: {
107
+ paddingBottom: 5,
108
+ paddingHorizontal: 12
109
+ } }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", className: "items-center" }, /* @__PURE__ */ React__default.createElement(Feather, { color: "#616061", name: "plus", size: 18 }), /* @__PURE__ */ React__default.createElement(Text, { style: {
60
110
  fontSize: 16,
61
- fontWeight: "400",
62
- color: "black"
63
- } }, "+ Add Team"))));
64
- } })));
65
- };
66
- var Teams$1 = React__default.memo(Teams);export{Teams$1 as default};//# sourceMappingURL=Teams.js.map
111
+ color: "#616061"
112
+ } }, "Add Team"))));
113
+ }, [orgTeamsData, orgName, navigation]);
114
+ const SectionHeader = useCallback(() => {
115
+ return /* @__PURE__ */ React__default.createElement(TouchableOpacity, { onPress: () => setTeamExpendable(!teamExpandable), style: {
116
+ paddingVertical: 6,
117
+ paddingHorizontal: 16
118
+ } }, /* @__PURE__ */ React__default.createElement(HStack, { className: "justify-between items-center" }, /* @__PURE__ */ React__default.createElement(Text, { className: "font-semibold", style: {
119
+ fontSize: 15,
120
+ color: "#1D1C1D"
121
+ } }, "Teams"), /* @__PURE__ */ React__default.createElement(FontAwesome, { name: teamExpandable ? "chevron-down" : "chevron-left", color: colors.gray[800], size: 12 })));
122
+ }, [teamExpandable]);
123
+ if (!teamExpandable) {
124
+ return /* @__PURE__ */ React__default.createElement(SectionHeader, null);
125
+ }
126
+ return /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(SectionHeader, null), (organizationTeams == null ? void 0 : organizationTeams.length) > 0 ? /* @__PURE__ */ React__default.createElement(FlatList, { keyExtractor: (item) => ((item == null ? void 0 : item.id) || "team") + "-" + (item == null ? void 0 : item.title), data: organizationTeams, renderItem: renderOrganizationTeamItem, ListFooterComponent, style: {
127
+ marginTop: 6
128
+ }, scrollEnabled: false }) : /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(ListEmptyComponent, null), /* @__PURE__ */ React__default.createElement(ListFooterComponent, null)));
129
+ };export{Teams as default};//# sourceMappingURL=Teams.js.map
@@ -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, useLayoutEffect } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport styles from '../../styles';\nimport {\n Pressable,\n View,\n Image,\n FlatList,\n Icon,\n Box,\n Text,\n Avatar,\n Spinner,\n HStack,\n Button,\n ButtonText,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { NavigationRoutes } from '../../../../constants/routes';\nimport more from '../../../../assets/images/more.png';\nimport right from '../../../../assets/images/right.png';\nimport { userSelector, isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport { useSelector } from 'react-redux';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { navigationRef } from '@common-stack/client-react';\nimport { startCase, orderBy, uniqBy, take } from 'lodash-es';\nimport { useGetOrganizationTeamsQuery } from 'common/lib/generated/generated.js';\nimport { useDrawerLayout } from '../../../../hooks';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\n\nconst Teams = ({ teams, refetchTeams, loading }) => {\n const { orgName, organizationDetail } = useDrawerLayout();\n const navigation = useNavigation<any>();\n // const currentRoute = navigationRef?.isReady() ? navigationRef?.getCurrentRoute() : null;\n const [teamExpandable, setTeamExpendable] = useState(true);\n const user: any = useSelector(userSelector);\n const isFocused = useIsFocused();\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n refetchTeams();\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n const organizationTeams = React.useMemo(() => {\n //Direct channel\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 20,\n )) ||\n []\n );\n }, [teams]);\n\n // const openInbox = React.useCallback((id: any, title: any, totalMembers: any) => {\n // navigation.navigate(NavigationRoutes.DialogMessages, {\n // channelId: id?.toString(),\n // title: title?.toString(),\n // totalMembers: totalMembers,\n // hideTabBar: true,\n // });\n // }, []);\n\n const viewTeam = React.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],\n );\n\n const renderOrganizationTeamItem = ({ item }: any) => {\n return (\n <TouchableOpacity key={item.id} onPress={() => viewTeam(item)}>\n <HStack py={'$1'} flex={1} alignItems={'center'} space=\"sm\">\n <Octicons color=\"black\" name=\"lock\" size={18} />\n <Text style={{ fontSize: 14, fontWeight: '400' }} color={'$coolGray800'}>\n {item.title}\n </Text>\n </HStack>\n </TouchableOpacity>\n );\n };\n\n return (\n <Box style={styles.channelContainer}>\n <TouchableOpacity style={styles.headingContainer} onPress={() => setTeamExpendable(!teamExpandable)}>\n <HStack flex={1} alignItems={'center'} justifyContent={'space-between'}>\n <Text style={{ fontSize: 15, fontWeight: '600', color: 'black' }}>Teams</Text>\n {teamExpandable ? (\n <MaterialIcons color={'black'} name={'keyboard-arrow-up'} size={20} />\n ) : (\n <MaterialIcons color={'black'} name={'keyboard-arrow-down'} size={20} />\n )}\n {/* <HStack alignItems={'center'}>\n <Button\n bg={'transparent'}\n onPress={() => {\n if (orgName) navigation.navigate(NavigationRoutes.Teams);\n }}\n >\n <MaterialIcons color={'black'} name={'add'} size={20} />\n </Button>\n {teamExpandable ? (\n <MaterialIcons color={'black'} name={'keyboard-arrow-up'} size={20} />\n ) : (\n <MaterialIcons color={'black'} name={'keyboard-arrow-down'} size={20} />\n )}\n </HStack> */}\n </HStack>\n </TouchableOpacity>\n\n {teamExpandable && (\n <>\n <FlatList\n py={'$2'}\n data={organizationTeams && organizationTeams.length > 0 ? organizationTeams : []}\n renderItem={renderOrganizationTeamItem}\n key={'teams-list'}\n keyExtractor={(item, index) => String(index)}\n contentContainerStyle={{\n flex: 1,\n }}\n ListEmptyComponent={() => {\n return (\n <View py={'$1'}>\n {loading ? (\n <Spinner color={'$blue500'} />\n ) : (\n <Text style={{ fontSize: 14 }} color={'$coolGray600'}>\n No Teams found\n </Text>\n )}\n </View>\n );\n }}\n ListFooterComponent={() => {\n return (\n <>\n {teams?.length > 20 && (\n <HStack flex={1} alignItems={'center'}>\n <Button\n bg={'transparent'}\n variant={'solid'}\n pl={'$0'}\n onPress={() => navigation.navigate(NavigationRoutes.Teams, { orgName })}\n $pressed-bg=\"transparent\"\n $active-bg={'transparent'}\n >\n <MaterialIcons color={'black'} name={'search'} size={20} />\n <ButtonText color={'$black'}>Browse all Teams</ButtonText>\n </Button>\n </HStack>\n )}\n\n <TouchableOpacity\n onPress={() => navigation.navigate(NavigationRoutes.Teams, { orgName })}\n >\n <View\n style={\n {\n //paddingVertical: 5,\n // marginTop: 5,\n }\n }\n >\n <Text style={{ fontSize: 16, fontWeight: '400', color: 'black' }}>\n + Add Team\n </Text>\n </View>\n </TouchableOpacity>\n </>\n );\n }}\n />\n\n {/* {user?.accessToken && (\n <TouchableOpacity\n onPress={() => {\n if (orgName) navigation.navigate(NavigationRoutes.Teams);\n }}\n >\n <Box\n style={\n {\n //paddingVertical: 5,\n // marginTop: 5,\n }\n }\n >\n <Text fontSize={16} fontWeight={400}>\n + Add Team\n </Text>\n </Box>\n </TouchableOpacity>\n )} */}\n </>\n )}\n </Box>\n );\n};\n\nexport default React.memo(Teams);\n"],"names":["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, useCallback, useMemo, useContext } from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport { View, FlatList, Box, Text, 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 { useTeamsQuery } from '../../../../queries/slackuiQueries';\nimport { useDrawerLayout } from '../../../../hooks';\nimport { FontAwesome, Feather, Octicons, MaterialIcons } from '@expo/vector-icons';\nimport colors from 'tailwindcss/colors';\nimport { RefetchContext } from '../../HomeScreen';\n\nconst Teams = () => {\n const { orgName } = 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 const {\n data: orgTeamsData,\n refetch: reFetchOrgTeams,\n error: teamsError,\n } = useTeamsQuery({\n variables: { orgName: orgName },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n skip: !orgName,\n });\n\n const reFetchTeams = useCallback(() => {\n if (orgName) {\n return reFetchOrgTeams({ orgName: orgName });\n }\n }, [orgName, reFetchOrgTeams]);\n\n // Refetch when context signals to do so\n useFocusEffect(\n useCallback(() => {\n if (shouldRefetch && orgName) {\n reFetchTeams();\n }\n }, [shouldRefetch, orgName, reFetchTeams]),\n );\n\n // Initial fetch on focus\n useFocusEffect(\n useCallback(() => {\n if (orgName) {\n reFetchTeams();\n }\n }, [orgName, reFetchTeams]),\n );\n\n const organizationTeams = useMemo(() => {\n const teams = orgTeamsData?.getOrganizationTeams || [];\n return 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 }, [orgTeamsData, 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 // Format the error message if present\n const errorMessage = teamsError\n ? teamsError.message.includes(\"Service 'TeamService\")\n ? 'Team service is temporarily unavailable. Please try again later.'\n : teamsError.message\n : null;\n\n return (\n <Box style={{ padding: 12 }}>\n {errorMessage ? (\n <Box style={{ padding: 8, backgroundColor: '#FFF4F4', borderRadius: 4 }}>\n <Text color=\"#E01E5A\" style={{ marginBottom: 8, fontWeight: '500' }}>\n {errorMessage}\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 }, [teamsError, reFetchTeams]);\n\n const ListFooterComponent = useCallback(() => {\n const teamsCount = orgTeamsData?.getOrganizationTeams?.length || 0;\n\n return (\n <VStack>\n {teamsCount > 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 }, [orgTeamsData, orgName, navigation]);\n\n const SectionHeader = useCallback(() => {\n return (\n <TouchableOpacity\n onPress={() => setTeamExpendable(!teamExpandable)}\n style={{ paddingVertical: 6, paddingHorizontal: 16 }}\n >\n <HStack className=\"justify-between items-center\">\n <Text className=\"font-semibold\" style={{ fontSize: 15, color: '#1D1C1D' }}>\n Teams\n </Text>\n <FontAwesome\n name={teamExpandable ? 'chevron-down' : 'chevron-left'}\n color={colors.gray[800]}\n size={12}\n />\n </HStack>\n </TouchableOpacity>\n );\n }, [teamExpandable]);\n\n if (!teamExpandable) {\n return <SectionHeader />;\n }\n\n return (\n <Box>\n <SectionHeader />\n {organizationTeams?.length > 0 ? (\n <FlatList\n keyExtractor={(item) => (item?.id || 'team') + '-' + item?.title}\n data={organizationTeams}\n renderItem={renderOrganizationTeamItem}\n ListFooterComponent={ListFooterComponent}\n style={{ marginTop: 6 }}\n scrollEnabled={false}\n />\n ) : (\n <Box>\n <ListEmptyComponent />\n <ListFooterComponent />\n </Box>\n )}\n </Box>\n );\n};\n\nexport default Teams;\n"],"names":["React"],"mappings":"27BAcA,MAAM,QAAQ,MAAM;AAClB,EAAM,MAAA;AAAA,IACJ;AAAA,MACE,eAAgB,EAAA;AACpB,EAAA,MAAM,aAAa,aAAmB,EAAA;AACtC,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,IAAI,CAAA;AACzD,EAAa,WAAY,CAAA,YAAA,EAAc,YAAY;AACnD,EAAkB,YAAa;AAC/B,EAAM,MAAA;AAAA,IACJ;AAAA,GACF,GAAI,WAAW,cAAc,CAAA;AAC7B,EAAM,MAAA;AAAA,IACJ,IAAM,EAAA,YAAA;AAAA,IACN,OAAS,EAAA,eAAA;AAAA,IACT,KAAO,EAAA;AAAA,MACL,aAAc,CAAA;AAAA,IAChB,SAAW,EAAA;AAAA,MACT;AAAA,KACF;AAAA,IACA,WAAa,EAAA,mBAAA;AAAA,IACb,eAAiB,EAAA,aAAA;AAAA,IACjB,MAAM,CAAC;AAAA,GACR,CAAA;AACD,EAAM,MAAA,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,IAAI,OAAS,EAAA;AACX,MAAA,OAAO,eAAgB,CAAA;AAAA,QACrB;AAAA,OACD,CAAA;AAAA;AACH,GACC,EAAA,CAAC,OAAS,EAAA,eAAe,CAAC,CAAA;AAG7B,EAAA,cAAA,CAAe,YAAY,MAAM;AAC/B,IAAA,IAAI,iBAAiB,OAAS,EAAA;AAC5B,MAAa,YAAA,EAAA;AAAA;AACf,KACC,CAAC,aAAA,EAAe,OAAS,EAAA,YAAY,CAAC,CAAC,CAAA;AAG1C,EAAA,cAAA,CAAe,YAAY,MAAM;AAC/B,IAAA,IAAI,OAAS,EAAA;AACX,MAAa,YAAA,EAAA;AAAA;AACf,GACC,EAAA,CAAC,OAAS,EAAA,YAAY,CAAC,CAAC,CAAA;AAC3B,EAAM,MAAA,iBAAA,GAAoB,QAAQ,MAAM;AA1D1C,IAAA,IAAA,EAAA;AA2DI,IAAM,MAAA,KAAA,GAAA,CAAQ,YAAc,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAA,oBAAA,KAAwB,EAAC;AACrD,IAAA,OAAO,MAAM,MAAS,GAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,CAAA,CAAO,MAAC,GAAG,KAAK,CAAT,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,OAAO,CAAC,CAAA,KAAA,CAAW,CAAG,IAAA,IAAA,GAAA,MAAA,GAAA,CAAA,CAAA,OAAA,MAAY,UAAU,CAAC;AAAA,MACjG;AAAA,UACI,GAAG,CAAA,EAAG,CAAC,CAAC,OAAY,EAAI,IAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,KAAA,CAAM,WAAa,EAAA,CAAA,EAAG,CAAC,KAAK,CAAC,CAAG,EAAA,EAAE,IAAI,EAAC;AAAA,GACpE,EAAA,CAAC,YAAc,EAAA,OAAO,CAAC,CAAA;AAC1B,EAAM,MAAA,QAAA,GAAW,WAAY,CAAA,CAAC,IAAc,KAAA;AAhE9C,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAiEI,IAAW,UAAA,CAAA,QAAA,CAAS,iBAAiB,QAAU,EAAA;AAAA,MAC7C,MAAA,EAAA,CAAQ,EAAM,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,EAAA,KAAN,IAAU,GAAA,MAAA,GAAA,EAAA,CAAA,QAAA,EAAA;AAAA,MAClB,UAAU,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,IAAA;AAAA,MAChB,KAAA,EAAA,CAAO,EAAM,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,KAAA,KAAN,IAAa,GAAA,MAAA,GAAA,EAAA,CAAA,QAAA,EAAA;AAAA,MACpB,YAAA,EAAA,CAAc,EAAM,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,WAAA,KAAN,IAAmB,GAAA,MAAA,GAAA,EAAA,CAAA,MAAA;AAAA,MACjC,OAAA;AAAA,MACA,UAAY,EAAA;AAAA,KACb,CAAA;AAAA,GACA,EAAA,CAAC,OAAS,EAAA,UAAU,CAAC,CAAA;AACxB,EAAM,MAAA,0BAAA,GAA6B,YAAY,CAAC;AAAA,IAC9C;AAAA,GACF,qBAAOA,cAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EAAiB,GAAK,EAAA,IAAA,CAAK,EAAI,EAAA,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA,EAAG,KAAO,EAAA;AAAA,IAC1E,eAAiB,EAAA,CAAA;AAAA,IACjB,iBAAmB,EAAA;AAAA,GAEP,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,KAAA,EAAM,IAAK,EAAA,SAAA,EAAU,cACzB,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAS,EAAA,EAAA,KAAA,EAAO,MAAO,CAAA,IAAA,CAAK,GAAM,CAAA,EAAA,IAAA,EAAK,MAAO,EAAA,IAAA,EAAM,EAAI,EAAA,CAAA,kBACxDA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,SAAU,EAAA,gCAAA,EAAA,EAAkC,IAAK,CAAA,KAAM,CACjE,CACJ,CAAqB,EAAA,CAAC,QAAQ,CAAC,CAAA;AACzC,EAAM,MAAA,kBAAA,GAAqB,YAAY,MAAM;AAE3C,IAAM,MAAA,YAAA,GAAe,aAAa,UAAW,CAAA,OAAA,CAAQ,SAAS,sBAAsB,CAAA,GAAI,kEAAqE,GAAA,UAAA,CAAW,OAAU,GAAA,IAAA;AAClL,IAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,OAAI,KAAO,EAAA;AAAA,MACjB,OAAS,EAAA;AAAA,KAEE,EAAA,EAAA,YAAA,mBAAgBA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,KAAO,EAAA;AAAA,MACpC,OAAS,EAAA,CAAA;AAAA,MACT,eAAiB,EAAA,SAAA;AAAA,MACjB,YAAc,EAAA;AAAA,KAEE,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAM,WAAU,KAAO,EAAA;AAAA,MAC3C,YAAc,EAAA,CAAA;AAAA,MACd,UAAY,EAAA;AAAA,KACd,EAAA,EACqB,YACL,CAAA,kBACCA,cAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EAAiB,OAAS,EAAA,YAAA,EAAA,kBACtBA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,KAAM,EAAA,IAAA,EAAK,KAAO,EAAA;AAAA,MAC1C,UAAY,EAAA;AAAA,KAEQ,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,OAAQ,EAAA,EAAA,IAAA,EAAK,cAAa,KAAM,EAAA,SAAA,EAAU,IAAM,EAAA,EAAA,EAAI,CACrD,kBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAM,WAAU,KAAO,EAAA;AAAA,MAC/C,UAAY,EAAA;AAAA,KACd,EAAA,EAAG,OAEiB,CACJ,CACJ,CACJ,CAAS,mBAAAA,cAAA,CAAA,aAAA,CAAC,OAAI,KAAO,EAAA;AAAA,MACjC,UAAY,EAAA,QAAA;AAAA,MACZ,eAAiB,EAAA;AAAA,KACnB,EAAA,kBACmBA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,KAAO,EAAA;AAAA,MAC1B,OAAS,EAAA,EAAA;AAAA,MACT,YAAc,EAAA,CAAA;AAAA,MACd,YAAc,EAAA,EAAA;AAAA,MACd,eAAiB,EAAA;AAAA,KAEC,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAS,EAAA,EAAA,IAAA,EAAK,cAAe,EAAA,KAAA,EAAM,SAAU,EAAA,IAAA,EAAM,EAAI,EAAA,CAC5D,CACA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,KAAO,EAAA;AAAA,MAC3B,KAAO,EAAA,SAAA;AAAA,MACP,SAAW,EAAA;AAAA,KACb,EAAA,EAAG,oBAAkB,CACT,CACR,CAAA;AAAA,GACP,EAAA,CAAC,UAAY,EAAA,YAAY,CAAC,CAAA;AAC7B,EAAM,MAAA,mBAAA,GAAsB,YAAY,MAAM;AArIhD,IAAA,IAAA,EAAA;AAsII,IAAA,MAAM,UAAa,GAAA,CAAA,CAAA,EAAA,GAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,oBAAd,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoC,MAAU,KAAA,CAAA;AACjE,IAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,MACK,EAAA,IAAA,EAAA,UAAA,GAAa,EAAM,oBAAAA,cAAA,CAAA,aAAA,CAAC,gBAAiB,EAAA,EAAA,OAAA,EAAS,MAAM,UAAA,CAAW,QAAS,CAAA,gBAAA,CAAiB,KAAO,EAAA;AAAA,MACzG;AAAA,KACD,GAAG,KAAO,EAAA;AAAA,MACT,eAAiB,EAAA,CAAA;AAAA,MACjB,iBAAmB,EAAA;AAAA,yBAEFA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,OAAM,IAAK,EAAA,SAAA,EAAU,kCACxBA,cAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAc,KAAM,EAAA,SAAA,EAAU,MAAK,QAAS,EAAA,IAAA,EAAM,IAAI,CACvD,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,KAAO,EAAA;AAAA,MAC7B,QAAU,EAAA,EAAA;AAAA,MACV,KAAO,EAAA;AAAA,KACN,EAAA,EAAA,kBAAgB,CACL,CACJ,CAEJ,kBAAAA,cAAA,CAAA,aAAA,CAAC,gBAAiB,EAAA,EAAA,OAAA,EAAS,MAAM,UAAA,CAAW,QAAS,CAAA,gBAAA,CAAiB,OAAS,EAAA;AAAA,MACvF;AAAA,KACD,GAAG,KAAO,EAAA;AAAA,MACT,aAAe,EAAA,CAAA;AAAA,MACf,iBAAmB,EAAA;AAAA,yBAENA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,OAAM,IAAK,EAAA,SAAA,EAAU,kCACxBA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,KAAM,EAAA,SAAA,EAAU,MAAK,MAAO,EAAA,IAAA,EAAM,IAAI,CAC/C,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,KAAO,EAAA;AAAA,MACzB,QAAU,EAAA,EAAA;AAAA,MACV,KAAO,EAAA;AAAA,KACN,EAAA,EAAA,UAAQ,CACD,CACJ,CACJ,CAAA;AAAA,GACP,EAAA,CAAC,YAAc,EAAA,OAAA,EAAS,UAAU,CAAC,CAAA;AACtC,EAAM,MAAA,aAAA,GAAgB,YAAY,MAAM;AACtC,IAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,oBAAiB,OAAS,EAAA,MAAM,kBAAkB,CAAC,cAAc,GAAG,KAAO,EAAA;AAAA,MACjF,eAAiB,EAAA,CAAA;AAAA,MACjB,iBAAmB,EAAA;AAAA,KACrB,EAAA,+CACa,MAAO,EAAA,EAAA,SAAA,EAAU,kDACbA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,SAAU,EAAA,eAAA,EAAgB,KAAO,EAAA;AAAA,MACjD,QAAU,EAAA,EAAA;AAAA,MACV,KAAO,EAAA;AAAA,SACN,OAES,CAAA,kBACCA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,MAAM,cAAiB,GAAA,cAAA,GAAiB,cAAgB,EAAA,KAAA,EAAO,OAAO,IAAK,CAAA,GAAA,CAAA,EAAM,IAAM,EAAA,EAAA,EAAI,CAC5G,CACJ,CAAA;AAAA,GACV,EAAG,CAAC,cAAc,CAAC,CAAA;AACnB,EAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,IAAA,oDAAQ,aAAc,EAAA,IAAA,CAAA;AAAA;AAExB,EAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,2BACGA,cAAA,CAAA,aAAA,CAAA,aAAA,EAAA,IAAc,IACd,iBAAmB,IAAA,IAAA,GAAA,MAAA,GAAA,iBAAA,CAAA,MAAA,IAAS,CAAI,mBAAAA,cAAA,CAAA,aAAA,CAAC,QAAS,EAAA,EAAA,YAAA,EAAc,YAAS,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,EAAA,KAAM,MAAU,IAAA,GAAA,IAAM,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA,KAAA,CAAA,EAAO,MAAM,iBAAmB,EAAA,UAAA,EAAY,0BAA4B,EAAA,mBAAA,EAA0C,KAAO,EAAA;AAAA,IACnO,SAAW,EAAA;AAAA,GACV,EAAA,aAAA,EAAe,KAAO,EAAA,CAAA,mBAAMA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,kBACdA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,IAAmB,CACpB,kBAAAA,cAAA,CAAA,aAAA,CAAC,mBAAoB,EAAA,IAAA,CACzB,CACR,CAAA;AACR"}
@@ -1,87 +1,56 @@
1
- import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default from'react';import {StyleSheet,Dimensions}from'react-native';import {FlatList,Pressable,Box,VStack,Image,Text}from'@admin-layout/gluestack-ui-mobile';import {NavigationRoutes}from'../../../../constants/routes.js';import img$2 from'../../../../assets/images/send.png.js';import img from'../../../../assets/images/chat.png.js';import img$1 from'../../../../assets/images/save-for-later.png.js';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector}from'react-redux';import'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';const pWidth = Dimensions.get("window").width / 3 - 5;
2
- const TopCommonSlider = ({}) => {
3
- const navigation = useNavigation();
4
- useSelector(userSelector);
5
- useIsFocused();
6
- const ref = React__default.useRef();
7
- const {
8
- orgName
9
- } = useDrawerLayout();
10
- useFocusEffect(React__default.useCallback(() => {
11
- return () => {
12
- };
13
- }, []));
14
- const sliderData = React__default.useMemo(() => {
15
- const sliderItems = [{
16
- id: 1,
17
- image: img,
18
- title: "Threads",
19
- subTitle: "Caught up",
20
- route: NavigationRoutes.Threads
21
- }, {
22
- id: 2,
23
- image: img$1,
24
- title: "Later",
25
- subTitle: "0 items",
26
- route: null
27
- }, {
28
- id: 3,
29
- image: img$2,
30
- title: "Draft & Sent",
31
- subTitle: "0 drafts",
32
- route: null
33
- }];
34
- return sliderItems;
35
- }, []);
36
- const renderSliderItem = ({
37
- item
38
- }) => {
39
- return /* @__PURE__ */ React__default.createElement(Pressable, { key: item.id, style: styles.view, flex: 1, borderWidth: "$1", borderColor: "$trueGray200", rounded: "$lg", onPress: () => (item == null ? void 0 : item.route) && navigation.navigate(item == null ? void 0 : item.route, {
40
- orgName
41
- }) }, /* @__PURE__ */ React__default.createElement(Box, { borderRadius: "$md", flex: 1, alignItems: "center", justifyContent: "center" }, /* @__PURE__ */ React__default.createElement(VStack, null, /* @__PURE__ */ React__default.createElement(Box, null, (item == null ? void 0 : item.image) && /* @__PURE__ */ React__default.createElement(Image, { p: "$0", alt: "icon", style: styles.image, source: item == null ? void 0 : item.image })), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { color: "$trueGray800" }, item.title)), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { color: "$trueGray600" }, item.subTitle)))));
42
- };
43
- return /* @__PURE__ */ React__default.createElement(
44
- FlatList,
45
- {
46
- ref,
47
- pagingEnabled: true,
48
- horizontal: true,
49
- snapToInterval: Dimensions.get("window").width,
50
- snapToAlignment: "start",
51
- decelerationRate: "fast",
52
- data: sliderData && sliderData.length > 0 ? sliderData : [],
53
- renderItem: renderSliderItem,
54
- key: "top-common-home-slider-list",
55
- keyExtractor: (item, index) => String(index),
56
- px: 2,
57
- style: styles.container,
58
- contentContainerStyle: {
59
- flex: 1,
60
- justifyContent: "space-between",
61
- alignItems: "center"
62
- }
63
- }
64
- );
65
- };
1
+ import React__default from'react';import {StyleSheet,Dimensions}from'react-native';import {Button,Box,VStack,Image,Text,FlatList}from'@admin-layout/gluestack-ui-mobile';import {NavigationRoutes}from'../../../../constants/routes.js';import img$2 from'../../../../assets/images/send.png.js';import img from'../../../../assets/images/chat.png.js';import img$1 from'../../../../assets/images/save-for-later.png.js';import {useNavigation}from'@react-navigation/native';import'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../../../hooks/useDrawerLayout.js';import'../../../../hooks/useExpoNotificationProvider.js';import'../../../../hooks/useOptimizedChannelsQueries.js';import colors from'tailwindcss/colors';const pWidth = Dimensions.get("window").width / 3 - 5;
2
+ const SLIDER_ITEMS = [{
3
+ id: 1,
4
+ image: img,
5
+ title: "Threads",
6
+ subTitle: "0 New",
7
+ route: NavigationRoutes.Threads
8
+ }, {
9
+ id: 2,
10
+ image: img$1,
11
+ title: "Later",
12
+ subTitle: "0 items",
13
+ route: null
14
+ }, {
15
+ id: 3,
16
+ image: img$2,
17
+ title: "Draft & Sent",
18
+ subTitle: "0 drafts",
19
+ route: null
20
+ }];
66
21
  const styles = StyleSheet.create({
67
- container: {},
22
+ container: {
23
+ paddingHorizontal: 2
24
+ },
68
25
  view: {
69
- maxWidth: pWidth - 10,
70
- width: pWidth - 10,
26
+ maxWidth: pWidth - 5,
27
+ width: pWidth - 5,
71
28
  marginTop: 5,
72
29
  height: 100,
73
- overflow: "hidden"
30
+ overflow: "hidden",
31
+ borderColor: colors.gray[200]
74
32
  },
75
33
  image: {
76
- width: 20,
77
- height: 20,
78
34
  resizeMode: "cover",
79
35
  tintColor: "#000"
80
36
  },
81
- text: {
82
- fontSize: 60,
83
- fontWeight: "bold",
84
- color: "#aaa"
37
+ contentContainer: {
38
+ flex: 1,
39
+ justifyContent: "space-between",
40
+ alignItems: "center"
85
41
  }
86
42
  });
43
+ const TopCommonSlider = () => {
44
+ const navigation = useNavigation();
45
+ const {
46
+ orgName
47
+ } = useDrawerLayout();
48
+ const flatListRef = React__default.useRef(null);
49
+ const renderSliderItem = React__default.useCallback(({
50
+ item
51
+ }) => /* @__PURE__ */ React__default.createElement(Button, { key: item.id, variant: "outline", style: styles.view, className: "flex-1 border-blue-400 rounded-lg", onPress: () => item.route && navigation.navigate(item.route, {
52
+ orgName
53
+ }) }, /* @__PURE__ */ React__default.createElement(Box, { className: "rounded-md flex-1 items-center justify-center py-2" }, /* @__PURE__ */ React__default.createElement(VStack, null, /* @__PURE__ */ React__default.createElement(Box, null, item.image && /* @__PURE__ */ React__default.createElement(Image, { className: "p-0 w-8 h-8", size: "xs", alt: "icon", style: styles.image, source: item.image })), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { color: colors.gray[800], className: "text-sm" }, item.title)), /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { color: colors.gray[600], className: "text-xs" }, item.subTitle))))), [navigation, orgName]);
54
+ return /* @__PURE__ */ React__default.createElement(FlatList, { ref: flatListRef, pagingEnabled: true, horizontal: true, snapToInterval: Dimensions.get("window").width, snapToAlignment: "start", decelerationRate: "fast", data: SLIDER_ITEMS, renderItem: renderSliderItem, keyExtractor: (item) => String(item.id), style: styles.container, contentContainerStyle: styles.contentContainer, initialNumToRender: 3, maxToRenderPerBatch: 3, removeClippedSubviews: true });
55
+ };
87
56
  var TopCommonSlider$1 = React__default.memo(TopCommonSlider);export{TopCommonSlider$1 as default};//# sourceMappingURL=TopCommonSlider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TopCommonSlider.js","sources":["../../../../../src/screens/Home/Components/TopCommonSlider/TopCommonSlider.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useLayoutEffect } from 'react';\nimport { Ionicons, MaterialIcons, Octicons } from '@expo/vector-icons';\nimport { TouchableOpacity, Dimensions, StyleSheet } from 'react-native';\n// import styles from '../../styles';\nimport {\n Pressable,\n View,\n Image,\n FlatList,\n Icon,\n Box,\n Text,\n Avatar,\n Spinner,\n VStack,\n HStack,\n Divider,\n ScrollView,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { NavigationRoutes } from '../../../../constants/routes';\nimport send from '../../../../assets/images/send.png';\nimport chat from '../../../../assets/images/chat.png';\nimport saveForLater from '../../../../assets/images/save-for-later.png';\nimport { userSelector, isUserAuthenticated } from '@adminide-stack/user-auth0-client';\nimport { useSelector } from 'react-redux';\nimport { useNavigation, useRoute } from '@react-navigation/native';\nimport { navigationRef } from '@common-stack/client-react';\nimport { startCase } from 'lodash-es';\nimport { useGetOrganizationTeamsQuery } from 'common/lib/generated/generated.js';\nimport { useDrawerLayout } from '../../../../hooks';\n\nconst pWidth = Dimensions.get('window').width / 3 - 5;\n\nconst TopCommonSlider = ({}: any) => {\n const navigation = useNavigation<any>();\n // const currentRoute = navigationRef?.isReady() ? navigationRef?.getCurrentRoute() : null;\n const user: any = useSelector(userSelector);\n const isFocused = useIsFocused();\n const ref = React.useRef();\n const { orgName } = useDrawerLayout();\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, []),\n );\n\n const sliderData = React.useMemo(() => {\n const sliderItems = [\n {\n id: 1,\n image: chat,\n title: 'Threads',\n subTitle: 'Caught up',\n route: NavigationRoutes.Threads,\n },\n {\n id: 2,\n image: saveForLater,\n title: 'Later',\n subTitle: '0 items',\n route: null,\n },\n {\n id: 3,\n image: send,\n title: 'Draft & Sent',\n subTitle: '0 drafts',\n route: null,\n },\n ];\n\n return sliderItems;\n }, []);\n\n const renderSliderItem = ({ item }: any) => {\n return (\n <Pressable\n key={item.id}\n style={styles.view}\n flex={1}\n borderWidth={'$1'}\n borderColor={'$trueGray200'}\n rounded={'$lg'}\n onPress={() => item?.route && navigation.navigate(item?.route, { orgName })}\n >\n <Box borderRadius=\"$md\" flex={1} alignItems={'center'} justifyContent={'center'}>\n <VStack>\n <Box>\n {item?.image && <Image p={'$0'} alt=\"icon\" style={styles.image} source={item?.image} />}\n </Box>\n <Box>\n <Text color={'$trueGray800'}>{item.title}</Text>\n </Box>\n <Box>\n <Text color={'$trueGray600'}>{item.subTitle}</Text>\n </Box>\n </VStack>\n </Box>\n </Pressable>\n );\n };\n\n return (\n <FlatList\n ref={ref}\n pagingEnabled={true}\n horizontal={true}\n snapToInterval={Dimensions.get('window').width}\n snapToAlignment=\"start\"\n decelerationRate={'fast'}\n data={sliderData && sliderData.length > 0 ? sliderData : []}\n renderItem={renderSliderItem}\n key={'top-common-home-slider-list'}\n keyExtractor={(item, index) => String(index)}\n px={2}\n style={styles.container}\n contentContainerStyle={{\n flex: 1,\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n // ListEmptyComponent={() => {\n // return <View>{loading ? <Spinner /> : <Text></Text>}</View>;\n // }}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n container: {},\n view: {\n maxWidth: pWidth - 10,\n width: pWidth - 10,\n marginTop: 5,\n height: 100,\n overflow: 'hidden',\n },\n image: {\n width: 20,\n height: 20,\n resizeMode: 'cover',\n tintColor: '#000',\n },\n text: {\n fontSize: 60,\n fontWeight: 'bold',\n color: '#aaa',\n },\n});\n\nexport default React.memo(TopCommonSlider);\n"],"names":["React","chat","saveForLater","send"],"mappings":"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"}
1
+ {"version":3,"file":"TopCommonSlider.js","sources":["../../../../../src/screens/Home/Components/TopCommonSlider/TopCommonSlider.tsx"],"sourcesContent":["import React from 'react';\nimport { Dimensions, StyleSheet } from 'react-native';\nimport { Image, FlatList, Box, Text, VStack, Button } from '@admin-layout/gluestack-ui-mobile';\nimport { NavigationRoutes } from '../../../../constants/routes';\nimport send from '../../../../assets/images/send.png';\nimport chat from '../../../../assets/images/chat.png';\nimport saveForLater from '../../../../assets/images/save-for-later.png';\nimport { useNavigation } from '@react-navigation/native';\nimport { useDrawerLayout } from '../../../../hooks';\nimport colors from 'tailwindcss/colors';\n\nconst pWidth = Dimensions.get('window').width / 3 - 5;\n\n// Define types\ntype SliderItem = {\n id: number;\n image: any;\n title: string;\n subTitle: string;\n route: string | null;\n};\n\ntype TopCommonSliderProps = {\n // Add any props here if needed\n};\n\n// Move static data outside component\nconst SLIDER_ITEMS: SliderItem[] = [\n {\n id: 1,\n image: chat,\n title: 'Threads',\n subTitle: '0 New',\n route: NavigationRoutes.Threads,\n },\n {\n id: 2,\n image: saveForLater,\n title: 'Later',\n subTitle: '0 items',\n route: null,\n },\n {\n id: 3,\n image: send,\n title: 'Draft & Sent',\n subTitle: '0 drafts',\n route: null,\n },\n];\n\nconst styles = StyleSheet.create({\n container: {\n paddingHorizontal: 2,\n },\n view: {\n maxWidth: pWidth - 5,\n width: pWidth - 5,\n marginTop: 5,\n height: 100,\n overflow: 'hidden',\n borderColor: colors.gray[200],\n },\n image: {\n resizeMode: 'cover',\n tintColor: '#000',\n },\n contentContainer: {\n flex: 1,\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n});\n\nconst TopCommonSlider: React.FC<TopCommonSliderProps> = () => {\n const navigation = useNavigation<any>();\n const { orgName } = useDrawerLayout();\n const flatListRef = React.useRef<FlatList<SliderItem>>(null);\n\n const renderSliderItem = React.useCallback(\n ({ item }: { item: SliderItem }) => (\n <Button\n key={item.id}\n variant={'outline'}\n style={styles.view}\n className=\"flex-1 border-blue-400 rounded-lg\"\n onPress={() => item.route && navigation.navigate(item.route, { orgName })}\n >\n <Box className=\"rounded-md flex-1 items-center justify-center py-2\">\n <VStack>\n <Box>\n {item.image && (\n <Image\n className=\"p-0 w-8 h-8\"\n size={'xs'}\n alt=\"icon\"\n style={styles.image}\n source={item.image}\n />\n )}\n </Box>\n <Box>\n <Text color={colors.gray[800]} className=\"text-sm\">\n {item.title}\n </Text>\n </Box>\n <Box>\n <Text color={colors.gray[600]} className=\"text-xs\">\n {item.subTitle}\n </Text>\n </Box>\n </VStack>\n </Box>\n </Button>\n ),\n [navigation, orgName],\n );\n\n return (\n <FlatList\n ref={flatListRef}\n pagingEnabled={true}\n horizontal={true}\n snapToInterval={Dimensions.get('window').width}\n snapToAlignment=\"start\"\n decelerationRate={'fast'}\n data={SLIDER_ITEMS}\n renderItem={renderSliderItem}\n keyExtractor={(item) => String(item.id)}\n style={styles.container}\n contentContainerStyle={styles.contentContainer}\n initialNumToRender={3}\n maxToRenderPerBatch={3}\n removeClippedSubviews={true}\n />\n );\n};\n\nexport default React.memo(TopCommonSlider);\n"],"names":["chat","saveForLater","send","React"],"mappings":"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"}