@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
@@ -1,46 +1,31 @@
1
- import {useNavigation,useIsFocused,useFocusEffect}from'@react-navigation/native';import React__default,{useState,useEffect}from'react';import {TouchableOpacity,Dimensions}from'react-native';import {Spinner,Box,Text,SafeAreaView,Input,InputField,FlatList,Center,Fab,FabIcon,AddIcon,HStack}from'@admin-layout/gluestack-ui-mobile';import {userSelector}from'@adminide-stack/user-auth0-client';import {useSelector}from'react-redux';import {orderBy,uniqBy}from'lodash-es';import {useGetOrganizationTeamsQuery}from'common/lib/generated/generated.js';import {Octicons}from'@expo/vector-icons';import'../../constants/device.js';import'../../constants/globalStyles.js';import'../../constants/Layout.js';import {NavigationRoutes}from'../../constants/routes.js';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../hooks/useDrawerLayout.js';import'../../hooks/useExpoNotificationProvider.js';import VirtualizedScrollView from'../../components/VirtualizedScrollView/VirtualizedScrollView.js';import {StatusBar}from'expo-status-bar';Dimensions.get("window").width;
2
- Dimensions.get("window").height;
3
- const GetTeams = React__default.memo(({
4
- orgTeams,
5
- orgTeamsLoading
6
- }) => {
1
+ import React__default,{memo,useCallback}from'react';import {StyleSheet,SafeAreaView,TouchableOpacity,RefreshControl}from'react-native';import {Box,Text,Center,Spinner,Input,InputField,FlatList,View,Fab,FabIcon,AddIcon,HStack}from'@admin-layout/gluestack-ui-mobile';import {useSelector}from'react-redux';import {userSelector}from'@adminide-stack/user-auth0-client';import {useNavigation}from'@react-navigation/native';import {Octicons}from'@expo/vector-icons';import'../../constants/device.js';import'../../constants/globalStyles.js';import'../../constants/Layout.js';import {NavigationRoutes}from'../../constants/routes.js';import'expo-font';import'expo-splash-screen';import {useDrawerLayout}from'../../hooks/useDrawerLayout.js';import'../../hooks/useExpoNotificationProvider.js';import'../../hooks/useOptimizedChannelsQueries.js';import {StatusBar}from'expo-status-bar';import colors from'tailwindcss/colors';import {useTeams}from'./useTeams.js';const TeamItem = memo(({
2
+ item,
3
+ onPress
4
+ }) => /* @__PURE__ */ React__default.createElement(TouchableOpacity, { key: item.id, style: styles.teamItem, onPress: () => onPress(item) }, /* @__PURE__ */ React__default.createElement(Box, { style: styles.teamItemBox }, /* @__PURE__ */ React__default.createElement(HStack, { space: "md", style: styles.teamItemContent }, /* @__PURE__ */ React__default.createElement(Octicons, { color: "black", name: "lock", size: 20 }), /* @__PURE__ */ React__default.createElement(Text, { style: styles.teamItemText }, item.title)))));
5
+ const TeamsScreen = () => {
7
6
  const {
8
- orgName,
9
- organizationDetail
7
+ orgName
10
8
  } = useDrawerLayout();
11
9
  const navigation = useNavigation();
12
- const [teams, setTeams] = React__default.useState([]);
13
- const [intialTeams, setInitialTeams] = useState([]);
14
10
  useSelector(userSelector);
15
- useIsFocused();
16
- useEffect(() => {
17
- if (navigation)
11
+ const {
12
+ teams,
13
+ loading,
14
+ teamsLoading,
15
+ error,
16
+ handleSearchChange,
17
+ searchTerm,
18
+ refetch
19
+ } = useTeams(orgName);
20
+ React__default.useEffect(() => {
21
+ if (navigation) {
18
22
  navigation.setOptions({
19
23
  headerShown: true,
20
- headerTitle: (props) => /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { fontSize: 15, fontWeight: "600", color: "$black" }, "Team Browser"), /* @__PURE__ */ React__default.createElement(Text, { color: "$black", fontWeight: "500" }, teams.length, " ", teams.length > 1 ? "teams" : "team"))
24
+ headerTitle: () => /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Text, { style: styles.headerTitle }, "Team Browser"), /* @__PURE__ */ React__default.createElement(Text, { style: styles.headerSubtitle }, teams.length, " ", teams.length === 1 ? "team" : "teams"))
21
25
  });
22
- }, [teams, navigation]);
23
- React__default.useEffect(() => {
24
- var _a;
25
- if (orgTeams == null ? void 0 : orgTeams.getOrganizationTeams) {
26
- const orgTeamsData = (orgTeams == null ? void 0 : orgTeams.getOrganizationTeams) && ((_a = orgTeams == null ? void 0 : orgTeams.getOrganizationTeams) == null ? void 0 : _a.length) && orderBy(orgTeams == null ? void 0 : orgTeams.getOrganizationTeams, [(tm) => tm == null ? void 0 : tm.title.toLowerCase()], ["asc"]) || [];
27
- setTeams((oldTeams) => uniqBy([...orgTeamsData, ...oldTeams], ({
28
- id
29
- }) => id));
30
- setInitialTeams((oldTeams) => uniqBy([...orgTeamsData, ...oldTeams], ({
31
- id
32
- }) => id));
33
26
  }
34
- }, [orgTeams]);
35
- React__default.useCallback((id, title, totalMembers) => {
36
- navigation.navigate(NavigationRoutes.DialogMessages, {
37
- channelId: id == null ? void 0 : id.toString(),
38
- title: title == null ? void 0 : title.toString(),
39
- totalMembers,
40
- hideTabBar: true
41
- });
42
- }, []);
43
- const viewTeam = React__default.useCallback((item) => {
27
+ }, [teams.length, navigation]);
28
+ const viewTeam = useCallback((item) => {
44
29
  var _a, _b, _c;
45
30
  navigation.navigate(NavigationRoutes.ViewTeam, {
46
31
  teamId: (_a = item == null ? void 0 : item.id) == null ? void 0 : _a.toString(),
@@ -49,77 +34,123 @@ const GetTeams = React__default.memo(({
49
34
  totalMembers: (_c = item == null ? void 0 : item.teamMembers) == null ? void 0 : _c.length,
50
35
  hideTabBar: true
51
36
  });
52
- }, []);
53
- const renderOrganizationTeamItem = ({
37
+ }, [navigation]);
38
+ if (loading && !teams.length) {
39
+ return /* @__PURE__ */ React__default.createElement(Center, { style: {
40
+ flex: 1,
41
+ backgroundColor: "white"
42
+ } }, /* @__PURE__ */ React__default.createElement(Spinner, { color: colors.blue[500], size: "large" }));
43
+ }
44
+ return /* @__PURE__ */ React__default.createElement(SafeAreaView, { style: styles.container }, /* @__PURE__ */ React__default.createElement(StatusBar, { style: "dark" }), /* @__PURE__ */ React__default.createElement(Box, { style: styles.content }, /* @__PURE__ */ React__default.createElement(Input, { style: styles.searchInput, variant: "outlined" }, /* @__PURE__ */ React__default.createElement(InputField, { type: "text", size: "xl", value: searchTerm, placeholderTextColor: colors.gray[500], style: styles.inputField, placeholder: "Search for teams", onChange: (event) => handleSearchChange(event.nativeEvent.text), autoCapitalize: "none", autoCorrect: false })), /* @__PURE__ */ React__default.createElement(FlatList, { contentContainerStyle: teams.length ? styles.listContent : styles.emptyListContent, data: teams, renderItem: ({
54
45
  item
55
- }) => {
56
- return /* @__PURE__ */ React__default.createElement(
57
- TouchableOpacity,
58
- {
59
- key: item.id,
60
- style: {
61
- marginTop: 1
62
- },
63
- onPress: () => viewTeam(item)
64
- },
65
- /* @__PURE__ */ React__default.createElement(Box, { flex: 1, bg: "$white", hardShadow: "5", py: "$4", px: "$2", borderBottomWidth: "$1", borderBottomColor: "$warmGray200" }, /* @__PURE__ */ React__default.createElement(HStack, { flex: 1, alignItems: "center" }, /* @__PURE__ */ React__default.createElement(Octicons, { color: "black", name: "lock", size: 20 }), /* @__PURE__ */ React__default.createElement(Text, { pl: "$2", fontSize: 16, color: "$black" }, item.title)))
66
- );
67
- };
68
- const searchTeams = React__default.useCallback((v) => {
69
- if (v) {
70
- const searchTeam = teams.filter((o) => {
71
- var _a;
72
- return (_a = o == null ? void 0 : o.title) == null ? void 0 : _a.toLowerCase().includes(v == null ? void 0 : v.toLowerCase());
73
- });
74
- setTeams(searchTeam);
75
- } else {
76
- setTeams(intialTeams);
77
- }
78
- }, [intialTeams, teams]);
79
- return /* @__PURE__ */ React__default.createElement(SafeAreaView, { flex: 1 }, /* @__PURE__ */ React__default.createElement(StatusBar, { style: "dark" }), /* @__PURE__ */ React__default.createElement(Box, { flex: 1 }, /* @__PURE__ */ React__default.createElement(Input, { bg: "$white", variant: "underlined", borderTopWidth: "$1" }, /* @__PURE__ */ React__default.createElement(InputField, { px: "$3", alignItems: "center", type: "text", size: "xl", placeholderTextColor: "#404040", color: "$black", fontSize: 15, placeholder: "Search for teams", onChange: ({
80
- nativeEvent: {
81
- eventCount,
82
- target,
83
- text
84
- }
85
- }) => {
86
- searchTeams(text);
87
- }, autoCapitalize: "none", autoCorrect: false })), /* @__PURE__ */ React__default.createElement(VirtualizedScrollView, { flex: 1 }, /* @__PURE__ */ React__default.createElement(FlatList, { pt: "$2", flex: 1, data: teams && teams.length > 0 ? teams : [], renderItem: renderOrganizationTeamItem, key: "all-teams-list", keyExtractor: (item, index) => String(index), contentContainerStyle: {
46
+ }) => /* @__PURE__ */ React__default.createElement(TeamItem, { item, onPress: viewTeam }), keyExtractor: (item) => item._id || item.id, refreshControl: /* @__PURE__ */ React__default.createElement(RefreshControl, { refreshing: teamsLoading, onRefresh: refetch, colors: [colors.blue[500]], tintColor: colors.blue[500] }), showsVerticalScrollIndicator: false, ListEmptyComponent: () => /* @__PURE__ */ React__default.createElement(Center, { style: styles.emptyContainer }, teamsLoading ? /* @__PURE__ */ React__default.createElement(Spinner, { color: colors.blue[500] }) : /* @__PURE__ */ React__default.createElement(View, { style: styles.emptyContent }, /* @__PURE__ */ React__default.createElement(Octicons, { name: "organization", size: 36, color: colors.gray[400] }), /* @__PURE__ */ React__default.createElement(Text, { style: styles.emptyText }, error ? "Error loading teams" : "No teams found"), error && /* @__PURE__ */ React__default.createElement(TouchableOpacity, { style: styles.retryButton, onPress: () => refetch() }, /* @__PURE__ */ React__default.createElement(Text, { style: styles.retryButtonText }, "Retry")))) }), /* @__PURE__ */ React__default.createElement(Fab, { size: "md", placement: "bottom right", onPress: () => navigation.navigate(NavigationRoutes.AddTeam), style: styles.fab }, /* @__PURE__ */ React__default.createElement(FabIcon, { as: AddIcon, color: "black" }))));
47
+ };
48
+ const styles = StyleSheet.create({
49
+ container: {
50
+ flex: 1,
51
+ backgroundColor: colors.gray[100]
52
+ },
53
+ content: {
88
54
  flex: 1
89
- }, ListEmptyComponent: () => {
90
- return /* @__PURE__ */ React__default.createElement(Center, { flex: 1, pt: "$20", alignItems: "center", justifyContent: "center" }, orgTeamsLoading ? /* @__PURE__ */ React__default.createElement(Spinner, { color: "$blue500" }) : /* @__PURE__ */ React__default.createElement(Text, { textAlign: "center", color: "$coolGray600" }, "No Teams found"));
91
- } })), /* @__PURE__ */ React__default.createElement(Fab, { size: "md", bg: "$white", borderRadius: "$lg", placement: "bottom right", onPress: () => navigation.navigate(NavigationRoutes.AddTeam), "$pressed-bg": "$trueGray200", "$active-bg": "$trueGray200" }, /* @__PURE__ */ React__default.createElement(FabIcon, { as: AddIcon, color: "$black" }))));
55
+ },
56
+ searchInput: {
57
+ backgroundColor: "white",
58
+ borderBottomWidth: 1,
59
+ borderBottomColor: colors.gray[200],
60
+ shadowOpacity: 0.1,
61
+ shadowRadius: 3,
62
+ marginBottom: 8
63
+ },
64
+ inputField: {
65
+ paddingHorizontal: 12,
66
+ color: "black",
67
+ fontSize: 15
68
+ },
69
+ listContent: {
70
+ paddingHorizontal: 12,
71
+ paddingBottom: 100,
72
+ paddingTop: 4
73
+ },
74
+ emptyListContent: {
75
+ paddingHorizontal: 12,
76
+ paddingBottom: 100,
77
+ paddingTop: 4,
78
+ flexGrow: 1
79
+ },
80
+ emptyContainer: {
81
+ flex: 1,
82
+ paddingTop: 80,
83
+ alignItems: "center",
84
+ justifyContent: "center"
85
+ },
86
+ emptyContent: {
87
+ alignItems: "center"
88
+ },
89
+ emptyText: {
90
+ textAlign: "center",
91
+ color: colors.gray[600],
92
+ marginTop: 16,
93
+ fontSize: 16
94
+ },
95
+ retryButton: {
96
+ marginTop: 16,
97
+ backgroundColor: colors.blue[500],
98
+ paddingHorizontal: 16,
99
+ paddingVertical: 8,
100
+ borderRadius: 6
101
+ },
102
+ retryButtonText: {
103
+ color: "white",
104
+ fontWeight: "500"
105
+ },
106
+ teamItem: {
107
+ marginVertical: 4
108
+ },
109
+ teamItemBox: {
110
+ flex: 1,
111
+ backgroundColor: "white",
112
+ paddingVertical: 16,
113
+ paddingHorizontal: 12,
114
+ borderRadius: 8,
115
+ shadowColor: "#000",
116
+ shadowOffset: {
117
+ width: 0,
118
+ height: 1
119
+ },
120
+ shadowOpacity: 0.1,
121
+ shadowRadius: 1,
122
+ borderWidth: 1,
123
+ borderColor: colors.gray[100]
124
+ },
125
+ teamItemContent: {
126
+ flex: 1,
127
+ alignItems: "center"
128
+ },
129
+ teamItemText: {
130
+ paddingLeft: 8,
131
+ fontSize: 16,
132
+ fontWeight: "500",
133
+ color: "black"
134
+ },
135
+ headerTitle: {
136
+ fontSize: 16,
137
+ fontWeight: "bold",
138
+ color: "black"
139
+ },
140
+ headerSubtitle: {
141
+ color: "black",
142
+ fontWeight: "500"
143
+ },
144
+ fab: {
145
+ backgroundColor: "#fff",
146
+ borderRadius: 28,
147
+ shadowColor: "#000",
148
+ shadowOffset: {
149
+ width: 0,
150
+ height: 2
151
+ },
152
+ shadowOpacity: 0.2,
153
+ shadowRadius: 3
154
+ }
92
155
  });
93
- const Teams = (props) => {
94
- const {
95
- orgName,
96
- organizationDetail
97
- } = useDrawerLayout();
98
- useNavigation();
99
- const [teams, setTeams] = React__default.useState([]);
100
- const [intialTeams, setInitialTeams] = useState([]);
101
- useSelector(userSelector);
102
- useIsFocused();
103
- const {
104
- data: orgTeams,
105
- loading: orgTeamsLoading,
106
- error,
107
- refetch: _refetchOrgTeams
108
- } = useGetOrganizationTeamsQuery({
109
- variables: {
110
- orgName
111
- }
112
- });
113
- useFocusEffect(React__default.useCallback(() => {
114
- if (orgName)
115
- _refetchOrgTeams({
116
- orgName
117
- });
118
- return () => {
119
- };
120
- }, [orgName]));
121
- if (orgTeamsLoading)
122
- return /* @__PURE__ */ React__default.createElement(Spinner, { color: "$blue500" });
123
- return /* @__PURE__ */ React__default.createElement(GetTeams, { orgTeams, orgTeamsLoading });
124
- };
125
- var Teams$1 = React__default.memo(Teams);export{Teams$1 as default};//# sourceMappingURL=Teams.js.map
156
+ var Teams = memo(TeamsScreen);export{Teams as default};//# sourceMappingURL=Teams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Teams.js","sources":["../../../src/screens/Teams/Teams.tsx"],"sourcesContent":["import { useIsFocused, useFocusEffect } from '@react-navigation/native';\nimport React, { useState, useEffect, useLayoutEffect } from 'react';\nimport { TouchableOpacity, Dimensions } from 'react-native';\nimport {\n SafeAreaView,\n Center,\n View,\n FlatList,\n Icon,\n Box,\n Text,\n Spinner,\n HStack,\n Fab,\n FabIcon,\n FabLabel,\n AddIcon,\n Input,\n InputField,\n} from '@admin-layout/gluestack-ui-mobile';\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, uniqBy, orderBy } from 'lodash-es';\nimport { useGetOrganizationTeamsQuery } from 'common/lib/generated/generated.js';\nimport { FontAwesome, Feather, Octicons, MaterialIcons, AntDesign } from '@expo/vector-icons';\nimport { NavigationRoutes } from '../../constants';\nimport { useDrawerLayout } from '../../hooks';\nimport VirtualizedScrollView from '../../components/VirtualizedScrollView';\nimport { StatusBar } from 'expo-status-bar';\nimport { NavigationHeader } from '../../components';\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nconst GetTeams = React.memo(({ orgTeams, orgTeamsLoading }: any) => {\n const { orgName, organizationDetail } = useDrawerLayout();\n const navigation = useNavigation<any>();\n // const currentRoute = navigationRef?.isReady() ? navigationRef?.getCurrentRoute() : null;\n const [teams, setTeams] = React.useState([]);\n const [intialTeams, setInitialTeams] = useState<any[]>([]);\n const user: any = useSelector(userSelector);\n const isFocused = useIsFocused();\n\n useEffect(() => {\n if (navigation)\n navigation.setOptions({\n headerShown: true,\n headerTitle: (props: any) => (\n <Box>\n <Text fontSize={15} fontWeight={'600'} color={'$black'}>\n Team Browser\n </Text>\n <Text color={'$black'} fontWeight={'500'}>\n {teams.length} {teams.length > 1 ? 'teams' : 'team'}\n </Text>\n </Box>\n ),\n });\n }, [teams, navigation]);\n\n React.useEffect(() => {\n if (orgTeams?.getOrganizationTeams) {\n const orgTeamsData: any =\n (orgTeams?.getOrganizationTeams &&\n orgTeams?.getOrganizationTeams?.length &&\n orderBy(orgTeams?.getOrganizationTeams, [(tm: any) => tm?.title.toLowerCase()], ['asc'])) ||\n [];\n setTeams((oldTeams: any) => uniqBy([...orgTeamsData, ...oldTeams], ({ id }) => id));\n setInitialTeams((oldTeams: any) => uniqBy([...orgTeamsData, ...oldTeams], ({ id }) => id));\n }\n }, [orgTeams]);\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((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 hideTabBar: true,\n });\n }, []);\n\n const renderOrganizationTeamItem = ({ item }: any) => {\n return (\n <TouchableOpacity\n key={item.id}\n style={{ marginTop: 1 }}\n // onPress={() => openInbox(item?.id, item.title, item?.members?.length)}\n onPress={() => viewTeam(item)}\n >\n <Box\n flex={1}\n bg={'$white'}\n hardShadow={'5'}\n py={'$4'}\n px={'$2'}\n borderBottomWidth={'$1'}\n borderBottomColor={'$warmGray200'}\n >\n <HStack flex={1} alignItems={'center'}>\n <Octicons color=\"black\" name=\"lock\" size={20} />\n <Text pl={'$2'} fontSize={16} color={'$black'}>\n {item.title}\n </Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n );\n };\n\n const searchTeams = React.useCallback(\n (v: any) => {\n if (v) {\n const searchTeam = teams.filter((o: any) => o?.title?.toLowerCase().includes(v?.toLowerCase()));\n setTeams(searchTeam);\n } else {\n setTeams(intialTeams);\n }\n },\n [intialTeams, teams],\n );\n\n return (\n <SafeAreaView flex={1}>\n <StatusBar style=\"dark\" />\n <Box flex={1}>\n <Input bg={'$white'} variant=\"underlined\" borderTopWidth={'$1'}>\n <InputField\n px={'$3'}\n alignItems=\"center\"\n type=\"text\"\n size=\"xl\"\n placeholderTextColor={'#404040'}\n color=\"$black\"\n fontSize={15}\n placeholder=\"Search for teams\"\n onChange={({ nativeEvent: { eventCount, target, text } }) => {\n searchTeams(text);\n }}\n autoCapitalize={'none'}\n autoCorrect={false}\n />\n </Input>\n <VirtualizedScrollView flex={1}>\n <FlatList\n pt={'$2'}\n flex={1}\n data={teams && teams.length > 0 ? teams : []}\n renderItem={renderOrganizationTeamItem}\n key={'all-teams-list'}\n keyExtractor={(item, index) => String(index)}\n contentContainerStyle={{\n flex: 1,\n }}\n ListEmptyComponent={() => {\n return (\n <Center flex={1} pt={'$20'} alignItems=\"center\" justifyContent=\"center\">\n {orgTeamsLoading ? (\n <Spinner color={'$blue500'} />\n ) : (\n <Text textAlign=\"center\" color={'$coolGray600'}>\n No Teams found\n </Text>\n )}\n </Center>\n );\n }}\n />\n </VirtualizedScrollView>\n\n <Fab\n size=\"md\"\n bg={'$white'}\n borderRadius={'$lg'}\n placement=\"bottom right\"\n onPress={() => navigation.navigate(NavigationRoutes.AddTeam)}\n $pressed-bg={'$trueGray200'}\n $active-bg={'$trueGray200'}\n >\n <FabIcon as={AddIcon} color={'$black'} />\n </Fab>\n {/* \n <Fab\n onPress={() => navigation.navigate(NavigationRoutes.AddTeam)}\n bg={'white'}\n _pressed={{ backgroundColor: 'muted.400' }}\n bottom={10}\n renderInPortal={false}\n shadow={3}\n size=\"sm\"\n borderRadius={'lg'}\n icon={<Icon color=\"black\" as={AntDesign} name=\"plus\" size=\"sm\" />}\n /> */}\n </Box>\n </SafeAreaView>\n );\n});\n\nconst Teams = (props: any) => {\n const { orgName, organizationDetail } = useDrawerLayout();\n const navigation = useNavigation<any>();\n // const currentRoute = navigationRef?.isReady() ? navigationRef?.getCurrentRoute() : null;\n const [teams, setTeams] = React.useState([]);\n const [intialTeams, setInitialTeams] = useState<any[]>([]);\n const user: any = useSelector(userSelector);\n const isFocused = useIsFocused();\n\n const {\n data: orgTeams,\n loading: orgTeamsLoading,\n error,\n refetch: _refetchOrgTeams,\n } = useGetOrganizationTeamsQuery({\n variables: { orgName: orgName },\n });\n\n useFocusEffect(\n React.useCallback(() => {\n // Do something when the screen is focused\n if (orgName) _refetchOrgTeams({ orgName: orgName });\n return () => {\n // Do something when the screen is unfocused\n // Useful for cleanup functions\n };\n }, [orgName]),\n );\n\n if (orgTeamsLoading) return <Spinner color={'$blue500'} />;\n return <GetTeams orgTeams={orgTeams} orgTeamsLoading={orgTeamsLoading} />;\n};\n\nexport default React.memo(Teams);\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"Teams.js","sources":["../../../src/screens/Teams/Teams.tsx"],"sourcesContent":["import { useIsFocused } from '@react-navigation/native';\nimport React, { useCallback, memo } from 'react';\nimport { TouchableOpacity, Dimensions, SafeAreaView, RefreshControl, StyleSheet } from 'react-native';\nimport {\n Center,\n View,\n FlatList,\n Box,\n Text,\n Spinner,\n HStack,\n Fab,\n FabIcon,\n AddIcon,\n Input,\n InputField,\n} from '@admin-layout/gluestack-ui-mobile';\nimport { useSelector } from 'react-redux';\nimport { userSelector } from '@adminide-stack/user-auth0-client';\nimport { useNavigation } from '@react-navigation/native';\nimport { Octicons } from '@expo/vector-icons';\nimport { NavigationRoutes } from '../../constants';\nimport { useDrawerLayout } from '../../hooks';\nimport { StatusBar } from 'expo-status-bar';\nimport colors from 'tailwindcss/colors';\nimport { useTeams } from './useTeams';\n\nconst TeamItem = memo(({ item, onPress }: { item: any; onPress: (item: any) => void }) => (\n <TouchableOpacity key={item.id} style={styles.teamItem} onPress={() => onPress(item)}>\n <Box style={styles.teamItemBox}>\n <HStack space={'md'} style={styles.teamItemContent}>\n <Octicons color={'black'} name=\"lock\" size={20} />\n <Text style={styles.teamItemText}>{item.title}</Text>\n </HStack>\n </Box>\n </TouchableOpacity>\n));\n\nconst TeamsScreen = () => {\n const { orgName } = useDrawerLayout();\n const navigation = useNavigation<any>();\n const user = useSelector(userSelector);\n const { teams, loading, teamsLoading, error, handleSearchChange, searchTerm, refetch } = useTeams(orgName);\n\n React.useEffect(() => {\n if (navigation) {\n navigation.setOptions({\n headerShown: true,\n headerTitle: () => (\n <Box>\n <Text style={styles.headerTitle}>Team Browser</Text>\n <Text style={styles.headerSubtitle}>\n {teams.length} {teams.length === 1 ? 'team' : 'teams'}\n </Text>\n </Box>\n ),\n });\n }\n }, [teams.length, navigation]);\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 hideTabBar: true,\n });\n },\n [navigation],\n );\n\n if (loading && !teams.length) {\n return (\n <Center style={{ flex: 1, backgroundColor: 'white' }}>\n <Spinner color={colors.blue[500]} size=\"large\" />\n </Center>\n );\n }\n\n return (\n <SafeAreaView style={styles.container}>\n <StatusBar style=\"dark\" />\n <Box style={styles.content}>\n <Input style={styles.searchInput} variant=\"outlined\">\n <InputField\n type=\"text\"\n size=\"xl\"\n value={searchTerm}\n placeholderTextColor={colors.gray[500]}\n style={styles.inputField}\n placeholder=\"Search for teams\"\n onChange={(event) => handleSearchChange(event.nativeEvent.text)}\n autoCapitalize={'none'}\n autoCorrect={false}\n />\n </Input>\n\n <FlatList\n contentContainerStyle={teams.length ? styles.listContent : styles.emptyListContent}\n data={teams}\n renderItem={({ item }) => <TeamItem item={item} onPress={viewTeam} />}\n keyExtractor={(item) => item._id || item.id}\n refreshControl={\n <RefreshControl\n refreshing={teamsLoading}\n onRefresh={refetch}\n colors={[colors.blue[500]]}\n tintColor={colors.blue[500]}\n />\n }\n showsVerticalScrollIndicator={false}\n ListEmptyComponent={() => (\n <Center style={styles.emptyContainer}>\n {teamsLoading ? (\n <Spinner color={colors.blue[500]} />\n ) : (\n <View style={styles.emptyContent}>\n <Octicons name=\"organization\" size={36} color={colors.gray[400]} />\n <Text style={styles.emptyText}>\n {error ? 'Error loading teams' : 'No teams found'}\n </Text>\n {error && (\n <TouchableOpacity style={styles.retryButton} onPress={() => refetch()}>\n <Text style={styles.retryButtonText}>Retry</Text>\n </TouchableOpacity>\n )}\n </View>\n )}\n </Center>\n )}\n />\n\n <Fab\n size=\"md\"\n placement=\"bottom right\"\n onPress={() => navigation.navigate(NavigationRoutes.AddTeam)}\n style={styles.fab}\n >\n <FabIcon as={AddIcon} color=\"black\" />\n </Fab>\n </Box>\n </SafeAreaView>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: colors.gray[100],\n },\n content: {\n flex: 1,\n },\n searchInput: {\n backgroundColor: 'white',\n borderBottomWidth: 1,\n borderBottomColor: colors.gray[200],\n shadowOpacity: 0.1,\n shadowRadius: 3,\n marginBottom: 8,\n },\n inputField: {\n paddingHorizontal: 12,\n color: 'black',\n fontSize: 15,\n },\n listContent: {\n paddingHorizontal: 12,\n paddingBottom: 100,\n paddingTop: 4,\n },\n emptyListContent: {\n paddingHorizontal: 12,\n paddingBottom: 100,\n paddingTop: 4,\n flexGrow: 1,\n },\n emptyContainer: {\n flex: 1,\n paddingTop: 80,\n alignItems: 'center',\n justifyContent: 'center',\n },\n emptyContent: {\n alignItems: 'center',\n },\n emptyText: {\n textAlign: 'center',\n color: colors.gray[600],\n marginTop: 16,\n fontSize: 16,\n },\n retryButton: {\n marginTop: 16,\n backgroundColor: colors.blue[500],\n paddingHorizontal: 16,\n paddingVertical: 8,\n borderRadius: 6,\n },\n retryButtonText: {\n color: 'white',\n fontWeight: '500',\n },\n teamItem: {\n marginVertical: 4,\n },\n teamItemBox: {\n flex: 1,\n backgroundColor: 'white',\n paddingVertical: 16,\n paddingHorizontal: 12,\n borderRadius: 8,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 1 },\n shadowOpacity: 0.1,\n shadowRadius: 1,\n borderWidth: 1,\n borderColor: colors.gray[100],\n },\n teamItemContent: {\n flex: 1,\n alignItems: 'center',\n },\n teamItemText: {\n paddingLeft: 8,\n fontSize: 16,\n fontWeight: '500',\n color: 'black',\n },\n headerTitle: {\n fontSize: 16,\n fontWeight: 'bold',\n color: 'black',\n },\n headerSubtitle: {\n color: 'black',\n fontWeight: '500',\n },\n fab: {\n backgroundColor: '#fff',\n borderRadius: 28,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.2,\n shadowRadius: 3,\n },\n});\n\nexport default memo(TeamsScreen);\n"],"names":["React"],"mappings":"o7BAaA,MAAM,QAAA,GAAW,KAAK,CAAC;AAAA,EACrB,IAAA;AAAA,EACA;AACF,CAGM,qBAAAA,cAAA,CAAA,aAAA,CAAC,oBAAiB,GAAK,EAAA,IAAA,CAAK,IAAI,KAAO,EAAA,MAAA,CAAO,UAAU,OAAS,EAAA,MAAM,QAAQ,IAAI,CAAA,EAAA,+CAChF,GAAI,EAAA,EAAA,KAAA,EAAO,OAAO,WACf,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAO,KAAO,EAAA,IAAA,EAAM,OAAO,MAAO,CAAA,eAAA,EAAA,+CAC9B,QAAS,EAAA,EAAA,KAAA,EAAO,SAAS,IAAK,EAAA,MAAA,EAAO,MAAM,EAAI,EAAA,CAAA,+CAC/C,IAAK,EAAA,EAAA,KAAA,EAAO,OAAO,YAAe,EAAA,EAAA,IAAA,CAAK,KAAM,CAClD,CACJ,CACJ,CAAmB,CAAA;AACvB,MAAM,cAAc,MAAM;AACxB,EAAM,MAAA;AAAA,IACJ;AAAA,MACE,eAAgB,EAAA;AACpB,EAAA,MAAM,aAAa,aAAmB,EAAA;AACtC,EAAa,YAAY,YAAY;AACrC,EAAM,MAAA;AAAA,IACJ,KAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,kBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,SAAS,OAAO,CAAA;AACpB,EAAAA,cAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,UAAA,CAAW,UAAW,CAAA;AAAA,QACpB,WAAa,EAAA,IAAA;AAAA,QACb,WAAA,EAAa,sBAAMA,cAAA,CAAA,aAAA,CAAC,GACJ,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,KAAO,EAAA,MAAA,CAAO,WAAa,EAAA,EAAA,cAAY,CAC7C,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,KAAO,EAAA,MAAA,CAAO,cACf,EAAA,EAAA,KAAA,CAAM,MAAO,EAAA,GAAA,EAAE,MAAM,MAAW,KAAA,CAAA,GAAI,MAAS,GAAA,OAClD,CACJ;AAAA,OACb,CAAA;AAAA;AACH,GACC,EAAA,CAAC,KAAM,CAAA,MAAA,EAAQ,UAAU,CAAC,CAAA;AAC7B,EAAM,MAAA,QAAA,GAAW,WAAY,CAAA,CAAC,IAAc,KAAA;AAvD9C,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAwDI,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,UAAY,EAAA;AAAA,KACb,CAAA;AAAA,GACH,EAAG,CAAC,UAAU,CAAC,CAAA;AACf,EAAI,IAAA,OAAA,IAAW,CAAC,KAAA,CAAM,MAAQ,EAAA;AAC5B,IAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,UAAO,KAAO,EAAA;AAAA,MACpB,IAAM,EAAA,CAAA;AAAA,MACN,eAAiB,EAAA;AAAA,KACnB,EAAA,+CACa,OAAQ,EAAA,EAAA,KAAA,EAAO,OAAO,IAAK,CAAA,GAAA,CAAA,EAAM,IAAK,EAAA,OAAA,EAAQ,CACnD,CAAA;AAAA;AAEV,EAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAa,KAAO,EAAA,MAAA,CAAO,SACzB,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,SAAU,EAAA,EAAA,KAAA,EAAM,MAAO,EAAA,CAAA,kBACvBA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,OAAO,MAAO,CAAA,OAAA,EAAA,kBACdA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,KAAO,EAAA,MAAA,CAAO,WAAa,EAAA,OAAA,EAAQ,UACtC,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,IAAA,EAAK,MAAO,EAAA,IAAA,EAAK,IAAK,EAAA,KAAA,EAAO,YAAY,oBAAsB,EAAA,MAAA,CAAO,IAAK,CAAA,GAAA,CAAA,EAAM,KAAO,EAAA,MAAA,CAAO,UAAY,EAAA,WAAA,EAAY,kBAAmB,EAAA,QAAA,EAAU,CAAS,KAAA,KAAA,kBAAA,CAAmB,KAAM,CAAA,WAAA,CAAY,IAAI,CAAA,EAAG,gBAAgB,MAAQ,EAAA,WAAA,EAAa,KAAO,EAAA,CACrQ,CAEA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QAAS,EAAA,EAAA,qBAAA,EAAuB,KAAM,CAAA,MAAA,GAAS,MAAO,CAAA,WAAA,GAAc,MAAO,CAAA,gBAAA,EAAkB,IAAM,EAAA,KAAA,EAAO,YAAY,CAAC;AAAA,IAChI;AAAA,GACF,qBAAOA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,IAAY,EAAA,OAAA,EAAS,QAAU,EAAA,CAAA,EAAI,YAAc,EAAA,CAAA,IAAA,KAAQ,IAAK,CAAA,GAAA,IAAO,IAAK,CAAA,EAAA,EAAI,gCAAiBA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,UAAY,EAAA,YAAA,EAAc,SAAW,EAAA,OAAA,EAAS,MAAQ,EAAA,CAAC,MAAO,CAAA,IAAA,CAAK,GAAI,CAAA,CAAA,EAAG,SAAW,EAAA,MAAA,CAAO,KAAK,GAAM,CAAA,EAAA,CAAA,EAAI,4BAA8B,EAAA,KAAA,EAAO,kBAAoB,EAAA,sBAAOA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,KAAO,EAAA,MAAA,CAAO,cACvS,EAAA,EAAA,YAAA,mBAAgBA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,KAAO,EAAA,MAAA,CAAO,IAAK,CAAA,GAAA,CAAA,EAAM,CAAK,mBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,KAAA,EAAO,MAAO,CAAA,YAAA,EAAA,kBAClEA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,IAAK,EAAA,cAAA,EAAe,IAAM,EAAA,EAAA,EAAI,OAAO,MAAO,CAAA,IAAA,CAAK,GAAM,CAAA,EAAA,CAAA,kBAChEA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,SACf,EAAA,EAAA,KAAA,GAAQ,qBAAwB,GAAA,gBACrC,CACC,EAAA,KAAA,iDAAU,gBAAiB,EAAA,EAAA,KAAA,EAAO,MAAO,CAAA,WAAA,EAAa,OAAS,EAAA,MAAM,OAAQ,EAAA,EAAA,kBACrEA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,KAAO,EAAA,MAAA,CAAO,eAAiB,EAAA,EAAA,OAAK,CAC9C,CACR,CACR,CAAW,EAAA,CAAA,kBAElBA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,IAAK,EAAA,IAAA,EAAK,SAAU,EAAA,cAAA,EAAe,OAAS,EAAA,MAAM,UAAW,CAAA,QAAA,CAAS,gBAAiB,CAAA,OAAO,CAAG,EAAA,KAAA,EAAO,MAAO,CAAA,GAAA,EAAA,kBAC/GA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,EAAI,EAAA,OAAA,EAAS,KAAM,EAAA,OAAA,EAAQ,CACxC,CACJ,CACJ,CAAA;AACR,CAAA;AACA,MAAM,MAAA,GAAS,WAAW,MAAO,CAAA;AAAA,EAC/B,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,CAAA;AAAA,IACN,eAAA,EAAiB,OAAO,IAAK,CAAA,GAAA;AAAA,GAC/B;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA;AAAA,GACR;AAAA,EACA,WAAa,EAAA;AAAA,IACX,eAAiB,EAAA,OAAA;AAAA,IACjB,iBAAmB,EAAA,CAAA;AAAA,IACnB,iBAAA,EAAmB,OAAO,IAAK,CAAA,GAAA,CAAA;AAAA,IAC/B,aAAe,EAAA,GAAA;AAAA,IACf,YAAc,EAAA,CAAA;AAAA,IACd,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,UAAY,EAAA;AAAA,IACV,iBAAmB,EAAA,EAAA;AAAA,IACnB,KAAO,EAAA,OAAA;AAAA,IACP,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,WAAa,EAAA;AAAA,IACX,iBAAmB,EAAA,EAAA;AAAA,IACnB,aAAe,EAAA,GAAA;AAAA,IACf,UAAY,EAAA;AAAA,GACd;AAAA,EACA,gBAAkB,EAAA;AAAA,IAChB,iBAAmB,EAAA,EAAA;AAAA,IACnB,aAAe,EAAA,GAAA;AAAA,IACf,UAAY,EAAA,CAAA;AAAA,IACZ,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,IAAM,EAAA,CAAA;AAAA,IACN,UAAY,EAAA,EAAA;AAAA,IACZ,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,UAAY,EAAA;AAAA,GACd;AAAA,EACA,SAAW,EAAA;AAAA,IACT,SAAW,EAAA,QAAA;AAAA,IACX,KAAA,EAAO,OAAO,IAAK,CAAA,GAAA,CAAA;AAAA,IACnB,SAAW,EAAA,EAAA;AAAA,IACX,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,WAAa,EAAA;AAAA,IACX,SAAW,EAAA,EAAA;AAAA,IACX,eAAA,EAAiB,OAAO,IAAK,CAAA,GAAA,CAAA;AAAA,IAC7B,iBAAmB,EAAA,EAAA;AAAA,IACnB,eAAiB,EAAA,CAAA;AAAA,IACjB,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,KAAO,EAAA,OAAA;AAAA,IACP,UAAY,EAAA;AAAA,GACd;AAAA,EACA,QAAU,EAAA;AAAA,IACR,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,CAAA;AAAA,IACN,eAAiB,EAAA,OAAA;AAAA,IACjB,eAAiB,EAAA,EAAA;AAAA,IACjB,iBAAmB,EAAA,EAAA;AAAA,IACnB,YAAc,EAAA,CAAA;AAAA,IACd,WAAa,EAAA,MAAA;AAAA,IACb,YAAc,EAAA;AAAA,MACZ,KAAO,EAAA,CAAA;AAAA,MACP,MAAQ,EAAA;AAAA,KACV;AAAA,IACA,aAAe,EAAA,GAAA;AAAA,IACf,YAAc,EAAA,CAAA;AAAA,IACd,WAAa,EAAA,CAAA;AAAA,IACb,WAAA,EAAa,OAAO,IAAK,CAAA,GAAA;AAAA,GAC3B;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,CAAA;AAAA,IACN,UAAY,EAAA;AAAA,GACd;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,WAAa,EAAA,CAAA;AAAA,IACb,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,KAAA;AAAA,IACZ,KAAO,EAAA;AAAA,GACT;AAAA,EACA,WAAa,EAAA;AAAA,IACX,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA,MAAA;AAAA,IACZ,KAAO,EAAA;AAAA,GACT;AAAA,EACA,cAAgB,EAAA;AAAA,IACd,KAAO,EAAA,OAAA;AAAA,IACP,UAAY,EAAA;AAAA,GACd;AAAA,EACA,GAAK,EAAA;AAAA,IACH,eAAiB,EAAA,MAAA;AAAA,IACjB,YAAc,EAAA,EAAA;AAAA,IACd,WAAa,EAAA,MAAA;AAAA,IACb,YAAc,EAAA;AAAA,MACZ,KAAO,EAAA,CAAA;AAAA,MACP,MAAQ,EAAA;AAAA,KACV;AAAA,IACA,aAAe,EAAA,GAAA;AAAA,IACf,YAAc,EAAA;AAAA;AAElB,CAAC,CAAA;AACD,YAAe,KAAK,WAAW,CAAA"}
@@ -0,0 +1,41 @@
1
+ import {useState,useCallback,useEffect}from'react';import {useTeamsQuery}from'../../queries/slackuiQueries.js';import'lodash-es';const useTeams = (orgName) => {
2
+ const [searchTerm, setSearchTerm] = useState("");
3
+ const [teams, setTeams] = useState([]);
4
+ const [initialTeams, setInitialTeams] = useState([]);
5
+ const [teamsLoading, setTeamsLoading] = useState(false);
6
+ const {
7
+ data,
8
+ loading,
9
+ error,
10
+ refetch: refetchTeamsQuery
11
+ } = useTeamsQuery(orgName);
12
+ const handleSearchChange = useCallback((text) => {
13
+ setSearchTerm(text);
14
+ if (!text.trim()) {
15
+ setTeams(initialTeams);
16
+ return;
17
+ }
18
+ const filteredTeams = initialTeams.filter((team) => {
19
+ var _a;
20
+ return (_a = team == null ? void 0 : team.title) == null ? void 0 : _a.toLowerCase().includes(text.toLowerCase());
21
+ });
22
+ setTeams(filteredTeams);
23
+ }, [initialTeams]);
24
+ const refetch = useCallback(() => {
25
+ setTeamsLoading(true);
26
+ return refetchTeamsQuery();
27
+ }, [refetchTeamsQuery]);
28
+ useEffect(() => {
29
+ setTeams([]);
30
+ setInitialTeams([]);
31
+ }, [orgName]);
32
+ return {
33
+ teams,
34
+ loading,
35
+ teamsLoading,
36
+ error,
37
+ handleSearchChange,
38
+ searchTerm,
39
+ refetch
40
+ };
41
+ };export{useTeams};//# sourceMappingURL=useTeams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTeams.js","sources":["../../../src/screens/Teams/useTeams.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect } from 'react';\nimport { useTeamsQuery } from '../../queries/slackuiQueries';\nimport { orderBy, uniqBy } from 'lodash-es';\n\nexport const useTeams = (orgName: string) => {\n const [searchTerm, setSearchTerm] = useState('');\n const [teams, setTeams] = useState<any[]>([]);\n const [initialTeams, setInitialTeams] = useState<any[]>([]);\n const [teamsLoading, setTeamsLoading] = useState(false);\n\n const {\n data,\n loading,\n error,\n refetch: refetchTeamsQuery,\n } = useTeamsQuery(orgName, {\n fetchPolicy: 'cache-and-network',\n onCompleted: (data) => {\n if (data?.getOrganizationTeams?.length) {\n const orgTeamsData = data.getOrganizationTeams || [];\n const sortedTeams =\n orgTeamsData.length > 0\n ? orderBy(orgTeamsData, [(tm: any) => tm?.title?.toLowerCase()], ['asc'])\n : [];\n\n const uniqueTeams = uniqBy([...sortedTeams], ({ _id }) => _id);\n\n setInitialTeams(uniqueTeams);\n setTeams(uniqueTeams);\n }\n setTeamsLoading(false);\n },\n onError: () => {\n setTeamsLoading(false);\n },\n });\n\n const handleSearchChange = useCallback(\n (text: string) => {\n setSearchTerm(text);\n\n if (!text.trim()) {\n setTeams(initialTeams);\n return;\n }\n\n const filteredTeams = initialTeams.filter((team: any) =>\n team?.title?.toLowerCase().includes(text.toLowerCase()),\n );\n\n setTeams(filteredTeams);\n },\n [initialTeams],\n );\n\n const refetch = useCallback(() => {\n setTeamsLoading(true);\n return refetchTeamsQuery();\n }, [refetchTeamsQuery]);\n\n // Reset teams when orgName changes\n useEffect(() => {\n setTeams([]);\n setInitialTeams([]);\n }, [orgName]);\n\n return {\n teams,\n loading,\n teamsLoading,\n error,\n handleSearchChange,\n searchTerm,\n refetch,\n };\n};\n"],"names":[],"mappings":"iIAGa,MAAA,QAAA,GAAW,CAAC,OAAoB,KAAA;AAC3C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,QAAA,CAAgB,EAAE,CAAA;AAC5C,EAAA,MAAM,CAAC,YAAc,EAAA,eAAe,CAAI,GAAA,QAAA,CAAgB,EAAE,CAAA;AAC1D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AACtD,EAAM,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAS,EAAA;AAAA,GACX,GAAI,cAAc,OAiBjB,CAAA;AACD,EAAM,MAAA,kBAAA,GAAqB,WAAY,CAAA,CAAC,IAAiB,KAAA;AACvD,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAI,IAAA,CAAC,IAAK,CAAA,IAAA,EAAQ,EAAA;AAChB,MAAA,QAAA,CAAS,YAAY,CAAA;AACrB,MAAA;AAAA;AAEF,IAAA,MAAM,aAAgB,GAAA,YAAA,CAAa,MAAO,CAAA,CAAC,IAAW,KAAA;AArC1D,MAAA,IAAA,EAAA;AAqC6D,MAAA,OAAA,CAAA,EAAA,GAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,KAAN,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAa,WAAc,EAAA,CAAA,QAAA,CAAS,KAAK,WAAY,EAAA,CAAA;AAAA,KAAE,CAAA;AAChH,IAAA,QAAA,CAAS,aAAa,CAAA;AAAA,GACxB,EAAG,CAAC,YAAY,CAAC,CAAA;AACjB,EAAM,MAAA,OAAA,GAAU,YAAY,MAAM;AAChC,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,OAAO,iBAAkB,EAAA;AAAA,GAC3B,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAGtB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,GACpB,EAAG,CAAC,OAAO,CAAC,CAAA;AACZ,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,kBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACF"}
@@ -1,5 +1,5 @@
1
- import React__default from'react';import {View,Text}from'@admin-layout/gluestack-ui-mobile';const WikiScreen = ({
1
+ import React__default from'react';import {Box,Text}from'@admin-layout/gluestack-ui-mobile';const WikiScreen = ({
2
2
  navigation
3
3
  }) => {
4
- return /* @__PURE__ */ React__default.createElement(View, { py: "$2", bg: "#fff", flex: 1, justifyContent: "center", alignItems: "center" }, /* @__PURE__ */ React__default.createElement(Text, { pb: "$12", textAlign: "center", fontSize: "$md", fontWeight: "$bold" }, "Wiki"));
4
+ return /* @__PURE__ */ React__default.createElement(Box, { className: "py-2 bg-white flex-1 justify-center items-center" }, /* @__PURE__ */ React__default.createElement(Text, { className: "pb-12 text-center text-base font-bold" }, "Wiki"));
5
5
  };export{WikiScreen as default};//# sourceMappingURL=WikiScreen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WikiScreen.js","sources":["../../../src/screens/Wiki/WikiScreen.tsx"],"sourcesContent":["import { Ionicons } from '@expo/vector-icons';\nimport { StackNavigationProp } from '@react-navigation/stack';\nimport React, { useState } from 'react';\nimport { Pressable, TouchableOpacity } from 'react-native';\nimport { Actionsheet, Box, Text, Button, Image, View, FlatList } from '@admin-layout/gluestack-ui-mobile';\nimport { StatusBar } from 'expo-status-bar';\nimport { Header, Tiles } from '../../components';\nimport { NavigationRoutes } from '../../constants/routes';\ntype WikiScreenProps = {\n navigation: any;\n};\n\nconst WikiScreen = ({ navigation }: WikiScreenProps) => {\n return (\n <View py={'$2'} bg={'#fff'} flex={1} justifyContent={'center'} alignItems={'center'}>\n <Text pb={'$12'} textAlign={'center'} fontSize={'$md'} fontWeight={'$bold'}>\n Wiki\n </Text>\n </View>\n );\n};\n\nexport default WikiScreen;\n"],"names":["React"],"mappings":"4FAWA,MAAM,aAAa,CAAC;AAAA,EAClB;AACF,CAAuB,KAAA;AACrB,EAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,QAAK,EAAI,EAAA,IAAA,EAAM,IAAI,MAAQ,EAAA,IAAA,EAAM,CAAG,EAAA,cAAA,EAAgB,QAAU,EAAA,UAAA,EAAY,4BACvEA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,EAAI,EAAA,KAAA,EAAO,SAAW,EAAA,QAAA,EAAU,UAAU,KAAO,EAAA,UAAA,EAAY,OAAS,EAAA,EAAA,MAE5E,CACJ,CAAA;AACR"}
1
+ {"version":3,"file":"WikiScreen.js","sources":["../../../src/screens/Wiki/WikiScreen.tsx"],"sourcesContent":["import { Ionicons } from '@expo/vector-icons';\nimport { StackNavigationProp } from '@react-navigation/stack';\nimport React, { useState } from 'react';\nimport { Pressable, TouchableOpacity } from 'react-native';\nimport { Actionsheet, Box, Text, Button, Image, View, FlatList } from '@admin-layout/gluestack-ui-mobile';\nimport { StatusBar } from 'expo-status-bar';\nimport { Header, Tiles } from '../../components';\nimport { NavigationRoutes } from '../../constants/routes';\ntype WikiScreenProps = {\n navigation: any;\n};\n\nconst WikiScreen = ({ navigation }: WikiScreenProps) => {\n return (\n <Box className=\"py-2 bg-white flex-1 justify-center items-center\">\n <Text className=\"pb-12 text-center text-base font-bold\">Wiki</Text>\n </Box>\n );\n};\n\nexport default WikiScreen;\n"],"names":["React"],"mappings":"2FAWA,MAAM,aAAa,CAAC;AAAA,EAClB;AACF,CAAuB,KAAA;AACrB,EAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,OAAI,SAAU,EAAA,kDAAA,EAAA,+CACX,IAAK,EAAA,EAAA,SAAA,EAAU,uCAAwC,EAAA,EAAA,MAAI,CAChE,CAAA;AACR"}
@@ -1,6 +1,6 @@
1
- import colors from'../constants/Colors.js';const config = {
1
+ import Colors from'../constants/Colors.js';const config = {
2
2
  colors: {
3
- primary: colors.primaryBgColor
3
+ primary: Colors.primaryBgColor
4
4
  },
5
5
  components: {
6
6
  Button: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/theme/index.ts"],"sourcesContent":["import colors from '../constants/Colors';\n\nconst config = {\n colors: {\n // Add new color\n primary: colors.primaryBgColor,\n },\n components: {\n Button: {\n // Can simply pass default props to change default behaviour of components.\n baseStyle: {},\n defaultProps: {},\n },\n },\n};\n\nexport const customTheme = config;\n"],"names":[],"mappings":"2CACA,MAAM,MAAS,GAAA;AAAA,EACb,MAAQ,EAAA;AAAA,IAEN,SAAS,MAAO,CAAA;AAAA,GAClB;AAAA,EACA,UAAY,EAAA;AAAA,IACV,MAAQ,EAAA;AAAA,MAEN,WAAW,EAAC;AAAA,MACZ,cAAc;AAAC;AACjB;AAEJ,CAAA;AACO,MAAM,WAAc,GAAA"}
1
+ {"version":3,"file":"index.js","sources":["../../src/theme/index.ts"],"sourcesContent":["import colors from '../constants/Colors';\n\nconst config = {\n colors: {\n // Add new color\n primary: colors.primaryBgColor,\n },\n components: {\n Button: {\n // Can simply pass default props to change default behaviour of components.\n baseStyle: {},\n defaultProps: {},\n },\n },\n};\n\nexport const customTheme = config;\n"],"names":["colors"],"mappings":"2CACA,MAAM,MAAS,GAAA;AAAA,EACb,MAAQ,EAAA;AAAA,IAEN,SAASA,MAAO,CAAA;AAAA,GAClB;AAAA,EACA,UAAY,EAAA;AAAA,IACV,MAAQ,EAAA;AAAA,MAEN,WAAW,EAAC;AAAA,MACZ,cAAc;AAAC;AACjB;AAEJ,CAAA;AACO,MAAM,WAAc,GAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messenger-box/slack-ui-mobile",
3
- "version": "10.0.3-alpha.7",
3
+ "version": "10.0.3-alpha.74",
4
4
  "description": "Slack ui ref mobile package",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -23,7 +23,7 @@
23
23
  "watch-ts": "tsc --watch"
24
24
  },
25
25
  "dependencies": {
26
- "@messenger-box/platform-mobile": "10.0.3-alpha.7"
26
+ "@messenger-box/platform-mobile": "10.0.3-alpha.74"
27
27
  },
28
28
  "devDependencies": {
29
29
  "cp-cli": "^2.0.0"
@@ -38,7 +38,9 @@
38
38
  "@common-stack/core": "*",
39
39
  "@expo/vector-icons": "*",
40
40
  "@react-native-async-storage/async-storage": "*",
41
- "lodash": "*"
41
+ "@xstate/react": "*",
42
+ "lodash": "*",
43
+ "xstate": "*"
42
44
  },
43
45
  "publishConfig": {
44
46
  "access": "public"
@@ -46,5 +48,5 @@
46
48
  "typescript": {
47
49
  "definition": "lib/index.d.ts"
48
50
  },
49
- "gitHead": "6c95ed48d37a8f95b0c3db71c1922c0e9e76bcfe"
51
+ "gitHead": "2bfc901f9f0a9da1919294e1ebd8246edec0a3b0"
50
52
  }
@@ -1,61 +0,0 @@
1
- import React__default from'react';import {Login}from'../screens/Login.js';import'../screens/Home/HomeScreen.js';import'@adminide-stack/user-auth0-client';import'@messenger-box/platform-mobile';import {FontAwesome5}from'@expo/vector-icons';import'expo-font';import'expo-splash-screen';import'react-native';import'../hooks/useDrawerLayout.js';import'../hooks/useExpoNotificationProvider.js';import'@workbench-stack/core';import {withLifeCycleInteractionsManaged}from'@admin-layout/gluestack-ui-mobile';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 NavigationHeader from'../components/NavigationHeader/NavigationHeader.js';import'@react-navigation/elements';import {NavigationRoutes}from'../constants/routes.js';import {Feature,navigationRef}from'@common-stack/client-react';import'../components/NavigationHeader/InboxNavigationHeader.js';import'../components/WorkSpaceDrawer/WorkSpaceDrawer.js';import'../components/Channels/ChannelsByAlphabeticalAccordion.js';import'../components/SlackSearchInput/index.js';import'common';import'common/lib/generated/generated.js';import'expo-status-bar';import'react-redux';import'lodash-es';import'../constants/device.js';import'../constants/globalStyles.js';import'../constants/Layout.js';import'@react-navigation/native';import ActivityScreen from'../screens/Activity/ActivityScreen.js';import'../screens/Search/SearchScreen.js';import'../screens/Search/SearchChannelPeople.js';import'../screens/Search/SearchAddChannel.js';import'../screens/Search/JumpTo.js';import'../screens/Channels/Channels.js';import'../screens/Channels/AddChannel.js';import'../screens/Channels/Add/AddName.js';import'../screens/Channels/Add/AddVisibility.js';import'../screens/Peoples/People.js';import'../screens/Peoples/AddByEmail.js';import'expo-contacts';import'../config/env-config.js';import'../screens/Teams/Team.js';import'../screens/Teams/Teams.js';import'../screens/Organization/CreateOrganization.js';import'../screens/Organization/InviteOrganizationMembers.js';import'../screens/Organization/InitializeOrganizationChannel.js';import'../screens/Organization/InitialChannelOnboarding.js';import'../screens/Organization/AddWorkspace.js';var __defProp = Object.defineProperty;
2
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
- var __hasOwnProp = Object.prototype.hasOwnProperty;
4
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __spreadValues = (a, b) => {
7
- for (var prop in b || (b = {}))
8
- if (__hasOwnProp.call(b, prop))
9
- __defNormalProp(a, prop, b[prop]);
10
- if (__getOwnPropSymbols)
11
- for (var prop of __getOwnPropSymbols(b)) {
12
- if (__propIsEnum.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- }
15
- return a;
16
- };
17
- const activityConfig = {
18
- ["//:orgName/l/activity"]: {
19
- exact: true,
20
- name: "Activity",
21
- menu_position: "bottom",
22
- auth: true,
23
- props: {
24
- initialParams: {
25
- orgName: null
26
- },
27
- component: withLifeCycleInteractionsManaged(ActivityScreen, null, 100),
28
- unauthenticatedComponent: (props) => /* @__PURE__ */ React__default.createElement(Login, __spreadValues({}, props)),
29
- options: {
30
- headerShown: true,
31
- header: (props) => /* @__PURE__ */ React__default.createElement(NavigationHeader, __spreadValues({}, props)),
32
- title: "Activity",
33
- headerTitle: "Activity",
34
- priority: 3,
35
- tabBarActiveTintColor: "#000",
36
- tabBarInactiveTintColor: "black",
37
- tabBarIcon: ({
38
- color
39
- }) => /* @__PURE__ */ React__default.createElement(FontAwesome5, { name: "bell", size: 24, color }),
40
- tabBarLabel: "Activity",
41
- gestureEnabled: false,
42
- swipeEnabled: false
43
- },
44
- listeners: ({
45
- navigation
46
- }) => ({
47
- tabPress: (e) => {
48
- var _a, _b, _c, _d;
49
- e.preventDefault();
50
- const orgName = ((_a = navigationRef) == null ? void 0 : _a.isReady()) ? (_d = (_c = (_b = navigationRef) == null ? void 0 : _b.getCurrentRoute()) == null ? void 0 : _c.params) == null ? void 0 : _d.orgName : null;
51
- navigation.navigate(NavigationRoutes.Activity, {
52
- orgName
53
- });
54
- }
55
- })
56
- }
57
- }
58
- };
59
- const activityFeature = new Feature({
60
- routeConfig: activityConfig
61
- });export{activityFeature};//# sourceMappingURL=ActivityNavigator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ActivityNavigator.js","sources":["../../src/navigation/ActivityNavigator.tsx"],"sourcesContent":["import React from 'react';\nimport { Login, Activity } from '../screens';\nimport { NavigationHeader, LoadingSpinnerDefault } from '../components';\nimport { Feature, navigationRef } from '@common-stack/client-react';\nimport { LifecyclePhase } from '@workbench-stack/core';\nimport { Lifecycle, withLifeCycleInteractionsManaged } from '@admin-layout/gluestack-ui-mobile';\nimport { Ionicons, MaterialIcons, FontAwesome, FontAwesome5, AntDesign } from '@expo/vector-icons';\nimport { Platform } from 'react-native';\nimport { NavigationRoutes } from '../constants';\n\nconst activityConfig = {\n ['//:orgName/l/activity']: {\n exact: true,\n name: 'Activity',\n menu_position: 'bottom',\n auth: true,\n props: {\n initialParams: { orgName: null },\n component: withLifeCycleInteractionsManaged(Activity, null, 100),\n // component: (props: any) => (\n // <Lifecycle renderWhenPhase={LifecyclePhase.Restored} loadingRenderer={LoadingSpinnerDefault}>\n // <Activity {...props} />\n // </Lifecycle>\n // ),\n unauthenticatedComponent: (props: any) => <Login {...props} />,\n options: {\n headerShown: true,\n header: (props: any) => <NavigationHeader {...props} />,\n title: 'Activity',\n headerTitle: 'Activity',\n priority: 3,\n tabBarActiveTintColor: '#000',\n tabBarInactiveTintColor: 'black',\n tabBarIcon: ({ color }: { color: any }) => <FontAwesome5 name=\"bell\" size={24} color={color} />,\n tabBarLabel: 'Activity',\n gestureEnabled: false,\n swipeEnabled: false,\n },\n listeners: ({ navigation }: any) => ({\n tabPress: (e) => {\n // Prevent default action\n e.preventDefault();\n const orgName = navigationRef?.isReady() ? navigationRef?.getCurrentRoute()?.params?.orgName : null;\n navigation.navigate(NavigationRoutes.Activity, { orgName });\n },\n }),\n },\n },\n};\n\nexport const activityFeature = new Feature({\n routeConfig: activityConfig as any,\n});\n"],"names":["Activity","React"],"mappings":";;;;;;;;;;;;;;;;AASA,MAAM,cAAiB,GAAA;AAAA,EACrB,CAAC,uBAA0B,GAAA;AAAA,IACzB,KAAO,EAAA,IAAA;AAAA,IACP,IAAM,EAAA,UAAA;AAAA,IACN,aAAe,EAAA,QAAA;AAAA,IACf,IAAM,EAAA,IAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,aAAe,EAAA;AAAA,QACb,OAAS,EAAA;AAAA,OACX;AAAA,MACA,SAAW,EAAA,gCAAA,CAAiCA,cAAU,EAAA,IAAA,EAAM,GAAG,CAAA;AAAA,MAM/D,wBAA0B,EAAA,CAAC,KAAe,qBAAAC,cAAA,CAAA,aAAA,CAAC,0BAAU,KAAO,CAAA,CAAA;AAAA,MAC5D,OAAS,EAAA;AAAA,QACP,WAAa,EAAA,IAAA;AAAA,QACb,MAAQ,EAAA,CAAC,KAAe,qBAAAA,cAAA,CAAA,aAAA,CAAC,qCAAqB,KAAO,CAAA,CAAA;AAAA,QACrD,KAAO,EAAA,UAAA;AAAA,QACP,WAAa,EAAA,UAAA;AAAA,QACb,QAAU,EAAA,CAAA;AAAA,QACV,qBAAuB,EAAA,MAAA;AAAA,QACvB,uBAAyB,EAAA,OAAA;AAAA,QACzB,YAAY,CAAC;AAAA,UACX;AAAA,8BAGKA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAa,MAAK,MAAO,EAAA,IAAA,EAAM,IAAI,KAAc,EAAA,CAAA;AAAA,QACxD,WAAa,EAAA,UAAA;AAAA,QACb,cAAgB,EAAA,KAAA;AAAA,QAChB,YAAc,EAAA;AAAA,OAChB;AAAA,MACA,WAAW,CAAC;AAAA,QACV;AAAA,OACU,MAAA;AAAA,QACV,UAAU,CAAK,CAAA,KAAA;AA9CvB,UAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAgDU,UAAA,CAAA,CAAE,cAAe,EAAA;AACjB,UAAM,MAAA,OAAA,GAAA,CAAA,CAAU,0CAAe,OAAY,EAAA,IAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,aAAA,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,sBAAf,IAAkC,GAAA,MAAA,GAAA,EAAA,CAAA,MAAA,KAAlC,mBAA0C,OAAU,GAAA,IAAA;AAC/F,UAAW,UAAA,CAAA,QAAA,CAAS,iBAAiB,QAAU,EAAA;AAAA,YAC7C;AAAA,WACD,CAAA;AAAA;AACH,OACF;AAAA;AACF;AAEJ,CAAA;AACa,MAAA,eAAA,GAAkB,IAAI,OAAQ,CAAA;AAAA,EACzC,WAAa,EAAA;AACf,CAAC"}