@messenger-box/slack-ui-browser 10.0.3-alpha.176

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 (61) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +21 -0
  3. package/lib/components/Home/Channels.js +62 -0
  4. package/lib/components/Home/Channels.js.map +1 -0
  5. package/lib/components/Home/DirectChannels.js +92 -0
  6. package/lib/components/Home/DirectChannels.js.map +1 -0
  7. package/lib/components/Home/InviteMembers.js +70 -0
  8. package/lib/components/Home/InviteMembers.js.map +1 -0
  9. package/lib/components/Home/Teams.js +62 -0
  10. package/lib/components/Home/Teams.js.map +1 -0
  11. package/lib/components/Home/TopCommonSlider.js +35 -0
  12. package/lib/components/Home/TopCommonSlider.js.map +1 -0
  13. package/lib/compute.js +223 -0
  14. package/lib/compute.js.map +1 -0
  15. package/lib/constants/routes.js +63 -0
  16. package/lib/constants/routes.js.map +1 -0
  17. package/lib/hooks/useOptimizedChannelsQueries.js +107 -0
  18. package/lib/hooks/useOptimizedChannelsQueries.js.map +1 -0
  19. package/lib/hooks/useRouteState.js +193 -0
  20. package/lib/hooks/useRouteState.js.map +1 -0
  21. package/lib/index.js +1 -0
  22. package/lib/index.js.map +1 -0
  23. package/lib/machines/routeMachine.js +804 -0
  24. package/lib/machines/routeMachine.js.map +1 -0
  25. package/lib/module.js +3 -0
  26. package/lib/module.js.map +1 -0
  27. package/lib/queries/slackuiQueries.js +144 -0
  28. package/lib/queries/slackuiQueries.js.map +1 -0
  29. package/lib/routes.json +260 -0
  30. package/lib/screens/Home/HomeScreen.js +664 -0
  31. package/lib/screens/Home/HomeScreen.js.map +1 -0
  32. package/lib/screens/Home/index.js +1 -0
  33. package/lib/screens/Home/index.js.map +1 -0
  34. package/package.json +52 -0
  35. package/rollup.config.mjs +41 -0
  36. package/src/components/Home/Channels.tsx +135 -0
  37. package/src/components/Home/DirectChannels.tsx +185 -0
  38. package/src/components/Home/InviteMembers.tsx +134 -0
  39. package/src/components/Home/Teams.tsx +129 -0
  40. package/src/components/Home/TopCommonSlider.tsx +70 -0
  41. package/src/components/Home/index.ts +5 -0
  42. package/src/components/index.ts +1 -0
  43. package/src/compute.ts +156 -0
  44. package/src/constants/index.ts +1 -0
  45. package/src/constants/routes.ts +92 -0
  46. package/src/hooks/index.ts +3 -0
  47. package/src/hooks/useOptimizedChannelsQueries.ts +165 -0
  48. package/src/hooks/useRouteState.ts +253 -0
  49. package/src/icons.ts +137 -0
  50. package/src/index.ts +11 -0
  51. package/src/machines/index.ts +9 -0
  52. package/src/machines/routeMachine.ts +682 -0
  53. package/src/module.tsx +6 -0
  54. package/src/queries/index.ts +1 -0
  55. package/src/queries/slackuiQueries.ts +227 -0
  56. package/src/screens/Home/HomeScreen.tsx +1308 -0
  57. package/src/screens/Home/index.ts +4 -0
  58. package/src/screens/NewChannel/NewChannelScreen.tsx +188 -0
  59. package/src/screens/NewChannel/index.ts +2 -0
  60. package/src/screens/index.ts +1 -0
  61. package/tsconfig.json +21 -0
package/lib/compute.js ADDED
@@ -0,0 +1,223 @@
1
+ import { getFilteredRoutes } from '@common-stack/client-react/lib/utils/filteredRoutes.js';
2
+ import { IMenuPosition } from '@common-stack/client-react';
3
+ import { SLACK_UI_ROUTES, SLACK_UI_ROUTE_KEYS } from './constants/routes.js';
4
+ const slackUiPageStore = [{
5
+ key: SLACK_UI_ROUTE_KEYS.HOME,
6
+ path: SLACK_UI_ROUTES.HOME,
7
+ name: "Home",
8
+ exact: false,
9
+ position: IMenuPosition.Middle,
10
+ auth: true,
11
+ icon: "AiOutlineHome",
12
+ tab: "Home",
13
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
14
+ hasComponent: true,
15
+ queries: {
16
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
17
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
18
+ }
19
+ },
20
+ // Channel routes
21
+ {
22
+ key: SLACK_UI_ROUTE_KEYS.CHANNELS,
23
+ path: SLACK_UI_ROUTES.CHANNELS,
24
+ name: "Channel",
25
+ exact: true,
26
+ auth: true,
27
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
28
+ hasComponent: true,
29
+ queries: {
30
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
31
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
32
+ }
33
+ }, {
34
+ key: SLACK_UI_ROUTE_KEYS.CHANNELS_NEW,
35
+ path: SLACK_UI_ROUTES.CHANNELS_NEW,
36
+ name: "New Channel",
37
+ exact: true,
38
+ auth: true,
39
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
40
+ hasComponent: true,
41
+ queries: {
42
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
43
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
44
+ }
45
+ },
46
+ // Message routes
47
+ {
48
+ key: SLACK_UI_ROUTE_KEYS.MESSAGES,
49
+ path: SLACK_UI_ROUTES.MESSAGES,
50
+ name: "Direct Message",
51
+ exact: true,
52
+ auth: true,
53
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
54
+ hasComponent: true,
55
+ queries: {
56
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
57
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
58
+ }
59
+ }, {
60
+ key: SLACK_UI_ROUTE_KEYS.MESSAGES_NEW,
61
+ path: SLACK_UI_ROUTES.MESSAGES_NEW,
62
+ name: "New Message",
63
+ exact: true,
64
+ auth: true,
65
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
66
+ hasComponent: true,
67
+ queries: {
68
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
69
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
70
+ }
71
+ },
72
+ // Team routes
73
+ {
74
+ key: SLACK_UI_ROUTE_KEYS.TEAMS,
75
+ path: SLACK_UI_ROUTES.TEAMS,
76
+ name: "Team",
77
+ exact: true,
78
+ auth: true,
79
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
80
+ hasComponent: true,
81
+ queries: {
82
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
83
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
84
+ }
85
+ }, {
86
+ key: SLACK_UI_ROUTE_KEYS.TEAMS_NEW,
87
+ path: SLACK_UI_ROUTES.TEAMS_NEW,
88
+ name: "New Team",
89
+ exact: true,
90
+ auth: true,
91
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
92
+ hasComponent: true,
93
+ queries: {
94
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
95
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
96
+ }
97
+ },
98
+ // Invite routes
99
+ {
100
+ key: SLACK_UI_ROUTE_KEYS.INVITE,
101
+ path: SLACK_UI_ROUTES.INVITE,
102
+ name: "Invite Members",
103
+ exact: true,
104
+ auth: true,
105
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
106
+ hasComponent: true,
107
+ queries: {
108
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
109
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
110
+ }
111
+ }, {
112
+ key: SLACK_UI_ROUTE_KEYS.INVITE_CONTACTS,
113
+ path: SLACK_UI_ROUTES.INVITE_CONTACTS,
114
+ name: "Invite from Contacts",
115
+ exact: true,
116
+ auth: true,
117
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
118
+ hasComponent: true,
119
+ queries: {
120
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
121
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
122
+ }
123
+ }, {
124
+ key: SLACK_UI_ROUTE_KEYS.INVITE_EMAIL,
125
+ path: SLACK_UI_ROUTES.INVITE_EMAIL,
126
+ name: "Invite by Email",
127
+ exact: true,
128
+ auth: true,
129
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
130
+ hasComponent: true,
131
+ queries: {
132
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
133
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
134
+ }
135
+ }, {
136
+ key: SLACK_UI_ROUTE_KEYS.INVITE_LINK,
137
+ path: SLACK_UI_ROUTES.INVITE_LINK,
138
+ name: "Invite Link",
139
+ exact: true,
140
+ auth: true,
141
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
142
+ hasComponent: true,
143
+ queries: {
144
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
145
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
146
+ }
147
+ },
148
+ // Other routes
149
+ {
150
+ key: SLACK_UI_ROUTE_KEYS.THREADS,
151
+ path: SLACK_UI_ROUTES.THREADS,
152
+ name: "Threads",
153
+ exact: true,
154
+ auth: true,
155
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
156
+ hasComponent: true,
157
+ queries: {
158
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
159
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
160
+ }
161
+ }, {
162
+ key: SLACK_UI_ROUTE_KEYS.ACTIVITY,
163
+ path: SLACK_UI_ROUTES.ACTIVITY,
164
+ name: "Activity",
165
+ exact: true,
166
+ auth: true,
167
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
168
+ hasComponent: true,
169
+ queries: {
170
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
171
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
172
+ }
173
+ }, {
174
+ key: SLACK_UI_ROUTE_KEYS.DRAFTS,
175
+ path: SLACK_UI_ROUTES.DRAFTS,
176
+ name: "Drafts",
177
+ exact: true,
178
+ auth: true,
179
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
180
+ hasComponent: true,
181
+ queries: {
182
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
183
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
184
+ }
185
+ }, {
186
+ key: SLACK_UI_ROUTE_KEYS.SAVED,
187
+ path: SLACK_UI_ROUTES.SAVED,
188
+ name: "Saved Items",
189
+ exact: true,
190
+ auth: true,
191
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
192
+ hasComponent: true,
193
+ queries: {
194
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
195
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
196
+ }
197
+ }, {
198
+ key: SLACK_UI_ROUTE_KEYS.FILES,
199
+ path: SLACK_UI_ROUTES.FILES,
200
+ name: "Files",
201
+ exact: true,
202
+ auth: true,
203
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
204
+ hasComponent: true,
205
+ queries: {
206
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
207
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
208
+ }
209
+ }, {
210
+ key: SLACK_UI_ROUTE_KEYS.SEARCH,
211
+ path: SLACK_UI_ROUTES.SEARCH,
212
+ name: "Search",
213
+ exact: true,
214
+ auth: true,
215
+ componentPath: "@messenger-box/slack-ui-browser/lib/screens/Home/index.js",
216
+ hasComponent: true,
217
+ queries: {
218
+ GetOrganizationMembersDocument: "{orgName: params.orgName}",
219
+ GetOrganizationDetailDocument: "{where: {name: params.name}}"
220
+ }
221
+ }];
222
+ const filteredRoutes = getFilteredRoutes(slackUiPageStore);
223
+ export { filteredRoutes, slackUiPageStore }; //# sourceMappingURL=compute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute.js","sources":["../src/compute.ts"],"sourcesContent":["import { getFilteredRoutes } from '@common-stack/client-react/lib/utils/filteredRoutes.js';\nimport type { IRouteModule } from '@common-stack/core';\nimport { IMenuPosition } from '@common-stack/client-react';\nimport { SLACK_UI_ROUTES, SLACK_UI_ROUTE_KEYS } from './constants/routes';\n\nexport const slackUiPageStore: IRouteModule[] = [\n {\n key: SLACK_UI_ROUTE_KEYS.HOME,\n path: SLACK_UI_ROUTES.HOME,\n name: 'Home',\n exact: false,\n position: IMenuPosition.Middle,\n auth: true,\n component: () => import('./screens/Home'),\n icon: 'AiOutlineHome',\n tab: 'Home',\n },\n // Channel routes\n {\n key: SLACK_UI_ROUTE_KEYS.CHANNELS,\n path: SLACK_UI_ROUTES.CHANNELS,\n name: 'Channel',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.CHANNELS_NEW,\n path: SLACK_UI_ROUTES.CHANNELS_NEW,\n name: 'New Channel',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n // Message routes\n {\n key: SLACK_UI_ROUTE_KEYS.MESSAGES,\n path: SLACK_UI_ROUTES.MESSAGES,\n name: 'Direct Message',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.MESSAGES_NEW,\n path: SLACK_UI_ROUTES.MESSAGES_NEW,\n name: 'New Message',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n // Team routes\n {\n key: SLACK_UI_ROUTE_KEYS.TEAMS,\n path: SLACK_UI_ROUTES.TEAMS,\n name: 'Team',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.TEAMS_NEW,\n path: SLACK_UI_ROUTES.TEAMS_NEW,\n name: 'New Team',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n // Invite routes\n {\n key: SLACK_UI_ROUTE_KEYS.INVITE,\n path: SLACK_UI_ROUTES.INVITE,\n name: 'Invite Members',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.INVITE_CONTACTS,\n path: SLACK_UI_ROUTES.INVITE_CONTACTS,\n name: 'Invite from Contacts',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.INVITE_EMAIL,\n path: SLACK_UI_ROUTES.INVITE_EMAIL,\n name: 'Invite by Email',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.INVITE_LINK,\n path: SLACK_UI_ROUTES.INVITE_LINK,\n name: 'Invite Link',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n // Other routes\n {\n key: SLACK_UI_ROUTE_KEYS.THREADS,\n path: SLACK_UI_ROUTES.THREADS,\n name: 'Threads',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.ACTIVITY,\n path: SLACK_UI_ROUTES.ACTIVITY,\n name: 'Activity',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.DRAFTS,\n path: SLACK_UI_ROUTES.DRAFTS,\n name: 'Drafts',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.SAVED,\n path: SLACK_UI_ROUTES.SAVED,\n name: 'Saved Items',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.FILES,\n path: SLACK_UI_ROUTES.FILES,\n name: 'Files',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n {\n key: SLACK_UI_ROUTE_KEYS.SEARCH,\n path: SLACK_UI_ROUTES.SEARCH,\n name: 'Search',\n exact: true,\n auth: true,\n component: () => import('./screens/Home'),\n },\n];\n\n// Get filtered routes\nconst filteredRoutes = getFilteredRoutes(slackUiPageStore);\n\nexport { filteredRoutes };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ var SLACK_UI_ROUTES = /* @__PURE__ */ ((SLACK_UI_ROUTES2) => {
2
+ SLACK_UI_ROUTES2["HOME"] = "/o/:orgName/home";
3
+ SLACK_UI_ROUTES2["CHANNELS"] = "/o/:orgName/home/channels/:channelName";
4
+ SLACK_UI_ROUTES2["CHANNELS_NEW"] = "/o/:orgName/home/channels/new";
5
+ SLACK_UI_ROUTES2["MESSAGES"] = "/o/:orgName/home/messages/:channelName";
6
+ SLACK_UI_ROUTES2["MESSAGES_NEW"] = "/o/:orgName/home/messages/new";
7
+ SLACK_UI_ROUTES2["TEAMS"] = "/o/:orgName/home/teams/:teamName";
8
+ SLACK_UI_ROUTES2["TEAMS_NEW"] = "/o/:orgName/home/teams/new";
9
+ SLACK_UI_ROUTES2["INVITE"] = "/o/:orgName/home/invite";
10
+ SLACK_UI_ROUTES2["INVITE_CONTACTS"] = "/o/:orgName/home/invite/contacts";
11
+ SLACK_UI_ROUTES2["INVITE_EMAIL"] = "/o/:orgName/home/invite/email";
12
+ SLACK_UI_ROUTES2["INVITE_LINK"] = "/o/:orgName/home/invite/link";
13
+ SLACK_UI_ROUTES2["THREADS"] = "/o/:orgName/home/threads";
14
+ SLACK_UI_ROUTES2["ACTIVITY"] = "/o/:orgName/home/activity";
15
+ SLACK_UI_ROUTES2["DRAFTS"] = "/o/:orgName/home/drafts";
16
+ SLACK_UI_ROUTES2["SAVED"] = "/o/:orgName/home/saved";
17
+ SLACK_UI_ROUTES2["FILES"] = "/o/:orgName/home/files";
18
+ SLACK_UI_ROUTES2["SEARCH"] = "/o/:orgName/home/search";
19
+ return SLACK_UI_ROUTES2;
20
+ })(SLACK_UI_ROUTES || {});
21
+ const slackUiRoutePaths = {
22
+ home: (orgName) => `/o/${orgName}/home`,
23
+ // Channels
24
+ channel: (orgName, channelName) => `/o/${orgName}/home/channels/${channelName}`,
25
+ channelNew: (orgName) => `/o/${orgName}/home/channels/new`,
26
+ // Direct Messages
27
+ message: (orgName, channelName) => `/o/${orgName}/home/messages/${channelName}`,
28
+ messageNew: (orgName) => `/o/${orgName}/home/messages/new`,
29
+ // Teams
30
+ team: (orgName, teamName) => `/o/${orgName}/home/teams/${teamName}`,
31
+ teamNew: (orgName) => `/o/${orgName}/home/teams/new`,
32
+ // Invite
33
+ invite: (orgName) => `/o/${orgName}/home/invite`,
34
+ inviteContacts: (orgName) => `/o/${orgName}/home/invite/contacts`,
35
+ inviteEmail: (orgName) => `/o/${orgName}/home/invite/email`,
36
+ inviteLink: (orgName) => `/o/${orgName}/home/invite/link`,
37
+ // Other
38
+ threads: (orgName) => `/o/${orgName}/home/threads`,
39
+ activity: (orgName) => `/o/${orgName}/home/activity`,
40
+ drafts: (orgName) => `/o/${orgName}/home/drafts`,
41
+ saved: (orgName) => `/o/${orgName}/home/saved`,
42
+ files: (orgName) => `/o/${orgName}/home/files`,
43
+ search: (orgName) => `/o/${orgName}/home/search`
44
+ };
45
+ const SLACK_UI_ROUTE_KEYS = {
46
+ HOME: "home",
47
+ CHANNELS: "home-channels",
48
+ CHANNELS_NEW: "home-channels-new",
49
+ MESSAGES: "home-messages",
50
+ MESSAGES_NEW: "home-messages-new",
51
+ TEAMS: "home-teams",
52
+ TEAMS_NEW: "home-teams-new",
53
+ INVITE: "home-invite",
54
+ INVITE_CONTACTS: "home-invite-contacts",
55
+ INVITE_EMAIL: "home-invite-email",
56
+ INVITE_LINK: "home-invite-link",
57
+ THREADS: "home-threads",
58
+ ACTIVITY: "home-activity",
59
+ DRAFTS: "home-drafts",
60
+ SAVED: "home-saved",
61
+ FILES: "home-files",
62
+ SEARCH: "home-search"
63
+ };export{SLACK_UI_ROUTES,SLACK_UI_ROUTE_KEYS,slackUiRoutePaths};//# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sources":["../../src/constants/routes.ts"],"sourcesContent":["import { ORG_STD_ROUTES } from '@adminide-stack/core/lib/constants/urls.js';\n\n/**\n * Slack UI Routes Enum\n * Centralized route definitions for the slack-ui browser package\n */\nexport enum SLACK_UI_ROUTES {\n // Base paths\n HOME = '/o/:orgName/home',\n \n // Channel routes\n CHANNELS = '/o/:orgName/home/channels/:channelName',\n CHANNELS_NEW = '/o/:orgName/home/channels/new',\n \n // Direct message routes\n MESSAGES = '/o/:orgName/home/messages/:channelName',\n MESSAGES_NEW = '/o/:orgName/home/messages/new',\n \n // Team routes\n TEAMS = '/o/:orgName/home/teams/:teamName',\n TEAMS_NEW = '/o/:orgName/home/teams/new',\n \n // Invite routes\n INVITE = '/o/:orgName/home/invite',\n INVITE_CONTACTS = '/o/:orgName/home/invite/contacts',\n INVITE_EMAIL = '/o/:orgName/home/invite/email',\n INVITE_LINK = '/o/:orgName/home/invite/link',\n \n // Other routes\n THREADS = '/o/:orgName/home/threads',\n ACTIVITY = '/o/:orgName/home/activity',\n DRAFTS = '/o/:orgName/home/drafts',\n SAVED = '/o/:orgName/home/saved',\n FILES = '/o/:orgName/home/files',\n SEARCH = '/o/:orgName/home/search',\n}\n\n/**\n * Route path builders with type safety\n */\nexport const slackUiRoutePaths = {\n home: (orgName: string) => `/o/${orgName}/home`,\n \n // Channels\n channel: (orgName: string, channelName: string) => `/o/${orgName}/home/channels/${channelName}`,\n channelNew: (orgName: string) => `/o/${orgName}/home/channels/new`,\n \n // Direct Messages\n message: (orgName: string, channelName: string) => `/o/${orgName}/home/messages/${channelName}`,\n messageNew: (orgName: string) => `/o/${orgName}/home/messages/new`,\n \n // Teams\n team: (orgName: string, teamName: string) => `/o/${orgName}/home/teams/${teamName}`,\n teamNew: (orgName: string) => `/o/${orgName}/home/teams/new`,\n \n // Invite\n invite: (orgName: string) => `/o/${orgName}/home/invite`,\n inviteContacts: (orgName: string) => `/o/${orgName}/home/invite/contacts`,\n inviteEmail: (orgName: string) => `/o/${orgName}/home/invite/email`,\n inviteLink: (orgName: string) => `/o/${orgName}/home/invite/link`,\n \n // Other\n threads: (orgName: string) => `/o/${orgName}/home/threads`,\n activity: (orgName: string) => `/o/${orgName}/home/activity`,\n drafts: (orgName: string) => `/o/${orgName}/home/drafts`,\n saved: (orgName: string) => `/o/${orgName}/home/saved`,\n files: (orgName: string) => `/o/${orgName}/home/files`,\n search: (orgName: string) => `/o/${orgName}/home/search`,\n};\n\n/**\n * Route keys for route matching\n */\nexport const SLACK_UI_ROUTE_KEYS = {\n HOME: 'home',\n CHANNELS: 'home-channels',\n CHANNELS_NEW: 'home-channels-new',\n MESSAGES: 'home-messages',\n MESSAGES_NEW: 'home-messages-new',\n TEAMS: 'home-teams',\n TEAMS_NEW: 'home-teams-new',\n INVITE: 'home-invite',\n INVITE_CONTACTS: 'home-invite-contacts',\n INVITE_EMAIL: 'home-invite-email',\n INVITE_LINK: 'home-invite-link',\n THREADS: 'home-threads',\n ACTIVITY: 'home-activity',\n DRAFTS: 'home-drafts',\n SAVED: 'home-saved',\n FILES: 'home-files',\n SEARCH: 'home-search',\n} as const;\n"],"names":["SLACK_UI_ROUTES"],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import {useMemo,useCallback}from'react';import {RoomType}from'common';import {useChannelsQuery}from'../queries/slackuiQueries.js';import {orderBy,uniqBy,take}from'lodash-es';const defaultChannelTypes = [RoomType.Channel, RoomType.Private, RoomType.Public];
2
+ const useOptimizedChannelsQueries = ({
3
+ orgName,
4
+ teamId = null,
5
+ enabled = true
6
+ }) => {
7
+ const {
8
+ data: allChannelsData,
9
+ loading,
10
+ error,
11
+ refetch: refetchAllChannels
12
+ } = useChannelsQuery({
13
+ variables: {
14
+ criteria: {
15
+ orgName,
16
+ type: [...defaultChannelTypes, RoomType.Direct],
17
+ team: teamId
18
+ },
19
+ limit: 100
20
+ },
21
+ fetchPolicy: "cache-and-network",
22
+ nextFetchPolicy: "cache-first",
23
+ skip: !enabled || !orgName
24
+ });
25
+ const channelsData = useMemo(() => {
26
+ if (!(allChannelsData == null ? void 0 : allChannelsData.channelsByUser)) return [];
27
+ return orderBy(uniqBy(allChannelsData.channelsByUser.filter((channel) => defaultChannelTypes.includes(channel.type) && channel.type !== RoomType.Direct), "id"), [(ch) => {
28
+ var _a;
29
+ return (_a = ch.title) == null ? void 0 : _a.toLowerCase();
30
+ }], ["asc"]);
31
+ }, [allChannelsData == null ? void 0 : allChannelsData.channelsByUser]);
32
+ const directChannelsData = useMemo(() => {
33
+ if (!(allChannelsData == null ? void 0 : allChannelsData.channelsByUser)) return [];
34
+ return orderBy(uniqBy(allChannelsData.channelsByUser.filter((channel) => channel.type === RoomType.Direct), "id"), [(ch) => {
35
+ var _a, _b, _c;
36
+ return ((_c = (_b = (_a = ch.members) == null ? void 0 : _a[0]) == null ? void 0 : _b.user) == null ? void 0 : _c.givenName) || "";
37
+ }], ["asc"]);
38
+ }, [allChannelsData == null ? void 0 : allChannelsData.channelsByUser]);
39
+ const refetchChannels = useCallback((filters) => {
40
+ const {
41
+ includeChannels = true,
42
+ includeDirectMessages = true
43
+ } = filters || {};
44
+ const types = [];
45
+ if (includeChannels) types.push(...defaultChannelTypes);
46
+ if (includeDirectMessages) types.push(RoomType.Direct);
47
+ const finalTypes = types.length > 0 ? types : [...defaultChannelTypes, RoomType.Direct];
48
+ return refetchAllChannels({
49
+ criteria: {
50
+ orgName,
51
+ type: finalTypes,
52
+ team: teamId
53
+ },
54
+ limit: 100
55
+ });
56
+ }, [orgName, teamId, refetchAllChannels]);
57
+ const getChannelsForHome = useCallback((limit = 10) => {
58
+ return take(channelsData, limit);
59
+ }, [channelsData]);
60
+ const getDirectChannelsForHome = useCallback((limit = 20) => {
61
+ return take(directChannelsData, limit);
62
+ }, [directChannelsData]);
63
+ const getChannelsForTeam = useCallback(() => {
64
+ return channelsData;
65
+ }, [channelsData]);
66
+ return {
67
+ // Raw data
68
+ allChannelsData: (allChannelsData == null ? void 0 : allChannelsData.channelsByUser) || [],
69
+ channelsData,
70
+ directChannelsData,
71
+ // Loading states
72
+ loading,
73
+ error,
74
+ // Refetch functions
75
+ refetchChannels,
76
+ refetchAllChannels,
77
+ // Selectors with built-in limits
78
+ getChannelsForHome,
79
+ getDirectChannelsForHome,
80
+ getChannelsForTeam,
81
+ // Utility functions
82
+ hasChannels: channelsData.length > 0,
83
+ hasDirectChannels: directChannelsData.length > 0,
84
+ totalChannelCount: channelsData.length,
85
+ totalDirectChannelCount: directChannelsData.length
86
+ };
87
+ };
88
+ const useChannelTypeQuery = (orgName, channelType, options = {}) => {
89
+ const {
90
+ teamId = null,
91
+ limit = 50,
92
+ enabled = true
93
+ } = options;
94
+ return useChannelsQuery({
95
+ variables: {
96
+ criteria: {
97
+ orgName,
98
+ type: channelType,
99
+ team: teamId
100
+ },
101
+ limit
102
+ },
103
+ fetchPolicy: "cache-and-network",
104
+ nextFetchPolicy: "cache-first",
105
+ skip: !enabled || !orgName
106
+ });
107
+ };export{useChannelTypeQuery,useOptimizedChannelsQueries};//# sourceMappingURL=useOptimizedChannelsQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOptimizedChannelsQueries.js","sources":["../../src/hooks/useOptimizedChannelsQueries.ts"],"sourcesContent":["import { useMemo, useCallback } from 'react';\nimport { RoomType } from 'common';\nimport { useChannelsQuery } from '../queries/slackuiQueries';\nimport { orderBy, uniqBy, take } from 'lodash-es';\n\ninterface UseOptimizedChannelsQueriesProps {\n orgName: string;\n teamId?: string | null;\n enabled?: boolean;\n}\n\ninterface ChannelFilters {\n includeChannels?: boolean;\n includeDirectMessages?: boolean;\n channelLimit?: number;\n directMessageLimit?: number;\n}\n\nconst defaultChannelTypes = [RoomType.Channel, RoomType.Private, RoomType.Public];\n\nexport const useOptimizedChannelsQueries = ({\n orgName,\n teamId = null,\n enabled = true,\n}: UseOptimizedChannelsQueriesProps) => {\n // Single optimized query that fetches all channel types at once\n const {\n data: allChannelsData,\n loading,\n error,\n refetch: refetchAllChannels,\n } = useChannelsQuery({\n variables: {\n criteria: {\n orgName,\n type: [...defaultChannelTypes, RoomType.Direct],\n team: teamId,\n },\n limit: 100,\n },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n skip: !enabled || !orgName,\n });\n\n // Memoized data selectors for different channel types\n const channelsData = useMemo(() => {\n if (!allChannelsData?.channelsByUser) return [];\n\n return orderBy(\n uniqBy(\n allChannelsData.channelsByUser.filter(\n (channel: any) => defaultChannelTypes.includes(channel.type) && channel.type !== RoomType.Direct,\n ),\n 'id',\n ),\n [(ch: any) => ch.title?.toLowerCase()],\n ['asc'],\n );\n }, [allChannelsData?.channelsByUser]);\n\n const directChannelsData = useMemo(() => {\n if (!allChannelsData?.channelsByUser) return [];\n\n return orderBy(\n uniqBy(\n allChannelsData.channelsByUser.filter((channel: any) => channel.type === RoomType.Direct),\n 'id',\n ),\n [(ch: any) => ch.members?.[0]?.user?.givenName || ''],\n ['asc'],\n );\n }, [allChannelsData?.channelsByUser]);\n\n // Optimized refetch function that accepts filters\n const refetchChannels = useCallback(\n (filters?: ChannelFilters) => {\n const { includeChannels = true, includeDirectMessages = true } = filters || {};\n\n const types: RoomType[] = [];\n if (includeChannels) types.push(...defaultChannelTypes);\n if (includeDirectMessages) types.push(RoomType.Direct);\n\n const finalTypes = types.length > 0 ? types : [...defaultChannelTypes, RoomType.Direct];\n\n return refetchAllChannels({\n criteria: {\n orgName,\n type: finalTypes,\n team: teamId,\n },\n limit: 100,\n });\n },\n [orgName, teamId, refetchAllChannels],\n );\n\n // Specific data selectors with limits for different use cases\n const getChannelsForHome = useCallback(\n (limit: number = 10) => {\n return take(channelsData, limit);\n },\n [channelsData],\n );\n\n const getDirectChannelsForHome = useCallback(\n (limit: number = 20) => {\n return take(directChannelsData, limit);\n },\n [directChannelsData],\n );\n\n const getChannelsForTeam = useCallback(() => {\n return channelsData;\n }, [channelsData]);\n\n return {\n // Raw data\n allChannelsData: allChannelsData?.channelsByUser || [],\n channelsData,\n directChannelsData,\n\n // Loading states\n loading,\n error,\n\n // Refetch functions\n refetchChannels,\n refetchAllChannels,\n\n // Selectors with built-in limits\n getChannelsForHome,\n getDirectChannelsForHome,\n getChannelsForTeam,\n\n // Utility functions\n hasChannels: channelsData.length > 0,\n hasDirectChannels: directChannelsData.length > 0,\n totalChannelCount: channelsData.length,\n totalDirectChannelCount: directChannelsData.length,\n };\n};\n\n// Additional hook for specific channel type queries (for backward compatibility)\nexport const useChannelTypeQuery = (\n orgName: string,\n channelType: RoomType | RoomType[],\n options: { teamId?: string; limit?: number; enabled?: boolean } = {},\n) => {\n const { teamId = null, limit = 50, enabled = true } = options;\n\n return useChannelsQuery({\n variables: {\n criteria: {\n orgName,\n type: channelType,\n team: teamId,\n },\n limit,\n },\n fetchPolicy: 'cache-and-network',\n nextFetchPolicy: 'cache-first',\n skip: !enabled || !orgName,\n });\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ import {useEffect,useMemo,useCallback}from'react';import {useMachine}from'@xstate/react';import {useLocation,useNavigate,useParams}from'@remix-run/react';import {routeMachine,parsePathname,RouteAction,RouteState}from'../machines/routeMachine.js';import {slackUiRoutePaths}from'../constants/routes.js';function useRouteState(orgSlug) {
2
+ const location = useLocation();
3
+ const navigate = useNavigate();
4
+ const params = useParams();
5
+ const [state, send] = useMachine(routeMachine, {
6
+ input: {
7
+ orgSlug,
8
+ currentPath: location.pathname,
9
+ currentRouteKey: parsePathname(location.pathname).routeKey,
10
+ channelName: params.channelName || null,
11
+ teamName: params.teamName || null,
12
+ previousPath: null
13
+ }
14
+ });
15
+ useEffect(() => {
16
+ send({
17
+ type: RouteAction.UPDATE_FROM_PATHNAME,
18
+ pathname: location.pathname
19
+ });
20
+ }, [location.pathname, send]);
21
+ const parsedRoute = useMemo(() => parsePathname(location.pathname), [location.pathname, orgSlug]);
22
+ const isHome = parsedRoute.state === RouteState.Home || parsedRoute.state === RouteState.Idle;
23
+ const isChannelView = parsedRoute.state === RouteState.ChannelsView;
24
+ const isChannelNew = parsedRoute.state === RouteState.ChannelsNew;
25
+ const isMessageView = parsedRoute.state === RouteState.MessagesView;
26
+ const isMessageNew = parsedRoute.state === RouteState.MessagesNew;
27
+ const isTeamView = parsedRoute.state === RouteState.TeamsView;
28
+ const isTeamNew = parsedRoute.state === RouteState.TeamsNew;
29
+ const isThreads = parsedRoute.state === RouteState.Threads;
30
+ const isActivity = parsedRoute.state === RouteState.Activity;
31
+ const isDrafts = parsedRoute.state === RouteState.Drafts;
32
+ const isSaved = parsedRoute.state === RouteState.Saved;
33
+ const isFiles = parsedRoute.state === RouteState.Files;
34
+ const isSearch = parsedRoute.state === RouteState.Search;
35
+ const isInvite = parsedRoute.state === RouteState.Invite;
36
+ const isInviteContacts = parsedRoute.state === RouteState.InviteContacts;
37
+ const isInviteEmail = parsedRoute.state === RouteState.InviteEmail;
38
+ const isInviteLink = parsedRoute.state === RouteState.InviteLink;
39
+ const navigateToHome = useCallback(() => {
40
+ send({
41
+ type: RouteAction.NAVIGATE_HOME
42
+ });
43
+ navigate(slackUiRoutePaths.home(orgSlug));
44
+ }, [send, navigate, orgSlug]);
45
+ const navigateToChannel = useCallback((channelName) => {
46
+ send({
47
+ type: RouteAction.NAVIGATE_CHANNEL,
48
+ channelName
49
+ });
50
+ navigate(slackUiRoutePaths.channel(orgSlug, channelName));
51
+ }, [send, navigate, orgSlug]);
52
+ const navigateToChannelNew = useCallback(() => {
53
+ send({
54
+ type: RouteAction.NAVIGATE_CHANNEL_NEW
55
+ });
56
+ navigate(slackUiRoutePaths.channelNew(orgSlug));
57
+ }, [send, navigate, orgSlug]);
58
+ const navigateToMessage = useCallback((channelName) => {
59
+ send({
60
+ type: RouteAction.NAVIGATE_MESSAGE,
61
+ channelName
62
+ });
63
+ navigate(slackUiRoutePaths.message(orgSlug, channelName));
64
+ }, [send, navigate, orgSlug]);
65
+ const navigateToMessageNew = useCallback(() => {
66
+ send({
67
+ type: RouteAction.NAVIGATE_MESSAGE_NEW
68
+ });
69
+ navigate(slackUiRoutePaths.messageNew(orgSlug));
70
+ }, [send, navigate, orgSlug]);
71
+ const navigateToTeam = useCallback((teamName) => {
72
+ send({
73
+ type: RouteAction.NAVIGATE_TEAM,
74
+ teamName
75
+ });
76
+ navigate(slackUiRoutePaths.team(orgSlug, teamName));
77
+ }, [send, navigate, orgSlug]);
78
+ const navigateToTeamNew = useCallback(() => {
79
+ send({
80
+ type: RouteAction.NAVIGATE_TEAM_NEW
81
+ });
82
+ navigate(slackUiRoutePaths.teamNew(orgSlug));
83
+ }, [send, navigate, orgSlug]);
84
+ const navigateToThreads = useCallback(() => {
85
+ send({
86
+ type: RouteAction.NAVIGATE_THREADS
87
+ });
88
+ navigate(slackUiRoutePaths.threads(orgSlug));
89
+ }, [send, navigate, orgSlug]);
90
+ const navigateToActivity = useCallback(() => {
91
+ send({
92
+ type: RouteAction.NAVIGATE_ACTIVITY
93
+ });
94
+ navigate(slackUiRoutePaths.activity(orgSlug));
95
+ }, [send, navigate, orgSlug]);
96
+ const navigateToDrafts = useCallback(() => {
97
+ send({
98
+ type: RouteAction.NAVIGATE_DRAFTS
99
+ });
100
+ navigate(slackUiRoutePaths.drafts(orgSlug));
101
+ }, [send, navigate, orgSlug]);
102
+ const navigateToSaved = useCallback(() => {
103
+ send({
104
+ type: RouteAction.NAVIGATE_SAVED
105
+ });
106
+ navigate(slackUiRoutePaths.saved(orgSlug));
107
+ }, [send, navigate, orgSlug]);
108
+ const navigateToFiles = useCallback(() => {
109
+ send({
110
+ type: RouteAction.NAVIGATE_FILES
111
+ });
112
+ navigate(slackUiRoutePaths.files(orgSlug));
113
+ }, [send, navigate, orgSlug]);
114
+ const navigateToSearch = useCallback(() => {
115
+ send({
116
+ type: RouteAction.NAVIGATE_SEARCH
117
+ });
118
+ navigate(slackUiRoutePaths.search(orgSlug));
119
+ }, [send, navigate, orgSlug]);
120
+ const navigateToInvite = useCallback(() => {
121
+ send({
122
+ type: RouteAction.NAVIGATE_INVITE
123
+ });
124
+ navigate(slackUiRoutePaths.invite(orgSlug));
125
+ }, [send, navigate, orgSlug]);
126
+ const navigateToInviteContacts = useCallback(() => {
127
+ send({
128
+ type: RouteAction.NAVIGATE_INVITE_CONTACTS
129
+ });
130
+ navigate(slackUiRoutePaths.inviteContacts(orgSlug));
131
+ }, [send, navigate, orgSlug]);
132
+ const navigateToInviteEmail = useCallback(() => {
133
+ send({
134
+ type: RouteAction.NAVIGATE_INVITE_EMAIL
135
+ });
136
+ navigate(slackUiRoutePaths.inviteEmail(orgSlug));
137
+ }, [send, navigate, orgSlug]);
138
+ const navigateToInviteLink = useCallback(() => {
139
+ send({
140
+ type: RouteAction.NAVIGATE_INVITE_LINK
141
+ });
142
+ navigate(slackUiRoutePaths.inviteLink(orgSlug));
143
+ }, [send, navigate, orgSlug]);
144
+ const goBack = useCallback(() => {
145
+ navigate(-1);
146
+ }, [navigate]);
147
+ return {
148
+ // Current state
149
+ currentState: parsedRoute.state,
150
+ currentRouteKey: parsedRoute.routeKey,
151
+ channelName: parsedRoute.channelName || params.channelName || null,
152
+ teamName: parsedRoute.teamName || params.teamName || null,
153
+ orgSlug,
154
+ // State checks
155
+ isHome,
156
+ isChannelView,
157
+ isChannelNew,
158
+ isMessageView,
159
+ isMessageNew,
160
+ isTeamView,
161
+ isTeamNew,
162
+ isThreads,
163
+ isActivity,
164
+ isDrafts,
165
+ isSaved,
166
+ isFiles,
167
+ isSearch,
168
+ isInvite,
169
+ isInviteContacts,
170
+ isInviteEmail,
171
+ isInviteLink,
172
+ // Navigation methods
173
+ navigateToHome,
174
+ navigateToChannel,
175
+ navigateToChannelNew,
176
+ navigateToMessage,
177
+ navigateToMessageNew,
178
+ navigateToTeam,
179
+ navigateToTeamNew,
180
+ navigateToThreads,
181
+ navigateToActivity,
182
+ navigateToDrafts,
183
+ navigateToSaved,
184
+ navigateToFiles,
185
+ navigateToSearch,
186
+ navigateToInvite,
187
+ navigateToInviteContacts,
188
+ navigateToInviteEmail,
189
+ navigateToInviteLink,
190
+ // Utils
191
+ goBack
192
+ };
193
+ }export{useRouteState};//# sourceMappingURL=useRouteState.js.map