@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.
- package/CHANGELOG.md +8 -0
- package/LICENSE +21 -0
- package/lib/components/Home/Channels.js +62 -0
- package/lib/components/Home/Channels.js.map +1 -0
- package/lib/components/Home/DirectChannels.js +92 -0
- package/lib/components/Home/DirectChannels.js.map +1 -0
- package/lib/components/Home/InviteMembers.js +70 -0
- package/lib/components/Home/InviteMembers.js.map +1 -0
- package/lib/components/Home/Teams.js +62 -0
- package/lib/components/Home/Teams.js.map +1 -0
- package/lib/components/Home/TopCommonSlider.js +35 -0
- package/lib/components/Home/TopCommonSlider.js.map +1 -0
- package/lib/compute.js +223 -0
- package/lib/compute.js.map +1 -0
- package/lib/constants/routes.js +63 -0
- package/lib/constants/routes.js.map +1 -0
- package/lib/hooks/useOptimizedChannelsQueries.js +107 -0
- package/lib/hooks/useOptimizedChannelsQueries.js.map +1 -0
- package/lib/hooks/useRouteState.js +193 -0
- package/lib/hooks/useRouteState.js.map +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -0
- package/lib/machines/routeMachine.js +804 -0
- package/lib/machines/routeMachine.js.map +1 -0
- package/lib/module.js +3 -0
- package/lib/module.js.map +1 -0
- package/lib/queries/slackuiQueries.js +144 -0
- package/lib/queries/slackuiQueries.js.map +1 -0
- package/lib/routes.json +260 -0
- package/lib/screens/Home/HomeScreen.js +664 -0
- package/lib/screens/Home/HomeScreen.js.map +1 -0
- package/lib/screens/Home/index.js +1 -0
- package/lib/screens/Home/index.js.map +1 -0
- package/package.json +52 -0
- package/rollup.config.mjs +41 -0
- package/src/components/Home/Channels.tsx +135 -0
- package/src/components/Home/DirectChannels.tsx +185 -0
- package/src/components/Home/InviteMembers.tsx +134 -0
- package/src/components/Home/Teams.tsx +129 -0
- package/src/components/Home/TopCommonSlider.tsx +70 -0
- package/src/components/Home/index.ts +5 -0
- package/src/components/index.ts +1 -0
- package/src/compute.ts +156 -0
- package/src/constants/index.ts +1 -0
- package/src/constants/routes.ts +92 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useOptimizedChannelsQueries.ts +165 -0
- package/src/hooks/useRouteState.ts +253 -0
- package/src/icons.ts +137 -0
- package/src/index.ts +11 -0
- package/src/machines/index.ts +9 -0
- package/src/machines/routeMachine.ts +682 -0
- package/src/module.tsx +6 -0
- package/src/queries/index.ts +1 -0
- package/src/queries/slackuiQueries.ts +227 -0
- package/src/screens/Home/HomeScreen.tsx +1308 -0
- package/src/screens/Home/index.ts +4 -0
- package/src/screens/NewChannel/NewChannelScreen.tsx +188 -0
- package/src/screens/NewChannel/index.ts +2 -0
- package/src/screens/index.ts +1 -0
- 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
|