@iblai/data-layer 1.9.4 → 1.9.6
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.d.ts +20993 -18327
- package/dist/index.esm.js +266 -5
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +280 -4
- package/dist/index.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/src/config.d.ts +1 -0
- package/dist/src/constants.d.ts +2 -1
- package/dist/src/features/core/api-slice.d.ts +891 -1
- package/dist/src/features/core/types.d.ts +57 -0
- package/dist/src/features/studio-authoring/__tests__/api-slice.test.d.ts +1 -0
- package/dist/src/features/studio-authoring/api-slice.d.ts +1601 -0
- package/dist/src/features/studio-authoring/constants.d.ts +39 -0
- package/dist/src/features/studio-authoring/types.d.ts +65 -0
- package/dist/src/features/utils.d.ts +5 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/utils/__tests__/index.test.d.ts +1 -0
- package/dist/src/utils/index.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -39052,6 +39052,7 @@ exports.SERVICES = void 0;
|
|
|
39052
39052
|
SERVICES["LMS"] = "LMS";
|
|
39053
39053
|
SERVICES["DM"] = "DM";
|
|
39054
39054
|
SERVICES["AXD"] = "AXD";
|
|
39055
|
+
SERVICES["STUDIO"] = "STUDIO";
|
|
39055
39056
|
})(exports.SERVICES || (exports.SERVICES = {}));
|
|
39056
39057
|
|
|
39057
39058
|
class Config {
|
|
@@ -39061,6 +39062,7 @@ Config.lmsUrl = 'https://learn.iblai.app';
|
|
|
39061
39062
|
Config.dmUrl = 'https://base.manager.iblai.app';
|
|
39062
39063
|
Config.axdUrl = 'https://base.manager.iblai.app';
|
|
39063
39064
|
Config.mentorIframeUrl = 'https://mentor.iblai.tech';
|
|
39065
|
+
Config.studioUrl = 'https://studio.iblai.app';
|
|
39064
39066
|
Config.httpErrorHandlers = {};
|
|
39065
39067
|
|
|
39066
39068
|
class IblDataLayer {
|
|
@@ -39127,10 +39129,23 @@ const getServiceUrl = (service) => {
|
|
|
39127
39129
|
return Config.lmsUrl;
|
|
39128
39130
|
case exports.SERVICES.DM:
|
|
39129
39131
|
return Config.dmUrl;
|
|
39132
|
+
case exports.SERVICES.STUDIO:
|
|
39133
|
+
return Config.studioUrl;
|
|
39130
39134
|
default:
|
|
39131
39135
|
return Config.dmUrl;
|
|
39132
39136
|
}
|
|
39133
39137
|
};
|
|
39138
|
+
/**
|
|
39139
|
+
* Read a cookie value by name. Returns null outside the browser or when the
|
|
39140
|
+
* cookie is absent. Used for Studio's CSRF token (`csrftoken`).
|
|
39141
|
+
*/
|
|
39142
|
+
const getCookieValue = (name) => {
|
|
39143
|
+
if (typeof document === 'undefined') {
|
|
39144
|
+
return null;
|
|
39145
|
+
}
|
|
39146
|
+
const match = document.cookie.match(new RegExp(`(?:^|;\\s*)${name}=([^;]*)`));
|
|
39147
|
+
return match ? decodeURIComponent(match[1]) : null;
|
|
39148
|
+
};
|
|
39134
39149
|
/**
|
|
39135
39150
|
* Get the headers required for API requests based on the provided service type.
|
|
39136
39151
|
*/
|
|
@@ -39154,7 +39169,8 @@ const getHeaders = async (service) => {
|
|
|
39154
39169
|
return; // No Authorization header when no valid token
|
|
39155
39170
|
}
|
|
39156
39171
|
let prefix;
|
|
39157
|
-
|
|
39172
|
+
// Studio (Open edX CMS) accepts the same edX token as the LMS.
|
|
39173
|
+
if (service === exports.SERVICES.LMS || service === exports.SERVICES.STUDIO) {
|
|
39158
39174
|
if (token.length > 30) {
|
|
39159
39175
|
prefix = 'JWT';
|
|
39160
39176
|
}
|
|
@@ -39257,7 +39273,7 @@ const isErrorObject = (data) => {
|
|
|
39257
39273
|
const baseQuery = (service, jsonContentType = true, contentType, skipAuth = false) => query.fetchBaseQuery({
|
|
39258
39274
|
baseUrl: getServiceUrl(service),
|
|
39259
39275
|
timeout: 30000, // 30 second timeout
|
|
39260
|
-
credentials: service === exports.SERVICES.LEGACY_LMS ? 'include' : 'omit',
|
|
39276
|
+
credentials: service === exports.SERVICES.LEGACY_LMS || service === exports.SERVICES.STUDIO ? 'include' : 'omit',
|
|
39261
39277
|
prepareHeaders: async (headers) => {
|
|
39262
39278
|
// Only add auth headers if skipAuth is false
|
|
39263
39279
|
if (!skipAuth) {
|
|
@@ -39275,6 +39291,18 @@ const baseQuery = (service, jsonContentType = true, contentType, skipAuth = fals
|
|
|
39275
39291
|
if (contentType) {
|
|
39276
39292
|
headers.set('Content-Type', contentType);
|
|
39277
39293
|
}
|
|
39294
|
+
// Studio (Open edX CMS) endpoints require the Django CSRF token and only
|
|
39295
|
+
// return JSON when asked for it explicitly.
|
|
39296
|
+
if (service === exports.SERVICES.STUDIO) {
|
|
39297
|
+
const csrfToken = getCookieValue('csrftoken');
|
|
39298
|
+
if (csrfToken) {
|
|
39299
|
+
headers.set('X-CSRFToken', csrfToken);
|
|
39300
|
+
}
|
|
39301
|
+
if (!headers.has('Accept')) {
|
|
39302
|
+
headers.set('Accept', 'application/json');
|
|
39303
|
+
}
|
|
39304
|
+
headers.set('X-Requested-With', 'XMLHttpRequest');
|
|
39305
|
+
}
|
|
39278
39306
|
// Add CSRF protection headers for LMS service
|
|
39279
39307
|
if (service === exports.SERVICES.LMS) {
|
|
39280
39308
|
// Use mentorIframeUrl for both origin and referer
|
|
@@ -40782,6 +40810,83 @@ const coreApiSlice = react.createApi({
|
|
|
40782
40810
|
return response.json();
|
|
40783
40811
|
}),
|
|
40784
40812
|
}),
|
|
40813
|
+
// ── RBAC resource discovery (incremental resource-path builder) ──
|
|
40814
|
+
// Custom calls: the pinned @iblai/iblai-api client does not expose the
|
|
40815
|
+
// discovery endpoint yet, and list_url is a dynamic relative URL returned
|
|
40816
|
+
// by the discovery response rather than a fixed generated route.
|
|
40817
|
+
getRbacResourceDiscovery: builder.query({
|
|
40818
|
+
...buildEndpointFromService(exports.SERVICES.DM, async (args) => {
|
|
40819
|
+
// URLSearchParams escapes the slashes in `path` for us.
|
|
40820
|
+
const queryParams = new URLSearchParams({ path: args.path });
|
|
40821
|
+
if (args.platformKey)
|
|
40822
|
+
queryParams.set('platform_key', args.platformKey);
|
|
40823
|
+
const url = `${OpenAPI.BASE}/api/core/rbac/resources/?${queryParams.toString()}`;
|
|
40824
|
+
const response = await fetch(url, {
|
|
40825
|
+
method: 'GET',
|
|
40826
|
+
headers: OpenAPI.HEADERS,
|
|
40827
|
+
credentials: 'omit',
|
|
40828
|
+
});
|
|
40829
|
+
if (!response.ok) {
|
|
40830
|
+
throw Object.assign(new Error('Failed to fetch RBAC resource discovery'), {
|
|
40831
|
+
status: response.status,
|
|
40832
|
+
body: await response.text(),
|
|
40833
|
+
});
|
|
40834
|
+
}
|
|
40835
|
+
return response.json();
|
|
40836
|
+
}),
|
|
40837
|
+
}),
|
|
40838
|
+
getRbacResourceList: builder.query({
|
|
40839
|
+
...buildEndpointFromService(exports.SERVICES.DM, async (args) => {
|
|
40840
|
+
var _a, _b, _c, _d, _e, _f;
|
|
40841
|
+
const url = new URL(`${OpenAPI.BASE}${args.listUrl}`);
|
|
40842
|
+
for (const [key, value] of Object.entries((_a = args.searchParams) !== null && _a !== void 0 ? _a : {})) {
|
|
40843
|
+
if (value !== '')
|
|
40844
|
+
url.searchParams.set(key, value);
|
|
40845
|
+
}
|
|
40846
|
+
const response = await fetch(url.toString(), {
|
|
40847
|
+
method: 'GET',
|
|
40848
|
+
headers: OpenAPI.HEADERS,
|
|
40849
|
+
credentials: 'omit',
|
|
40850
|
+
});
|
|
40851
|
+
if (!response.ok) {
|
|
40852
|
+
throw Object.assign(new Error('Failed to fetch RBAC resource list'), {
|
|
40853
|
+
status: response.status,
|
|
40854
|
+
body: await response.text(),
|
|
40855
|
+
});
|
|
40856
|
+
}
|
|
40857
|
+
const raw = await response.json();
|
|
40858
|
+
// The list endpoints vary per collection: bare arrays, DRF
|
|
40859
|
+
// envelopes ({results}), or nested ({results: {data}} / {data}).
|
|
40860
|
+
const rows = Array.isArray(raw)
|
|
40861
|
+
? raw
|
|
40862
|
+
: Array.isArray(raw === null || raw === void 0 ? void 0 : raw.results)
|
|
40863
|
+
? raw.results
|
|
40864
|
+
: Array.isArray((_b = raw === null || raw === void 0 ? void 0 : raw.results) === null || _b === void 0 ? void 0 : _b.data)
|
|
40865
|
+
? raw.results.data
|
|
40866
|
+
: Array.isArray(raw === null || raw === void 0 ? void 0 : raw.data)
|
|
40867
|
+
? raw.data
|
|
40868
|
+
: [];
|
|
40869
|
+
const pkField = (_d = (_c = args.resultFields) === null || _c === void 0 ? void 0 : _c.pk) !== null && _d !== void 0 ? _d : 'id';
|
|
40870
|
+
const nameField = (_f = (_e = args.resultFields) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : 'name';
|
|
40871
|
+
const items = rows
|
|
40872
|
+
.filter((row) => (row === null || row === void 0 ? void 0 : row[pkField]) !== undefined && (row === null || row === void 0 ? void 0 : row[pkField]) !== null)
|
|
40873
|
+
.map((row) => {
|
|
40874
|
+
// Some rows (e.g. platform users) have a blank name — fall back
|
|
40875
|
+
// to their email, then to the pk, so the picker never shows an
|
|
40876
|
+
// empty label.
|
|
40877
|
+
const rawName = row[nameField];
|
|
40878
|
+
const name = (typeof rawName === 'string' ? rawName.trim() : rawName) ||
|
|
40879
|
+
(typeof row.email === 'string' ? row.email : '') ||
|
|
40880
|
+
String(row[pkField]);
|
|
40881
|
+
return {
|
|
40882
|
+
pk: row[pkField],
|
|
40883
|
+
name: String(name),
|
|
40884
|
+
raw: row,
|
|
40885
|
+
};
|
|
40886
|
+
});
|
|
40887
|
+
return { items, raw };
|
|
40888
|
+
}),
|
|
40889
|
+
}),
|
|
40785
40890
|
getRbacTeamsAccessList: builder.query({
|
|
40786
40891
|
...buildEndpointFromDmService(CoreService.coreRbacTeamsAccessList),
|
|
40787
40892
|
providesTags: ['RbacTeamsAccess'],
|
|
@@ -40867,7 +40972,7 @@ const coreApiSlice = react.createApi({
|
|
|
40867
40972
|
}),
|
|
40868
40973
|
}),
|
|
40869
40974
|
});
|
|
40870
|
-
const { useCreateRedirectTokenMutation, useGetPlatformInfoQuery, useGetRbacPermissionsMutation, useLazyGetPlatformInfoQuery, useUpdatePlatformInfoMutation, useUpdateUserStatusMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, useGetRbacGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useGetRbacGroupDetailsQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetRbacRolesQuery, useLazyGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, usePartialUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetDepartmentMemberCheckQuery, useLazyGetDepartmentMemberCheckQuery, useGetRbacMentorAccessListQuery, useUpdateRbacMentorAccessMutation, useGetRbacActionsDefinitionQuery, useLazyGetRbacActionsDefinitionQuery, useGetRbacTeamsAccessListQuery, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation,
|
|
40975
|
+
const { useCreateRedirectTokenMutation, useGetPlatformInfoQuery, useGetRbacPermissionsMutation, useLazyGetPlatformInfoQuery, useUpdatePlatformInfoMutation, useUpdateUserStatusMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, useGetRbacGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useGetRbacGroupDetailsQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetRbacRolesQuery, useLazyGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, usePartialUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetDepartmentMemberCheckQuery, useLazyGetDepartmentMemberCheckQuery, useGetRbacMentorAccessListQuery, useUpdateRbacMentorAccessMutation, useGetRbacActionsDefinitionQuery, useLazyGetRbacActionsDefinitionQuery, useGetRbacResourceDiscoveryQuery, useLazyGetRbacResourceDiscoveryQuery, useGetRbacResourceListQuery, useLazyGetRbacResourceListQuery, useGetRbacTeamsAccessListQuery, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation,
|
|
40871
40976
|
// LTI Keys
|
|
40872
40977
|
useGetLtiKeysQuery, useGetLtiKeyDetailQuery, useLazyGetLtiKeyDetailQuery, useCreateLtiKeyMutation, useUpdateLtiKeyMutation, useDeleteLtiKeyMutation,
|
|
40873
40978
|
// LTI Agent (Mentor) Links
|
|
@@ -42757,6 +42862,155 @@ const edxSsoApiSlice = react.createApi({
|
|
|
42757
42862
|
});
|
|
42758
42863
|
const { useGetEdxSSOTokenQuery, useLazyGetEdxSSOTokenQuery } = edxSsoApiSlice;
|
|
42759
42864
|
|
|
42865
|
+
const STUDIO_AUTHORING_ENDPOINTS = {
|
|
42866
|
+
CREATE_COURSE: {
|
|
42867
|
+
path: (contentType) => `/api/ibl/manage/${contentType}/`,
|
|
42868
|
+
service: exports.SERVICES.STUDIO,
|
|
42869
|
+
},
|
|
42870
|
+
DELETE_COURSE: {
|
|
42871
|
+
path: () => '/api/ibl/manage/course/delete',
|
|
42872
|
+
service: exports.SERVICES.STUDIO,
|
|
42873
|
+
},
|
|
42874
|
+
COURSE_SETTINGS: {
|
|
42875
|
+
path: (contentType) => `/api/ibl/v1/${contentType}_settings/`,
|
|
42876
|
+
service: exports.SERVICES.STUDIO,
|
|
42877
|
+
},
|
|
42878
|
+
CREATE_XBLOCK: {
|
|
42879
|
+
path: () => '/xblock/',
|
|
42880
|
+
service: exports.SERVICES.STUDIO,
|
|
42881
|
+
},
|
|
42882
|
+
UPDATE_XBLOCK: {
|
|
42883
|
+
path: (locator) => `/xblock/${locator}`,
|
|
42884
|
+
service: exports.SERVICES.STUDIO,
|
|
42885
|
+
},
|
|
42886
|
+
SCORM_SUBMIT: {
|
|
42887
|
+
path: (locator) => `/xblock/${locator}/handler/studio_submit`,
|
|
42888
|
+
service: exports.SERVICES.STUDIO,
|
|
42889
|
+
},
|
|
42890
|
+
UPLOAD_ASSET: {
|
|
42891
|
+
path: (courseKey) => `/assets/${courseKey}/`,
|
|
42892
|
+
service: exports.SERVICES.STUDIO,
|
|
42893
|
+
},
|
|
42894
|
+
ADVANCED_SETTINGS: {
|
|
42895
|
+
path: (courseKey) => `/settings/advanced/${courseKey}`,
|
|
42896
|
+
service: exports.SERVICES.STUDIO,
|
|
42897
|
+
},
|
|
42898
|
+
VIDEO_UPLOAD: {
|
|
42899
|
+
path: (courseKey) => `/api/v1/ibl/course/${courseKey}/s3-upload`,
|
|
42900
|
+
service: exports.SERVICES.STUDIO,
|
|
42901
|
+
},
|
|
42902
|
+
};
|
|
42903
|
+
|
|
42904
|
+
/**
|
|
42905
|
+
* Studio (Open edX CMS) course-authoring endpoints. These hit the Studio host
|
|
42906
|
+
* (`Config.studioUrl`) with cookie-session auth + CSRF token, mirroring how
|
|
42907
|
+
* Studio's own frontend talks to it.
|
|
42908
|
+
*/
|
|
42909
|
+
const studioAuthoringApiSlice = react.createApi({
|
|
42910
|
+
reducerPath: 'studioAuthoringApiSlice',
|
|
42911
|
+
baseQuery: iblFetchBaseQuery,
|
|
42912
|
+
endpoints: (builder) => ({
|
|
42913
|
+
/** Create the course (or library) shell. Returns `course_key`. */
|
|
42914
|
+
createStudioCourse: builder.mutation({
|
|
42915
|
+
query: ({ courseData, contentType = 'course' }) => ({
|
|
42916
|
+
url: STUDIO_AUTHORING_ENDPOINTS.CREATE_COURSE.path(contentType),
|
|
42917
|
+
service: STUDIO_AUTHORING_ENDPOINTS.CREATE_COURSE.service,
|
|
42918
|
+
method: 'POST',
|
|
42919
|
+
body: courseData,
|
|
42920
|
+
}),
|
|
42921
|
+
}),
|
|
42922
|
+
/** Delete a course — used as rollback when a later creation step fails. */
|
|
42923
|
+
deleteStudioCourse: builder.mutation({
|
|
42924
|
+
query: ({ courseKey }) => ({
|
|
42925
|
+
url: STUDIO_AUTHORING_ENDPOINTS.DELETE_COURSE.path(),
|
|
42926
|
+
service: STUDIO_AUTHORING_ENDPOINTS.DELETE_COURSE.service,
|
|
42927
|
+
method: 'POST',
|
|
42928
|
+
body: { course_key: courseKey },
|
|
42929
|
+
}),
|
|
42930
|
+
}),
|
|
42931
|
+
/** Set the full course settings/metadata payload. */
|
|
42932
|
+
updateStudioCourseSettings: builder.mutation({
|
|
42933
|
+
query: ({ settings, contentType = 'course' }) => ({
|
|
42934
|
+
url: STUDIO_AUTHORING_ENDPOINTS.COURSE_SETTINGS.path(contentType),
|
|
42935
|
+
service: STUDIO_AUTHORING_ENDPOINTS.COURSE_SETTINGS.service,
|
|
42936
|
+
method: 'POST',
|
|
42937
|
+
body: settings,
|
|
42938
|
+
}),
|
|
42939
|
+
}),
|
|
42940
|
+
/**
|
|
42941
|
+
* Create an xblock node (chapter / sequential / vertical / video / scorm)
|
|
42942
|
+
* under `parent_locator`.
|
|
42943
|
+
*/
|
|
42944
|
+
createStudioXblock: builder.mutation({
|
|
42945
|
+
query: (blockData) => ({
|
|
42946
|
+
url: STUDIO_AUTHORING_ENDPOINTS.CREATE_XBLOCK.path(),
|
|
42947
|
+
service: STUDIO_AUTHORING_ENDPOINTS.CREATE_XBLOCK.service,
|
|
42948
|
+
method: 'POST',
|
|
42949
|
+
body: blockData,
|
|
42950
|
+
}),
|
|
42951
|
+
}),
|
|
42952
|
+
/**
|
|
42953
|
+
* Update an existing xblock by locator — used for video metadata and for
|
|
42954
|
+
* publishing a unit (`{ publish: 'make_public' }`).
|
|
42955
|
+
*/
|
|
42956
|
+
updateStudioXblock: builder.mutation({
|
|
42957
|
+
query: ({ locator, blockData }) => ({
|
|
42958
|
+
url: STUDIO_AUTHORING_ENDPOINTS.UPDATE_XBLOCK.path(encodeURIComponent(locator)),
|
|
42959
|
+
service: STUDIO_AUTHORING_ENDPOINTS.UPDATE_XBLOCK.service,
|
|
42960
|
+
method: 'POST',
|
|
42961
|
+
body: blockData,
|
|
42962
|
+
}),
|
|
42963
|
+
}),
|
|
42964
|
+
/** Upload the SCORM zip to the scorm xblock's `studio_submit` handler. */
|
|
42965
|
+
uploadStudioScormPackage: builder.mutation({
|
|
42966
|
+
query: ({ locator, formData }) => ({
|
|
42967
|
+
url: STUDIO_AUTHORING_ENDPOINTS.SCORM_SUBMIT.path(encodeURIComponent(locator)),
|
|
42968
|
+
service: STUDIO_AUTHORING_ENDPOINTS.SCORM_SUBMIT.service,
|
|
42969
|
+
method: 'POST',
|
|
42970
|
+
body: formData,
|
|
42971
|
+
isJson: false,
|
|
42972
|
+
}),
|
|
42973
|
+
}),
|
|
42974
|
+
/** Upload a course asset (e.g. the course card image). */
|
|
42975
|
+
uploadStudioCourseAsset: builder.mutation({
|
|
42976
|
+
query: ({ courseKey, formData }) => ({
|
|
42977
|
+
url: STUDIO_AUTHORING_ENDPOINTS.UPLOAD_ASSET.path(encodeURIComponent(courseKey)),
|
|
42978
|
+
service: STUDIO_AUTHORING_ENDPOINTS.UPLOAD_ASSET.service,
|
|
42979
|
+
method: 'POST',
|
|
42980
|
+
body: formData,
|
|
42981
|
+
isJson: true,
|
|
42982
|
+
// Asset upload is authenticated by the Studio session cookie + CSRF
|
|
42983
|
+
// token alone; no Authorization header.
|
|
42984
|
+
skipAuth: true,
|
|
42985
|
+
// Matches how Studio's own frontend requests the asset endpoint. Set
|
|
42986
|
+
// explicitly so the base query keeps it instead of defaulting to
|
|
42987
|
+
// `application/json`.
|
|
42988
|
+
headers: { Accept: 'application/json, text/plain, */*' },
|
|
42989
|
+
}),
|
|
42990
|
+
}),
|
|
42991
|
+
/** Set Studio advanced settings (e.g. enable the `scorm` module). */
|
|
42992
|
+
setStudioAdvancedSettings: builder.mutation({
|
|
42993
|
+
query: ({ courseKey, settings }) => ({
|
|
42994
|
+
url: STUDIO_AUTHORING_ENDPOINTS.ADVANCED_SETTINGS.path(encodeURIComponent(courseKey)),
|
|
42995
|
+
service: STUDIO_AUTHORING_ENDPOINTS.ADVANCED_SETTINGS.service,
|
|
42996
|
+
method: 'POST',
|
|
42997
|
+
body: settings,
|
|
42998
|
+
}),
|
|
42999
|
+
}),
|
|
43000
|
+
/** Upload a raw video file to course storage; returns `{ file_url }`. */
|
|
43001
|
+
uploadStudioCourseVideo: builder.mutation({
|
|
43002
|
+
query: ({ courseKey, formData }) => ({
|
|
43003
|
+
url: STUDIO_AUTHORING_ENDPOINTS.VIDEO_UPLOAD.path(encodeURIComponent(courseKey)),
|
|
43004
|
+
service: STUDIO_AUTHORING_ENDPOINTS.VIDEO_UPLOAD.service,
|
|
43005
|
+
method: 'POST',
|
|
43006
|
+
body: formData,
|
|
43007
|
+
isJson: false,
|
|
43008
|
+
}),
|
|
43009
|
+
}),
|
|
43010
|
+
}),
|
|
43011
|
+
});
|
|
43012
|
+
const { useCreateStudioCourseMutation, useDeleteStudioCourseMutation, useUpdateStudioCourseSettingsMutation, useCreateStudioXblockMutation, useUpdateStudioXblockMutation, useUploadStudioScormPackageMutation, useUploadStudioCourseAssetMutation, useSetStudioAdvancedSettingsMutation, useUploadStudioCourseVideoMutation, } = studioAuthoringApiSlice;
|
|
43013
|
+
|
|
42760
43014
|
const searchApiSlice = react.createApi({
|
|
42761
43015
|
reducerPath: 'searchApiSlice',
|
|
42762
43016
|
baseQuery: iblFakeBaseQuery,
|
|
@@ -46170,6 +46424,7 @@ const mentorReducer = {
|
|
|
46170
46424
|
[coursesApiSlice.reducerPath]: coursesApiSlice.reducer,
|
|
46171
46425
|
[courseMetadataApiSlice.reducerPath]: courseMetadataApiSlice.reducer,
|
|
46172
46426
|
[edxSsoApiSlice.reducerPath]: edxSsoApiSlice.reducer,
|
|
46427
|
+
[studioAuthoringApiSlice.reducerPath]: studioAuthoringApiSlice.reducer,
|
|
46173
46428
|
[clawApiSlice.reducerPath]: clawApiSlice.reducer,
|
|
46174
46429
|
[evaluationsApiSlice.reducerPath]: evaluationsApiSlice.reducer,
|
|
46175
46430
|
[watchedGroupsApiSlice.reducerPath]: watchedGroupsApiSlice.reducer,
|
|
@@ -46227,6 +46482,7 @@ const mentorMiddleware = [
|
|
|
46227
46482
|
coursesApiSlice.middleware,
|
|
46228
46483
|
courseMetadataApiSlice.middleware,
|
|
46229
46484
|
edxSsoApiSlice.middleware,
|
|
46485
|
+
studioAuthoringApiSlice.middleware,
|
|
46230
46486
|
clawApiSlice.middleware,
|
|
46231
46487
|
evaluationsApiSlice.middleware,
|
|
46232
46488
|
watchedGroupsApiSlice.middleware,
|
|
@@ -46272,6 +46528,7 @@ const skillsReducer = {
|
|
|
46272
46528
|
[coursesApiSlice.reducerPath]: coursesApiSlice.reducer,
|
|
46273
46529
|
[courseMetadataApiSlice.reducerPath]: courseMetadataApiSlice.reducer,
|
|
46274
46530
|
[edxSsoApiSlice.reducerPath]: edxSsoApiSlice.reducer,
|
|
46531
|
+
[studioAuthoringApiSlice.reducerPath]: studioAuthoringApiSlice.reducer,
|
|
46275
46532
|
[watchedGroupsApiSlice.reducerPath]: watchedGroupsApiSlice.reducer,
|
|
46276
46533
|
[chatPrivacyApiSlice.reducerPath]: chatPrivacyApiSlice.reducer,
|
|
46277
46534
|
};
|
|
@@ -46313,16 +46570,20 @@ const skillsMiddleware = [
|
|
|
46313
46570
|
coursesApiSlice.middleware,
|
|
46314
46571
|
courseMetadataApiSlice.middleware,
|
|
46315
46572
|
edxSsoApiSlice.middleware,
|
|
46573
|
+
studioAuthoringApiSlice.middleware,
|
|
46316
46574
|
watchedGroupsApiSlice.middleware,
|
|
46317
46575
|
chatPrivacyApiSlice.middleware,
|
|
46318
46576
|
];
|
|
46319
46577
|
|
|
46320
|
-
const initializeDataLayer = (dmUrl, lmsUrl, legacyLmsUrl, storageService, httpErrorHandler = {}) => {
|
|
46578
|
+
const initializeDataLayer = (dmUrl, lmsUrl, legacyLmsUrl, storageService, httpErrorHandler = {}, studioUrl) => {
|
|
46321
46579
|
IblDataLayer.storage = storageService;
|
|
46322
46580
|
Config.dmUrl = dmUrl;
|
|
46323
46581
|
Config.lmsUrl = lmsUrl;
|
|
46324
46582
|
Config.legacyLmsUrl = legacyLmsUrl;
|
|
46325
46583
|
Config.httpErrorHandlers = httpErrorHandler;
|
|
46584
|
+
if (studioUrl) {
|
|
46585
|
+
Config.studioUrl = studioUrl;
|
|
46586
|
+
}
|
|
46326
46587
|
};
|
|
46327
46588
|
|
|
46328
46589
|
exports.APP_IDENTIFIERS = APP_IDENTIFIERS;
|
|
@@ -46390,6 +46651,7 @@ exports.PROJECTS_QUERY_KEYS = PROJECTS_QUERY_KEYS;
|
|
|
46390
46651
|
exports.QUERY_PARAMS = QUERY_PARAMS;
|
|
46391
46652
|
exports.RETIREMENT_ENDPOINTS = RETIREMENT_ENDPOINTS;
|
|
46392
46653
|
exports.STORAGE_KEYS = STORAGE_KEYS;
|
|
46654
|
+
exports.STUDIO_AUTHORING_ENDPOINTS = STUDIO_AUTHORING_ENDPOINTS;
|
|
46393
46655
|
exports.SUGGESTED_PRIVACY_ENTITIES = SUGGESTED_PRIVACY_ENTITIES;
|
|
46394
46656
|
exports.TENANT_IDENTIFIERS = TENANT_IDENTIFIERS;
|
|
46395
46657
|
exports.TENANT_LOGO_ENDPOINTS = TENANT_LOGO_ENDPOINTS;
|
|
@@ -46479,6 +46741,7 @@ exports.skillsApiSlice = skillsApiSlice;
|
|
|
46479
46741
|
exports.skillsMiddleware = skillsMiddleware;
|
|
46480
46742
|
exports.skillsReducer = skillsReducer;
|
|
46481
46743
|
exports.stripeApiSlice = stripeApiSlice;
|
|
46744
|
+
exports.studioAuthoringApiSlice = studioAuthoringApiSlice;
|
|
46482
46745
|
exports.tenantApiReducer = tenantApiReducer;
|
|
46483
46746
|
exports.tenantApiSlice = tenantApiSlice;
|
|
46484
46747
|
exports.tenantLogoApiSlice = tenantLogoApiSlice;
|
|
@@ -46559,6 +46822,8 @@ exports.useCreateSessionIdMutation = useCreateSessionIdMutation;
|
|
|
46559
46822
|
exports.useCreateShareableLinkMutation = useCreateShareableLinkMutation;
|
|
46560
46823
|
exports.useCreateStripeCheckoutSessionMutation = useCreateStripeCheckoutSessionMutation;
|
|
46561
46824
|
exports.useCreateStripeCustomerPortalMutation = useCreateStripeCustomerPortalMutation;
|
|
46825
|
+
exports.useCreateStudioCourseMutation = useCreateStudioCourseMutation;
|
|
46826
|
+
exports.useCreateStudioXblockMutation = useCreateStudioXblockMutation;
|
|
46562
46827
|
exports.useCreateTrainingDocumentRetrainScheduleMutation = useCreateTrainingDocumentRetrainScheduleMutation;
|
|
46563
46828
|
exports.useCreateUserCompanyMutation = useCreateUserCompanyMutation;
|
|
46564
46829
|
exports.useCreateUserEducationMutation = useCreateUserEducationMutation;
|
|
@@ -46607,6 +46872,7 @@ exports.useDeleteRbacGroupMutation = useDeleteRbacGroupMutation;
|
|
|
46607
46872
|
exports.useDeleteRbacPolicyMutation = useDeleteRbacPolicyMutation;
|
|
46608
46873
|
exports.useDeleteRbacRoleMutation = useDeleteRbacRoleMutation;
|
|
46609
46874
|
exports.useDeleteRecommendedPromptMutation = useDeleteRecommendedPromptMutation;
|
|
46875
|
+
exports.useDeleteStudioCourseMutation = useDeleteStudioCourseMutation;
|
|
46610
46876
|
exports.useDeleteTrainingDocumentMutation = useDeleteTrainingDocumentMutation;
|
|
46611
46877
|
exports.useDeleteUserEducationMutation = useDeleteUserEducationMutation;
|
|
46612
46878
|
exports.useDeleteUserExperienceMutation = useDeleteUserExperienceMutation;
|
|
@@ -46770,6 +47036,8 @@ exports.useGetRbacMentorAccessListQuery = useGetRbacMentorAccessListQuery;
|
|
|
46770
47036
|
exports.useGetRbacPermissionsMutation = useGetRbacPermissionsMutation;
|
|
46771
47037
|
exports.useGetRbacPoliciesQuery = useGetRbacPoliciesQuery;
|
|
46772
47038
|
exports.useGetRbacPolicyDetailsQuery = useGetRbacPolicyDetailsQuery;
|
|
47039
|
+
exports.useGetRbacResourceDiscoveryQuery = useGetRbacResourceDiscoveryQuery;
|
|
47040
|
+
exports.useGetRbacResourceListQuery = useGetRbacResourceListQuery;
|
|
46773
47041
|
exports.useGetRbacRoleDetailsQuery = useGetRbacRoleDetailsQuery;
|
|
46774
47042
|
exports.useGetRbacRolesQuery = useGetRbacRolesQuery;
|
|
46775
47043
|
exports.useGetRbacTeamsAccessListQuery = useGetRbacTeamsAccessListQuery;
|
|
@@ -46966,6 +47234,8 @@ exports.useLazyGetPublicPlatformImageAssetFileUrlQuery = useLazyGetPublicPlatfor
|
|
|
46966
47234
|
exports.useLazyGetPublicPlatformMembershipQuery = useLazyGetPublicPlatformMembershipQuery;
|
|
46967
47235
|
exports.useLazyGetPublicPricingQuery = useLazyGetPublicPricingQuery;
|
|
46968
47236
|
exports.useLazyGetRbacActionsDefinitionQuery = useLazyGetRbacActionsDefinitionQuery;
|
|
47237
|
+
exports.useLazyGetRbacResourceDiscoveryQuery = useLazyGetRbacResourceDiscoveryQuery;
|
|
47238
|
+
exports.useLazyGetRbacResourceListQuery = useLazyGetRbacResourceListQuery;
|
|
46969
47239
|
exports.useLazyGetRbacRolesQuery = useLazyGetRbacRolesQuery;
|
|
46970
47240
|
exports.useLazyGetRbacTeamsAccessListQuery = useLazyGetRbacTeamsAccessListQuery;
|
|
46971
47241
|
exports.useLazyGetRecentMessageQuery = useLazyGetRecentMessageQuery;
|
|
@@ -47084,6 +47354,7 @@ exports.useSendNotificationMutation = useSendNotificationMutation;
|
|
|
47084
47354
|
exports.useSetCurrentVersionMutation = useSetCurrentVersionMutation;
|
|
47085
47355
|
exports.useSetPlatformConfigurationsMutation = useSetPlatformConfigurationsMutation;
|
|
47086
47356
|
exports.useSetStudentMentorCreationStatusMutation = useSetStudentMentorCreationStatusMutation;
|
|
47357
|
+
exports.useSetStudioAdvancedSettingsMutation = useSetStudioAdvancedSettingsMutation;
|
|
47087
47358
|
exports.useStarMentorMutation = useStarMentorMutation;
|
|
47088
47359
|
exports.useStarredMentorsQuery = useStarredMentorsQuery;
|
|
47089
47360
|
exports.useStartEvalRunMutation = useStartEvalRunMutation;
|
|
@@ -47137,6 +47408,8 @@ exports.useUpdateRbacRoleMutation = useUpdateRbacRoleMutation;
|
|
|
47137
47408
|
exports.useUpdateRecommendedPromptMutation = useUpdateRecommendedPromptMutation;
|
|
47138
47409
|
exports.useUpdateSessionDisableChathistoryMutation = useUpdateSessionDisableChathistoryMutation;
|
|
47139
47410
|
exports.useUpdateShareableLinkMutation = useUpdateShareableLinkMutation;
|
|
47411
|
+
exports.useUpdateStudioCourseSettingsMutation = useUpdateStudioCourseSettingsMutation;
|
|
47412
|
+
exports.useUpdateStudioXblockMutation = useUpdateStudioXblockMutation;
|
|
47140
47413
|
exports.useUpdateTemplateMutation = useUpdateTemplateMutation;
|
|
47141
47414
|
exports.useUpdateTenantChatPrivacyConfigMutation = useUpdateTenantChatPrivacyConfigMutation;
|
|
47142
47415
|
exports.useUpdateTenantMetadataMutation = useUpdateTenantMetadataMutation;
|
|
@@ -47161,6 +47434,9 @@ exports.useUploadDarkLogoMutation = useUploadDarkLogoMutation;
|
|
|
47161
47434
|
exports.useUploadEvalDatasetCsvMutation = useUploadEvalDatasetCsvMutation;
|
|
47162
47435
|
exports.useUploadLightLogoMutation = useUploadLightLogoMutation;
|
|
47163
47436
|
exports.useUploadProfileImageMutation = useUploadProfileImageMutation;
|
|
47437
|
+
exports.useUploadStudioCourseAssetMutation = useUploadStudioCourseAssetMutation;
|
|
47438
|
+
exports.useUploadStudioCourseVideoMutation = useUploadStudioCourseVideoMutation;
|
|
47439
|
+
exports.useUploadStudioScormPackageMutation = useUploadStudioScormPackageMutation;
|
|
47164
47440
|
exports.useUsersGradesPassedQuery = useUsersGradesPassedQuery;
|
|
47165
47441
|
exports.useValidateWorkflowMutation = useValidateWorkflowMutation;
|
|
47166
47442
|
exports.userApiSlice = userApiSlice;
|