@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.
package/dist/index.js CHANGED
@@ -442,6 +442,14 @@ const BASE_CONFIG = {
442
442
  description: "Default mentor to open on the platform",
443
443
  type: "string",
444
444
  },
445
+ /* {
446
+ slug: "monetization_base_path",
447
+ label: "Public Monetization Base Path",
448
+ defaultValue: "https://ibl.ai/buy/",
449
+ description:
450
+ "Base URL for public paywall product pages. The product unique ID will be appended to this path.",
451
+ type: "string",
452
+ }, */
445
453
  ],
446
454
  };
447
455
  // SkillsAI platform configuration
@@ -2882,6 +2890,12 @@ async function validateJwtToken(storageService) {
2882
2890
  if (!edxJwtToken || !userData) {
2883
2891
  return false;
2884
2892
  }
2893
+ // Skip JWT validation if token is not in JWT format (e.g. opaque LTI tokens)
2894
+ const parts = edxJwtToken.split(".");
2895
+ if (parts.length !== 3) {
2896
+ console.warn("[AuthProvider] Token is not a valid JWT format, skipping validation");
2897
+ return false;
2898
+ }
2885
2899
  const decodedToken = jwtDecode(edxJwtToken);
2886
2900
  const userDataObj = JSON.parse(userData);
2887
2901
  // Compare user_id from token with user_id from user_data
@@ -3362,6 +3376,7 @@ function TenantProvider({ children, fallback, onAuthSuccess, onAuthFailure, curr
3362
3376
  "/roles/",
3363
3377
  "/policies/",
3364
3378
  "/usergroups/",
3379
+ "/watchedgroups/",
3365
3380
  ],
3366
3381
  },
3367
3382
  }).unwrap();
@@ -15583,6 +15598,15 @@ createApi({
15583
15598
  }),
15584
15599
  invalidatesTags: ['paywallConfig', 'paywalls'],
15585
15600
  }),
15601
+ updatePaywall: builder.mutation({
15602
+ query: ({ platform_key, item_type, item_id, ...body }) => ({
15603
+ url: MONETIZATION_ENDPOINTS.PAYWALL_CONFIG.path(platform_key, item_type, item_id),
15604
+ service: MONETIZATION_ENDPOINTS.PAYWALL_CONFIG.service,
15605
+ method: 'PUT',
15606
+ body: JSON.stringify(body),
15607
+ }),
15608
+ invalidatesTags: ['paywallConfig', 'paywalls'],
15609
+ }),
15586
15610
  disablePaywall: builder.mutation({
15587
15611
  query: ({ platform_key, item_type, item_id }) => ({
15588
15612
  url: MONETIZATION_ENDPOINTS.PAYWALL_CONFIG.path(platform_key, item_type, item_id),
@@ -15642,6 +15666,9 @@ createApi({
15642
15666
  url: MONETIZATION_ENDPOINTS.ACCESS_CHECK.path(platform_key, item_type, item_id),
15643
15667
  service: MONETIZATION_ENDPOINTS.ACCESS_CHECK.service,
15644
15668
  method: 'GET',
15669
+ // Treat paywall-related 4xx (e.g. 402 Payment Required) as success so the
15670
+ // response body (has_access, pricing, reason, …) reaches the caller as `data`.
15671
+ validateStatus: (response) => response.ok || [402].includes(response.status),
15645
15672
  }),
15646
15673
  providesTags: ['accessCheck'],
15647
15674
  }),
@@ -19104,6 +19131,231 @@ createApi({
19104
19131
  }),
19105
19132
  });
19106
19133
 
19134
+ const WATCHED_GROUPS_REDUCER_PATH = 'watchedGroupsApiSlice';
19135
+ const WATCHED_GROUPS_QUERY_KEYS = {
19136
+ WATCHED_GROUPS: 'WATCHED_GROUPS',
19137
+ WATCHED_GROUP: 'WATCHED_GROUP',
19138
+ WATCHED_USERS: 'WATCHED_USERS',
19139
+ WATCHERS: 'WATCHERS',
19140
+ WATCHER: 'WATCHER',
19141
+ };
19142
+ const WATCHED_GROUPS_ENDPOINTS = {
19143
+ LIST_WATCHED_GROUPS: {
19144
+ service: SERVICES.DM,
19145
+ path: () => `/api/core/watched-groups/`,
19146
+ },
19147
+ CREATE_WATCHED_GROUP: {
19148
+ service: SERVICES.DM,
19149
+ path: () => `/api/core/watched-groups/`,
19150
+ },
19151
+ GET_WATCHED_GROUP: {
19152
+ service: SERVICES.DM,
19153
+ path: (id) => `/api/core/watched-groups/${id}/`,
19154
+ },
19155
+ UPDATE_WATCHED_GROUP: {
19156
+ service: SERVICES.DM,
19157
+ path: (id) => `/api/core/watched-groups/${id}/`,
19158
+ },
19159
+ DELETE_WATCHED_GROUP: {
19160
+ service: SERVICES.DM,
19161
+ path: (id) => `/api/core/watched-groups/${id}/`,
19162
+ },
19163
+ LIST_WATCHED_USERS: {
19164
+ service: SERVICES.DM,
19165
+ path: (watchedGroupPk) => `/api/core/watched-groups/${watchedGroupPk}/watched-users/`,
19166
+ },
19167
+ ADD_WATCHED_USER: {
19168
+ service: SERVICES.DM,
19169
+ path: (watchedGroupPk) => `/api/core/watched-groups/${watchedGroupPk}/watched-users/`,
19170
+ },
19171
+ REMOVE_WATCHED_USER: {
19172
+ service: SERVICES.DM,
19173
+ path: (watchedGroupPk, id) => `/api/core/watched-groups/${watchedGroupPk}/watched-users/${id}/`,
19174
+ },
19175
+ LIST_WATCHERS: {
19176
+ service: SERVICES.DM,
19177
+ path: (watchedGroupPk) => `/api/core/watched-groups/${watchedGroupPk}/watchers/`,
19178
+ },
19179
+ ADD_WATCHER: {
19180
+ service: SERVICES.DM,
19181
+ path: (watchedGroupPk) => `/api/core/watched-groups/${watchedGroupPk}/watchers/`,
19182
+ },
19183
+ GET_WATCHER: {
19184
+ service: SERVICES.DM,
19185
+ path: (watchedGroupPk, id) => `/api/core/watched-groups/${watchedGroupPk}/watchers/${id}/`,
19186
+ },
19187
+ UPDATE_WATCHER: {
19188
+ service: SERVICES.DM,
19189
+ path: (watchedGroupPk, id) => `/api/core/watched-groups/${watchedGroupPk}/watchers/${id}/`,
19190
+ },
19191
+ DELETE_WATCHER: {
19192
+ service: SERVICES.DM,
19193
+ path: (watchedGroupPk, id) => `/api/core/watched-groups/${watchedGroupPk}/watchers/${id}/`,
19194
+ },
19195
+ };
19196
+
19197
+ createApi({
19198
+ reducerPath: WATCHED_GROUPS_REDUCER_PATH,
19199
+ baseQuery: iblFetchBaseQuery,
19200
+ tagTypes: [
19201
+ WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS,
19202
+ WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP,
19203
+ WATCHED_GROUPS_QUERY_KEYS.WATCHED_USERS,
19204
+ WATCHED_GROUPS_QUERY_KEYS.WATCHERS,
19205
+ WATCHED_GROUPS_QUERY_KEYS.WATCHER,
19206
+ ],
19207
+ endpoints: (builder) => ({
19208
+ getWatchedGroups: builder.query({
19209
+ query: (args) => ({
19210
+ url: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHED_GROUPS.path(),
19211
+ service: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHED_GROUPS.service,
19212
+ method: 'GET',
19213
+ params: args === null || args === void 0 ? void 0 : args.params,
19214
+ }),
19215
+ providesTags: [WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS],
19216
+ }),
19217
+ getWatchedGroup: builder.query({
19218
+ query: ({ id, params }) => ({
19219
+ url: WATCHED_GROUPS_ENDPOINTS.GET_WATCHED_GROUP.path(id),
19220
+ service: WATCHED_GROUPS_ENDPOINTS.GET_WATCHED_GROUP.service,
19221
+ method: 'GET',
19222
+ params,
19223
+ }),
19224
+ providesTags: (_result, _error, { id }) => [
19225
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id },
19226
+ ],
19227
+ }),
19228
+ createWatchedGroup: builder.mutation({
19229
+ query: ({ body, params }) => ({
19230
+ url: WATCHED_GROUPS_ENDPOINTS.CREATE_WATCHED_GROUP.path(),
19231
+ service: WATCHED_GROUPS_ENDPOINTS.CREATE_WATCHED_GROUP.service,
19232
+ method: 'POST',
19233
+ body,
19234
+ params,
19235
+ }),
19236
+ invalidatesTags: [WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS],
19237
+ }),
19238
+ updateWatchedGroup: builder.mutation({
19239
+ query: ({ id, body, params }) => ({
19240
+ url: WATCHED_GROUPS_ENDPOINTS.UPDATE_WATCHED_GROUP.path(id),
19241
+ service: WATCHED_GROUPS_ENDPOINTS.UPDATE_WATCHED_GROUP.service,
19242
+ method: 'PATCH',
19243
+ body,
19244
+ params,
19245
+ }),
19246
+ invalidatesTags: (_result, _error, { id }) => [
19247
+ WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS,
19248
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id },
19249
+ ],
19250
+ }),
19251
+ deleteWatchedGroup: builder.mutation({
19252
+ query: ({ id, params }) => ({
19253
+ url: WATCHED_GROUPS_ENDPOINTS.DELETE_WATCHED_GROUP.path(id),
19254
+ service: WATCHED_GROUPS_ENDPOINTS.DELETE_WATCHED_GROUP.service,
19255
+ method: 'DELETE',
19256
+ params,
19257
+ }),
19258
+ invalidatesTags: [WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUPS],
19259
+ }),
19260
+ getWatchedUsers: builder.query({
19261
+ query: ({ watchedGroupPk, params }) => ({
19262
+ url: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHED_USERS.path(watchedGroupPk),
19263
+ service: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHED_USERS.service,
19264
+ method: 'GET',
19265
+ params,
19266
+ }),
19267
+ providesTags: (_result, _error, { watchedGroupPk }) => [
19268
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_USERS, id: watchedGroupPk },
19269
+ ],
19270
+ }),
19271
+ addWatchedUser: builder.mutation({
19272
+ query: ({ watchedGroupPk, body, params }) => ({
19273
+ url: WATCHED_GROUPS_ENDPOINTS.ADD_WATCHED_USER.path(watchedGroupPk),
19274
+ service: WATCHED_GROUPS_ENDPOINTS.ADD_WATCHED_USER.service,
19275
+ method: 'POST',
19276
+ body,
19277
+ params,
19278
+ }),
19279
+ invalidatesTags: (_result, _error, { watchedGroupPk }) => [
19280
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_USERS, id: watchedGroupPk },
19281
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id: watchedGroupPk },
19282
+ ],
19283
+ }),
19284
+ removeWatchedUser: builder.mutation({
19285
+ query: ({ watchedGroupPk, id, params }) => ({
19286
+ url: WATCHED_GROUPS_ENDPOINTS.REMOVE_WATCHED_USER.path(watchedGroupPk, id),
19287
+ service: WATCHED_GROUPS_ENDPOINTS.REMOVE_WATCHED_USER.service,
19288
+ method: 'DELETE',
19289
+ params,
19290
+ }),
19291
+ invalidatesTags: (_result, _error, { watchedGroupPk }) => [
19292
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_USERS, id: watchedGroupPk },
19293
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id: watchedGroupPk },
19294
+ ],
19295
+ }),
19296
+ getWatchers: builder.query({
19297
+ query: ({ watchedGroupPk, params }) => ({
19298
+ url: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHERS.path(watchedGroupPk),
19299
+ service: WATCHED_GROUPS_ENDPOINTS.LIST_WATCHERS.service,
19300
+ method: 'GET',
19301
+ params,
19302
+ }),
19303
+ providesTags: (_result, _error, { watchedGroupPk }) => [
19304
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHERS, id: watchedGroupPk },
19305
+ ],
19306
+ }),
19307
+ addWatcher: builder.mutation({
19308
+ query: ({ watchedGroupPk, body, params }) => ({
19309
+ url: WATCHED_GROUPS_ENDPOINTS.ADD_WATCHER.path(watchedGroupPk),
19310
+ service: WATCHED_GROUPS_ENDPOINTS.ADD_WATCHER.service,
19311
+ method: 'POST',
19312
+ body,
19313
+ params,
19314
+ }),
19315
+ invalidatesTags: (_result, _error, { watchedGroupPk }) => [
19316
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHERS, id: watchedGroupPk },
19317
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id: watchedGroupPk },
19318
+ ],
19319
+ }),
19320
+ getWatcher: builder.query({
19321
+ query: ({ watchedGroupPk, id, params }) => ({
19322
+ url: WATCHED_GROUPS_ENDPOINTS.GET_WATCHER.path(watchedGroupPk, id),
19323
+ service: WATCHED_GROUPS_ENDPOINTS.GET_WATCHER.service,
19324
+ method: 'GET',
19325
+ params,
19326
+ }),
19327
+ providesTags: (_result, _error, { watchedGroupPk, id }) => [
19328
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHER, id: `${watchedGroupPk}-${id}` },
19329
+ ],
19330
+ }),
19331
+ updateWatcher: builder.mutation({
19332
+ query: ({ watchedGroupPk, id, body, params }) => ({
19333
+ url: WATCHED_GROUPS_ENDPOINTS.UPDATE_WATCHER.path(watchedGroupPk, id),
19334
+ service: WATCHED_GROUPS_ENDPOINTS.UPDATE_WATCHER.service,
19335
+ method: 'PATCH',
19336
+ body,
19337
+ params,
19338
+ }),
19339
+ invalidatesTags: (_result, _error, { watchedGroupPk, id }) => [
19340
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHERS, id: watchedGroupPk },
19341
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHER, id: `${watchedGroupPk}-${id}` },
19342
+ ],
19343
+ }),
19344
+ deleteWatcher: builder.mutation({
19345
+ query: ({ watchedGroupPk, id, params }) => ({
19346
+ url: WATCHED_GROUPS_ENDPOINTS.DELETE_WATCHER.path(watchedGroupPk, id),
19347
+ service: WATCHED_GROUPS_ENDPOINTS.DELETE_WATCHER.service,
19348
+ method: 'DELETE',
19349
+ params,
19350
+ }),
19351
+ invalidatesTags: (_result, _error, { watchedGroupPk }) => [
19352
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHERS, id: watchedGroupPk },
19353
+ { type: WATCHED_GROUPS_QUERY_KEYS.WATCHED_GROUP, id: watchedGroupPk },
19354
+ ],
19355
+ }),
19356
+ }),
19357
+ });
19358
+
19107
19359
  function useMentorSettings({ mentorId, tenantKey, username, isPublicRoute, }) {
19108
19360
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
19109
19361
  const isLoggedIn = username !== ANONYMOUS_USERNAME;