...
Code Block | ||
---|---|---|
| ||
import React from 'react';
import { useKeyedState } from '@edx/react-unit-test-utils';
import { Container } from '@edx/paragon';
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
import { getConfig } from '@edx/frontend-platform/config';
const apis = {
courses: 'courses/v1/courses/',
mfe_context: 'mfe_context',
};
const { courses } = apis;
const courseAPIs = {
// blocks: (course_id) => `courses/v2/blocks/?course_id=${course_id}`,
instructorReports: (course_id) => `instructor/v1/reports/${course_id}`,
instructorTaskScheduledBulkEmails: (course_id) =>
`instructor_task/v1/schedules/${course_id}/bulk_email/`,
};
const ExamplePage = () => {
const get = (uri) => getAuthenticatedHttpClient()
.get(`${getConfig().LMS_BASE_URL}/api/${uri}`);
const [apiObjects, setAPIObjects] = useKeyedState('apiObjects', {});
const [courseAPIObjects, setCourseAPIObjects] = useKeyedState('courseAPIObjects', {});
const logAPI = (key, uri) => {
get(uri).then(({ data }) => {
apiObjects[key] = data;
});
};
React.useEffect(() => {
Object.keys(apis).forEach(key => {
get(apis[key]).then(({ data }) => {
setAPIObjects({ ...apiObjects, [key]: data });
setAPIObjects((old) => ({ ...old, [key]: data }));
});
});
get('courses/v1/courses/').then(({ data }) => {
const { course_id } = data.results[0];
Object.keys(courseAPIs).forEach(key => {
get(courseAPIs[key](course_id)).then(({ data }) => {
setCourseAPIObjects((old) => ({ ...old, [key]: data }));
});
});
});
}, []);
return (
<main>
<Container className="py-5">
<h1>Example Page</h1>
<p>Hello world!</p>
<br />
<b>API Objects</b>
{Object.keys(apiObjects).map((key) => (
<pre>{JSON.stringify(apiObjects[key], null, 2)}</pre>
))}
<br />
<b>Course API Objects</b>
{Object.keys(apiObjects).map((key) => (
<pre>{JSON.stringify(apiObjects[key], null, 2)}</pre>
))}
</Container>
</main>
);
};
export default ExamplePage; |
...