@iblai/web-utils 1.6.5 → 1.6.7

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.
@@ -0,0 +1,66 @@
1
+ import { SERVICES } from '@data-layer/constants';
2
+ export declare const WATCHED_GROUPS_REDUCER_PATH = "watchedGroupsApiSlice";
3
+ export declare const WATCHED_GROUPS_QUERY_KEYS: {
4
+ readonly WATCHED_GROUPS: "WATCHED_GROUPS";
5
+ readonly WATCHED_GROUP: "WATCHED_GROUP";
6
+ readonly WATCHED_USERS: "WATCHED_USERS";
7
+ readonly WATCHERS: "WATCHERS";
8
+ readonly WATCHER: "WATCHER";
9
+ };
10
+ export declare const WATCHED_GROUPS_ENDPOINTS: {
11
+ LIST_WATCHED_GROUPS: {
12
+ service: SERVICES;
13
+ path: () => string;
14
+ };
15
+ CREATE_WATCHED_GROUP: {
16
+ service: SERVICES;
17
+ path: () => string;
18
+ };
19
+ GET_WATCHED_GROUP: {
20
+ service: SERVICES;
21
+ path: (id: number) => string;
22
+ };
23
+ UPDATE_WATCHED_GROUP: {
24
+ service: SERVICES;
25
+ path: (id: number) => string;
26
+ };
27
+ DELETE_WATCHED_GROUP: {
28
+ service: SERVICES;
29
+ path: (id: number) => string;
30
+ };
31
+ LIST_WATCHED_USERS: {
32
+ service: SERVICES;
33
+ path: (watchedGroupPk: number) => string;
34
+ };
35
+ ADD_WATCHED_USER: {
36
+ service: SERVICES;
37
+ path: (watchedGroupPk: number) => string;
38
+ };
39
+ REMOVE_WATCHED_USER: {
40
+ service: SERVICES;
41
+ path: (watchedGroupPk: number, id: number) => string;
42
+ };
43
+ LIST_WATCHERS: {
44
+ service: SERVICES;
45
+ path: (watchedGroupPk: number) => string;
46
+ };
47
+ ADD_WATCHER: {
48
+ service: SERVICES;
49
+ path: (watchedGroupPk: number) => string;
50
+ };
51
+ GET_WATCHER: {
52
+ service: SERVICES;
53
+ path: (watchedGroupPk: number, id: number) => string;
54
+ };
55
+ UPDATE_WATCHER: {
56
+ service: SERVICES;
57
+ path: (watchedGroupPk: number, id: number) => string;
58
+ };
59
+ DELETE_WATCHER: {
60
+ service: SERVICES;
61
+ path: (watchedGroupPk: number, id: number) => string;
62
+ };
63
+ };
64
+ export declare const WATCHER_NOTIFICATION_EVENTS: readonly ["USER_NOTIF_COURSE_ENROLLMENT", "ADMIN_NOTIF_COURSE_ENROLLMENT", "USER_NOTIF_USER_INACTIVITY", "USER_NOTIF_COURSE_COMPLETION", "USER_NOTIF_CREDENTIALS", "USER_NOTIF_LEARNER_PROGRESS", "PROACTIVE_LEARNER_NOTIFICATION", "ACTIVITY_NEW_CONTENT", "ACTIVITY_COURSE_MILESTONE", "SKILL_MASTERY_CHANGE", "PROGRAM_ENROLLMENT_CONFIRMATION", "PATHWAY_ENROLLMENT_CONFIRMATION", "COURSE_SCHEDULE_CHANGE", "COURSES_PROGRESS_SUMMARY", "SUBSECTION_GRADE_UPDATE"];
65
+ export type WatcherNotificationEvent = (typeof WATCHER_NOTIFICATION_EVENTS)[number];
66
+ export declare const WATCHER_NOTIFICATION_EVENT_LABELS: Record<WatcherNotificationEvent, string>;
@@ -0,0 +1,143 @@
1
+ export interface PaginatedResponse<T> {
2
+ count: number;
3
+ next: string | null;
4
+ previous: string | null;
5
+ results: T[];
6
+ }
7
+ export interface WatchedGroupListItem {
8
+ id: number;
9
+ name: string;
10
+ platform_key: string;
11
+ }
12
+ export interface WatchedGroupDetail {
13
+ id: number;
14
+ name: string;
15
+ platform_key: string;
16
+ watcher_count: number;
17
+ watchers: WatcherSummary[] | string[];
18
+ watched_user_count: number;
19
+ watched_users: WatchedUserSummary[] | string[];
20
+ }
21
+ export interface WatcherSummary {
22
+ id: number;
23
+ username: string;
24
+ email: string;
25
+ events: string | string[];
26
+ }
27
+ export interface WatchedUserSummary {
28
+ id: number;
29
+ username: string;
30
+ email: string;
31
+ }
32
+ export interface WatchedGroupListParams {
33
+ limit?: number;
34
+ offset?: number;
35
+ platform_key?: string;
36
+ }
37
+ export interface WatchedGroupDetailParams {
38
+ platform_key?: string;
39
+ watched_user_limit?: number;
40
+ watcher_limit?: number;
41
+ }
42
+ export interface WatcherCreatePayload {
43
+ watcher_id: number;
44
+ events: string[];
45
+ }
46
+ export interface CreateWatchedGroupBody {
47
+ name: string;
48
+ watched_users?: number[];
49
+ watchers?: WatcherCreatePayload[];
50
+ owner_id?: number;
51
+ }
52
+ export interface UpdateWatchedGroupBody {
53
+ name: string;
54
+ }
55
+ export interface AddWatchedUserBody {
56
+ user_id: number;
57
+ }
58
+ export interface UpdateWatcherBody {
59
+ events: string[];
60
+ }
61
+ export type GetWatchedGroupsArgs = {
62
+ params?: WatchedGroupListParams;
63
+ };
64
+ export type GetWatchedGroupArgs = {
65
+ id: number;
66
+ params?: WatchedGroupDetailParams;
67
+ };
68
+ export type CreateWatchedGroupArgs = {
69
+ body: CreateWatchedGroupBody;
70
+ params?: WatchedGroupDetailParams;
71
+ };
72
+ export type UpdateWatchedGroupArgs = {
73
+ id: number;
74
+ body: UpdateWatchedGroupBody;
75
+ params?: {
76
+ platform_key?: string;
77
+ };
78
+ };
79
+ export type DeleteWatchedGroupArgs = {
80
+ id: number;
81
+ params?: {
82
+ platform_key?: string;
83
+ };
84
+ };
85
+ export type GetWatchedUsersArgs = {
86
+ watchedGroupPk: number;
87
+ params?: {
88
+ limit?: number;
89
+ offset?: number;
90
+ platform_key?: string;
91
+ };
92
+ };
93
+ export type AddWatchedUserArgs = {
94
+ watchedGroupPk: number;
95
+ body: AddWatchedUserBody;
96
+ params?: {
97
+ platform_key?: string;
98
+ };
99
+ };
100
+ export type RemoveWatchedUserArgs = {
101
+ watchedGroupPk: number;
102
+ id: number;
103
+ params?: {
104
+ platform_key?: string;
105
+ };
106
+ };
107
+ export type GetWatchersArgs = {
108
+ watchedGroupPk: number;
109
+ params?: {
110
+ limit?: number;
111
+ offset?: number;
112
+ platform_key?: string;
113
+ };
114
+ };
115
+ export type AddWatcherArgs = {
116
+ watchedGroupPk: number;
117
+ body: WatcherCreatePayload;
118
+ params?: {
119
+ platform_key?: string;
120
+ };
121
+ };
122
+ export type GetWatcherArgs = {
123
+ watchedGroupPk: number;
124
+ id: number;
125
+ params?: {
126
+ platform_key?: string;
127
+ };
128
+ };
129
+ export type UpdateWatcherArgs = {
130
+ watchedGroupPk: number;
131
+ id: number;
132
+ body: UpdateWatcherBody;
133
+ params?: {
134
+ platform_key?: string;
135
+ };
136
+ };
137
+ export type DeleteWatcherArgs = {
138
+ watchedGroupPk: number;
139
+ id: number;
140
+ params?: {
141
+ platform_key?: string;
142
+ };
143
+ };
@@ -104,6 +104,9 @@ export * from './features/workflows/constants';
104
104
  export * from './features/audit-logs/api-slice';
105
105
  export * from './features/audit-logs/constants';
106
106
  export * from './features/audit-logs/types';
107
+ export * from './features/watched-groups/api-slice';
108
+ export * from './features/watched-groups/constants';
109
+ export * from './features/watched-groups/types';
107
110
  export * from './reducers';
108
111
  export * from './utils';
109
112
  export type { CustomQueryArgs } from './features/utils';
package/dist/index.d.ts CHANGED
@@ -1575,7 +1575,7 @@ type Props$2 = {
1575
1575
  * 4. Handles redirects to auth SPA when needed
1576
1576
  * 5. Manages public route access state
1577
1577
  */
1578
- declare function AuthProvider({ children, fallback, middleware, onAuthSuccess, onAuthFailure, redirectToAuthSpa, hasNonExpiredAuthToken, username, pathname, storageService, token, enableStorageSync, skip, }: Props$2): string | number | bigint | boolean | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
1578
+ declare function AuthProvider({ children, fallback, middleware, onAuthSuccess, onAuthFailure, redirectToAuthSpa, hasNonExpiredAuthToken, username, pathname, storageService, token, enableStorageSync, skip, }: Props$2): string | number | bigint | boolean | react_jsx_runtime.JSX.Element | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | null | undefined;
1579
1579
 
1580
1580
  /**
1581
1581
  * Props for the MentorProvider component
@@ -1608,7 +1608,7 @@ type Props$1 = {
1608
1608
  * 3. Manages redirection based on mentor availability
1609
1609
  * 4. Integrates with tenant context for access control
1610
1610
  */
1611
- declare function MentorProvider({ children, fallback, onAuthSuccess, onAuthFailure, redirectToAuthSpa, redirectToMentor, onLoadMentorsPermissions, redirectToNoMentorsPage, redirectToCreateMentor, username, isAdmin, mainTenantKey, requestedMentorId, handleMentorNotFound, forceDetermineMentor, onComplete, skip, }: Props$1): string | number | bigint | boolean | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
1611
+ declare function MentorProvider({ children, fallback, onAuthSuccess, onAuthFailure, redirectToAuthSpa, redirectToMentor, onLoadMentorsPermissions, redirectToNoMentorsPage, redirectToCreateMentor, username, isAdmin, mainTenantKey, requestedMentorId, handleMentorNotFound, forceDetermineMentor, onComplete, skip, }: Props$1): string | number | bigint | boolean | react_jsx_runtime.JSX.Element | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | null | undefined;
1612
1612
 
1613
1613
  /**
1614
1614
  * Type definition for the tenant context
@@ -1672,7 +1672,7 @@ type Props = {
1672
1672
  * 4. Handles tenant-specific domain redirects
1673
1673
  * 5. Maintains tenant access state
1674
1674
  */
1675
- declare function TenantProvider({ children, fallback, onAuthSuccess, onAuthFailure, currentTenant, requestedTenant, saveCurrentTenant, saveUserTenants, handleTenantSwitch, saveVisitingTenant, removeVisitingTenant, saveUserTokens, saveTenant, onAutoJoinUserToTenant, redirectToAuthSpa, username, isIframed, setUseMentorProvider, skip, onLoadPlatformPermissions, skipCustomDomainCheck, onTenantMismatch, }: Props): string | number | bigint | boolean | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null | undefined;
1675
+ declare function TenantProvider({ children, fallback, onAuthSuccess, onAuthFailure, currentTenant, requestedTenant, saveCurrentTenant, saveUserTenants, handleTenantSwitch, saveVisitingTenant, removeVisitingTenant, saveUserTokens, saveTenant, onAutoJoinUserToTenant, redirectToAuthSpa, username, isIframed, setUseMentorProvider, skip, onLoadPlatformPermissions, skipCustomDomainCheck, onTenantMismatch, }: Props): string | number | bigint | boolean | react_jsx_runtime.JSX.Element | Iterable<React__default.ReactNode> | Promise<string | number | bigint | boolean | React__default.ReactPortal | React__default.ReactElement<unknown, string | React__default.JSXElementConstructor<any>> | Iterable<React__default.ReactNode> | null | undefined> | null | undefined;
1676
1676
 
1677
1677
  /**
1678
1678
  * Chat area size constants
package/dist/index.esm.js CHANGED
@@ -422,6 +422,14 @@ const BASE_CONFIG = {
422
422
  description: "Default mentor to open on the platform",
423
423
  type: "string",
424
424
  },
425
+ /* {
426
+ slug: "monetization_base_path",
427
+ label: "Public Monetization Base Path",
428
+ defaultValue: "https://ibl.ai/buy/",
429
+ description:
430
+ "Base URL for public paywall product pages. The product unique ID will be appended to this path.",
431
+ type: "string",
432
+ }, */
425
433
  ],
426
434
  };
427
435
  // SkillsAI platform configuration
@@ -2862,6 +2870,12 @@ async function validateJwtToken(storageService) {
2862
2870
  if (!edxJwtToken || !userData) {
2863
2871
  return false;
2864
2872
  }
2873
+ // Skip JWT validation if token is not in JWT format (e.g. opaque LTI tokens)
2874
+ const parts = edxJwtToken.split(".");
2875
+ if (parts.length !== 3) {
2876
+ console.warn("[AuthProvider] Token is not a valid JWT format, skipping validation");
2877
+ return false;
2878
+ }
2865
2879
  const decodedToken = jwtDecode(edxJwtToken);
2866
2880
  const userDataObj = JSON.parse(userData);
2867
2881
  // Compare user_id from token with user_id from user_data
@@ -3342,6 +3356,7 @@ function TenantProvider({ children, fallback, onAuthSuccess, onAuthFailure, curr
3342
3356
  "/roles/",
3343
3357
  "/policies/",
3344
3358
  "/usergroups/",
3359
+ "/watchedgroups/",
3345
3360
  ],
3346
3361
  },
3347
3362
  }).unwrap();
@@ -15563,6 +15578,15 @@ createApi({
15563
15578
  }),
15564
15579
  invalidatesTags: ['paywallConfig', 'paywalls'],
15565
15580
  }),
15581
+ updatePaywall: builder.mutation({
15582
+ query: ({ platform_key, item_type, item_id, ...body }) => ({
15583
+ url: MONETIZATION_ENDPOINTS.PAYWALL_CONFIG.path(platform_key, item_type, item_id),
15584
+ service: MONETIZATION_ENDPOINTS.PAYWALL_CONFIG.service,
15585
+ method: 'PUT',
15586
+ body: JSON.stringify(body),
15587
+ }),
15588
+ invalidatesTags: ['paywallConfig', 'paywalls'],
15589
+ }),
15566
15590
  disablePaywall: builder.mutation({
15567
15591
  query: ({ platform_key, item_type, item_id }) => ({
15568
15592
  url: MONETIZATION_ENDPOINTS.PAYWALL_CONFIG.path(platform_key, item_type, item_id),
@@ -15622,6 +15646,9 @@ createApi({
15622
15646
  url: MONETIZATION_ENDPOINTS.ACCESS_CHECK.path(platform_key, item_type, item_id),
15623
15647
  service: MONETIZATION_ENDPOINTS.ACCESS_CHECK.service,
15624
15648
  method: 'GET',
15649
+ // Treat paywall-related 4xx (e.g. 402 Payment Required) as success so the
15650
+ // response body (has_access, pricing, reason, …) reaches the caller as `data`.
15651
+ validateStatus: (response) => response.ok || [402].includes(response.status),
15625
15652
  }),
15626
15653
  providesTags: ['accessCheck'],
15627
15654
  }),
@@ -19084,6 +19111,231 @@ createApi({
19084
19111
  }),
19085
19112
  });
19086
19113
 
19114
+ const WATCHED_GROUPS_REDUCER_PATH = 'watchedGroupsApiSlice';
19115
+ const WATCHED_GROUPS_QUERY_KEYS = {
19116
+ WATCHED_GROUPS: 'WATCHED_GROUPS',
19117
+ WATCHED_GROUP: 'WATCHED_GROUP',
19118
+ WATCHED_USERS: 'WATCHED_USERS',
19119
+ WATCHERS: 'WATCHERS',
19120
+ WATCHER: 'WATCHER',
19121
+ };
19122
+ const WATCHED_GROUPS_ENDPOINTS = {
19123
+ LIST_WATCHED_GROUPS: {
19124
+ service: SERVICES.DM,
19125
+ path: () => `/api/core/watched-groups/`,
19126
+ },
19127
+ CREATE_WATCHED_GROUP: {
19128
+ service: SERVICES.DM,
19129
+ path: () => `/api/core/watched-groups/`,
19130
+ },
19131
+ GET_WATCHED_GROUP: {
19132
+ service: SERVICES.DM,
19133
+ path: (id) => `/api/core/watched-groups/${id}/`,
19134
+ },
19135
+ UPDATE_WATCHED_GROUP: {
19136
+ service: SERVICES.DM,
19137
+ path: (id) => `/api/core/watched-groups/${id}/`,
19138
+ },
19139
+ DELETE_WATCHED_GROUP: {
19140
+ service: SERVICES.DM,
19141
+ path: (id) => `/api/core/watched-groups/${id}/`,
19142
+ },
19143
+ LIST_WATCHED_USERS: {
19144
+ service: SERVICES.DM,
19145
+ path: (watchedGroupPk) => `/api/core/watched-groups/${watchedGroupPk}/watched-users/`,
19146
+ },
19147
+ ADD_WATCHED_USER: {
19148
+ service: SERVICES.DM,
19149
+ path: (watchedGroupPk) => `/api/core/watched-groups/${watchedGroupPk}/watched-users/`,
19150
+ },
19151
+ REMOVE_WATCHED_USER: {
19152
+ service: SERVICES.DM,
19153
+ path: (watchedGroupPk, id) => `/api/core/watched-groups/${watchedGroupPk}/watched-users/${id}/`,
19154
+ },
19155
+ LIST_WATCHERS: {
19156
+ service: SERVICES.DM,
19157
+ path: (watchedGroupPk) => `/api/core/watched-groups/${watchedGroupPk}/watchers/`,
19158
+ },
19159
+ ADD_WATCHER: {
19160
+ service: SERVICES.DM,
19161
+ path: (watchedGroupPk) => `/api/core/watched-groups/${watchedGroupPk}/watchers/`,
19162
+ },
19163
+ GET_WATCHER: {
19164
+ service: SERVICES.DM,
19165
+ path: (watchedGroupPk, id) => `/api/core/watched-groups/${watchedGroupPk}/watchers/${id}/`,
19166
+ },
19167
+ UPDATE_WATCHER: {
19168
+ service: SERVICES.DM,
19169
+ path: (watchedGroupPk, id) => `/api/core/watched-groups/${watchedGroupPk}/watchers/${id}/`,
19170
+ },
19171
+ DELETE_WATCHER: {
19172
+ service: SERVICES.DM,
19173
+ path: (watchedGroupPk, id) => `/api/core/watched-groups/${watchedGroupPk}/watchers/${id}/`,
19174
+ },
19175
+ };
19176
+
19177
+ createApi({
19178
+ reducerPath: WATCHED_GROUPS_REDUCER_PATH,
19179
+ baseQuery: iblFetchBaseQuery,
19180
+ tagTypes: [
19181
+ WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS,
19182
+ WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP,
19183
+ WATCHED_GROUPS_QUERY_KEYS.WATCHED_USERS,
19184
+ WATCHED_GROUPS_QUERY_KEYS.WATCHERS,
19185
+ WATCHED_GROUPS_QUERY_KEYS.WATCHER,
19186
+ ],
19187
+ endpoints: (builder) => ({
19188
+ getWatchedGroups: builder.query({
19189
+ query: (args) => ({
19190
+ url: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHED_GROUPS.path(),
19191
+ service: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHED_GROUPS.service,
19192
+ method: 'GET',
19193
+ params: args === null || args === void 0 ? void 0 : args.params,
19194
+ }),
19195
+ providesTags: [WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS],
19196
+ }),
19197
+ getWatchedGroup: builder.query({
19198
+ query: ({ id, params }) => ({
19199
+ url: WATCHED_GROUPS_ENDPOINTS.GET_WATCHED_GROUP.path(id),
19200
+ service: WATCHED_GROUPS_ENDPOINTS.GET_WATCHED_GROUP.service,
19201
+ method: 'GET',
19202
+ params,
19203
+ }),
19204
+ providesTags: (_result, _error, { id }) => [
19205
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id },
19206
+ ],
19207
+ }),
19208
+ createWatchedGroup: builder.mutation({
19209
+ query: ({ body, params }) => ({
19210
+ url: WATCHED_GROUPS_ENDPOINTS.CREATE_WATCHED_GROUP.path(),
19211
+ service: WATCHED_GROUPS_ENDPOINTS.CREATE_WATCHED_GROUP.service,
19212
+ method: 'POST',
19213
+ body,
19214
+ params,
19215
+ }),
19216
+ invalidatesTags: [WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS],
19217
+ }),
19218
+ updateWatchedGroup: builder.mutation({
19219
+ query: ({ id, body, params }) => ({
19220
+ url: WATCHED_GROUPS_ENDPOINTS.UPDATE_WATCHED_GROUP.path(id),
19221
+ service: WATCHED_GROUPS_ENDPOINTS.UPDATE_WATCHED_GROUP.service,
19222
+ method: 'PATCH',
19223
+ body,
19224
+ params,
19225
+ }),
19226
+ invalidatesTags: (_result, _error, { id }) => [
19227
+ WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS,
19228
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id },
19229
+ ],
19230
+ }),
19231
+ deleteWatchedGroup: builder.mutation({
19232
+ query: ({ id, params }) => ({
19233
+ url: WATCHED_GROUPS_ENDPOINTS.DELETE_WATCHED_GROUP.path(id),
19234
+ service: WATCHED_GROUPS_ENDPOINTS.DELETE_WATCHED_GROUP.service,
19235
+ method: 'DELETE',
19236
+ params,
19237
+ }),
19238
+ invalidatesTags: [WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS],
19239
+ }),
19240
+ getWatchedUsers: builder.query({
19241
+ query: ({ watchedGroupPk, params }) => ({
19242
+ url: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHED_USERS.path(watchedGroupPk),
19243
+ service: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHED_USERS.service,
19244
+ method: 'GET',
19245
+ params,
19246
+ }),
19247
+ providesTags: (_result, _error, { watchedGroupPk }) => [
19248
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_USERS, id: watchedGroupPk },
19249
+ ],
19250
+ }),
19251
+ addWatchedUser: builder.mutation({
19252
+ query: ({ watchedGroupPk, body, params }) => ({
19253
+ url: WATCHED_GROUPS_ENDPOINTS.ADD_WATCHED_USER.path(watchedGroupPk),
19254
+ service: WATCHED_GROUPS_ENDPOINTS.ADD_WATCHED_USER.service,
19255
+ method: 'POST',
19256
+ body,
19257
+ params,
19258
+ }),
19259
+ invalidatesTags: (_result, _error, { watchedGroupPk }) => [
19260
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_USERS, id: watchedGroupPk },
19261
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id: watchedGroupPk },
19262
+ ],
19263
+ }),
19264
+ removeWatchedUser: builder.mutation({
19265
+ query: ({ watchedGroupPk, id, params }) => ({
19266
+ url: WATCHED_GROUPS_ENDPOINTS.REMOVE_WATCHED_USER.path(watchedGroupPk, id),
19267
+ service: WATCHED_GROUPS_ENDPOINTS.REMOVE_WATCHED_USER.service,
19268
+ method: 'DELETE',
19269
+ params,
19270
+ }),
19271
+ invalidatesTags: (_result, _error, { watchedGroupPk }) => [
19272
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_USERS, id: watchedGroupPk },
19273
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id: watchedGroupPk },
19274
+ ],
19275
+ }),
19276
+ getWatchers: builder.query({
19277
+ query: ({ watchedGroupPk, params }) => ({
19278
+ url: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHERS.path(watchedGroupPk),
19279
+ service: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHERS.service,
19280
+ method: 'GET',
19281
+ params,
19282
+ }),
19283
+ providesTags: (_result, _error, { watchedGroupPk }) => [
19284
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHERS, id: watchedGroupPk },
19285
+ ],
19286
+ }),
19287
+ addWatcher: builder.mutation({
19288
+ query: ({ watchedGroupPk, body, params }) => ({
19289
+ url: WATCHED_GROUPS_ENDPOINTS.ADD_WATCHER.path(watchedGroupPk),
19290
+ service: WATCHED_GROUPS_ENDPOINTS.ADD_WATCHER.service,
19291
+ method: 'POST',
19292
+ body,
19293
+ params,
19294
+ }),
19295
+ invalidatesTags: (_result, _error, { watchedGroupPk }) => [
19296
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHERS, id: watchedGroupPk },
19297
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id: watchedGroupPk },
19298
+ ],
19299
+ }),
19300
+ getWatcher: builder.query({
19301
+ query: ({ watchedGroupPk, id, params }) => ({
19302
+ url: WATCHED_GROUPS_ENDPOINTS.GET_WATCHER.path(watchedGroupPk, id),
19303
+ service: WATCHED_GROUPS_ENDPOINTS.GET_WATCHER.service,
19304
+ method: 'GET',
19305
+ params,
19306
+ }),
19307
+ providesTags: (_result, _error, { watchedGroupPk, id }) => [
19308
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHER, id: `${watchedGroupPk}-${id}` },
19309
+ ],
19310
+ }),
19311
+ updateWatcher: builder.mutation({
19312
+ query: ({ watchedGroupPk, id, body, params }) => ({
19313
+ url: WATCHED_GROUPS_ENDPOINTS.UPDATE_WATCHER.path(watchedGroupPk, id),
19314
+ service: WATCHED_GROUPS_ENDPOINTS.UPDATE_WATCHER.service,
19315
+ method: 'PATCH',
19316
+ body,
19317
+ params,
19318
+ }),
19319
+ invalidatesTags: (_result, _error, { watchedGroupPk, id }) => [
19320
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHERS, id: watchedGroupPk },
19321
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHER, id: `${watchedGroupPk}-${id}` },
19322
+ ],
19323
+ }),
19324
+ deleteWatcher: builder.mutation({
19325
+ query: ({ watchedGroupPk, id, params }) => ({
19326
+ url: WATCHED_GROUPS_ENDPOINTS.DELETE_WATCHER.path(watchedGroupPk, id),
19327
+ service: WATCHED_GROUPS_ENDPOINTS.DELETE_WATCHER.service,
19328
+ method: 'DELETE',
19329
+ params,
19330
+ }),
19331
+ invalidatesTags: (_result, _error, { watchedGroupPk }) => [
19332
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHERS, id: watchedGroupPk },
19333
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id: watchedGroupPk },
19334
+ ],
19335
+ }),
19336
+ }),
19337
+ });
19338
+
19087
19339
  function useMentorSettings({ mentorId, tenantKey, username, isPublicRoute, }) {
19088
19340
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
19089
19341
  const isLoggedIn = username !== ANONYMOUS_USERNAME;