fixes from linting
This commit is contained in:
@@ -27,7 +27,7 @@ import { TabContainer } from './tab-page';
|
||||
import { fetchDatesTab, fetchOutlineTab, fetchProgressTab } from './course-home/data';
|
||||
import { fetchCourse } from './courseware/data';
|
||||
import initializeStore from './store';
|
||||
import NexBlockContainer from './nexblocks/NexBlockContainer';
|
||||
import NexBlockContainer from './nex-runtime/NexContainer';
|
||||
import PluginTestPage from './plugin-test/PluginTestPage';
|
||||
|
||||
subscribe(APP_READY, () => {
|
||||
|
||||
@@ -1,26 +1,25 @@
|
||||
import { getConfig } from '@edx/frontend-platform';
|
||||
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
|
||||
import { NexDataProvider } from '../nex/NexBases';
|
||||
import { NexDataProvider } from '../nex';
|
||||
|
||||
export default class NexLmsDataProvider extends NexDataProvider {
|
||||
export default class NexLmsDataProvider extends NexDataProvider {
|
||||
constructor(instanceKey, learningContextKey) {
|
||||
super(instanceKey, learningContextKey);
|
||||
this.client = getAuthenticatedHttpClient();
|
||||
const nexApiRoot = getConfig().NEX_LMS_API_ROOT;
|
||||
this.instanceDataRoot = `${nexApiRoot}/instances/${instanceKey}`;
|
||||
this.learnerDataRoot = `${nexApiRoot}/instances/${instanceKey}/contexts/${learningContextKey}`;
|
||||
}
|
||||
|
||||
constructor(nexApiRoot, instanceKey, learningContextKey) {
|
||||
super(instanceKey, learningContextKey);
|
||||
this.client = getAuthenticatedHttpClient();
|
||||
this.instanceDataRoot = `${nexApiRoot}/instances/${instanceKey}`;
|
||||
this.learnerDataRoot = `${nexApiRoot}/instances/${instanceKey}/contexts/${learningContextKey}`;
|
||||
}
|
||||
async fetchInstanceData(dataKey) {
|
||||
return this.client.get(`${this.instanceDataRoot}/data/${dataKey || ''}`);
|
||||
}
|
||||
|
||||
async fetchInstanceData(dataKey) {
|
||||
return this.client.get(`${this.instanceDataRoot}/data/${dataKey || ''}`);
|
||||
}
|
||||
|
||||
async fetchLearnerData(dataKey) {
|
||||
return this.client.get(`${this.learnerDataRoot}/data/${dataKey}`);
|
||||
}
|
||||
|
||||
async emitLearnerEvent(eventData) {
|
||||
return this.client.post(`${this.learnerDataRoot}/events`, eventData);
|
||||
}
|
||||
async fetchLearnerData(dataKey) {
|
||||
return this.client.get(`${this.learnerDataRoot}/data/${dataKey}`);
|
||||
}
|
||||
|
||||
async emitLearnerEvent(eventData) {
|
||||
return this.client.post(`${this.learnerDataRoot}/events`, eventData);
|
||||
}
|
||||
}
|
||||
|
||||
9
src/nex/FallbackAuthoringUi.js
Normal file
9
src/nex/FallbackAuthoringUi.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
export default function FallbackAuthoringUi({ instanceDataSchema }) { // eslint-disable-line no-unused-vars
|
||||
return 'Fallback Authoring UI not yet implemented';
|
||||
}
|
||||
|
||||
FallbackAuthoringUi.propTypes = {
|
||||
instanceDataSchema: PropTypes.object, // eslint-disable-line react/forbid-prop-types
|
||||
};
|
||||
@@ -1,57 +0,0 @@
|
||||
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
export class NexDataProvider {
|
||||
|
||||
constructor(instanceKey, learningContextKey) {
|
||||
this.instanceKey = instanceKey;
|
||||
this.learningContextKey = learningContextKey;
|
||||
}
|
||||
|
||||
async fetchInstanceData(dataKey) {
|
||||
throw new Error("NexDataProvider.fetchInstanceData must be implemented.")
|
||||
}
|
||||
|
||||
async fetchLearnerData(dataKey) {
|
||||
throw new Error("NexDataProvider.fetchLearnerData must be implemented.")
|
||||
}
|
||||
|
||||
async emitLearnerEvent(eventData) {
|
||||
throw new Error("NexDataProvider.emitLearnerEvent must be implemented.")
|
||||
}
|
||||
}
|
||||
|
||||
export class NexCore {
|
||||
|
||||
constructor(dataProvider) {
|
||||
this.dataProvider = dataProvider;
|
||||
}
|
||||
|
||||
async query(queryData) {
|
||||
throw new Error("NexCore.query must be implemented.")
|
||||
}
|
||||
}
|
||||
|
||||
export function NexBlock({core, learnerUi, instructorUi, authorUi, instanceDataSchema}) {
|
||||
const injectCoreIntoProps = ui => (props => ui({core, ...props}));
|
||||
|
||||
this.learnerUi = injectCoreIntoProps(learnerUi);
|
||||
this.instructorUi = instructorUi ? injectCoreIntoProps(instructorUi) : this.learnerUi;
|
||||
this.authorUi = authorUi || FallbackAuthoringUi(instanceDataSchema || null);
|
||||
}
|
||||
|
||||
NexBlock.propTypes = {
|
||||
core: PropTypes.instanceOf(NexCore).isRequired,
|
||||
learnerUi: PropTypes.elementType.isRequired,
|
||||
instructorUi: PropTypes.elementType,
|
||||
authorUi: PropTypes.elementType,
|
||||
instanceDataSchema: PropTypes.object,
|
||||
}
|
||||
|
||||
function FallbackAuthoringUi({instanceDataSchema}) {
|
||||
return "Fallback Authoring UI not yet implemented";
|
||||
}
|
||||
|
||||
FallbackAuthoringUi.propTypes = {
|
||||
instanceDataSchema: PropTypes.object;
|
||||
}
|
||||
22
src/nex/NexBlock.js
Normal file
22
src/nex/NexBlock.js
Normal file
@@ -0,0 +1,22 @@
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import NexCore from './NexCore';
|
||||
import FallbackAuthoringUi from './FallbackAuthoringUi';
|
||||
|
||||
export default function NexBlock({
|
||||
core, learnerUi, instructorUi, authorUi, instanceDataSchema,
|
||||
}) {
|
||||
const injectCoreIntoProps = ui => (props => ui({ core, ...props }));
|
||||
|
||||
this.learnerUi = injectCoreIntoProps(learnerUi);
|
||||
this.instructorUi = instructorUi ? injectCoreIntoProps(instructorUi) : this.learnerUi;
|
||||
this.authorUi = authorUi || FallbackAuthoringUi(instanceDataSchema || null);
|
||||
}
|
||||
|
||||
NexBlock.propTypes = {
|
||||
core: PropTypes.instanceOf(NexCore).isRequired,
|
||||
learnerUi: PropTypes.elementType.isRequired,
|
||||
instructorUi: PropTypes.elementType,
|
||||
authorUi: PropTypes.elementType,
|
||||
instanceDataSchema: PropTypes.object, // eslint-disable-line react/forbid-prop-types
|
||||
};
|
||||
9
src/nex/NexCore.js
Normal file
9
src/nex/NexCore.js
Normal file
@@ -0,0 +1,9 @@
|
||||
export default class NexCore {
|
||||
constructor(dataProvider) {
|
||||
this.dataProvider = dataProvider;
|
||||
}
|
||||
|
||||
async query(queryData) { // eslint-disable-line no-unused-vars
|
||||
throw new Error('NexCore.query must be implemented.');
|
||||
}
|
||||
}
|
||||
18
src/nex/NexDataProvider.js
Normal file
18
src/nex/NexDataProvider.js
Normal file
@@ -0,0 +1,18 @@
|
||||
export default class NexDataProvider {
|
||||
constructor(instanceKey, learningContextKey) {
|
||||
this.instanceKey = instanceKey;
|
||||
this.learningContextKey = learningContextKey;
|
||||
}
|
||||
|
||||
async fetchInstanceData(dataKey) { // eslint-disable-line no-unused-vars
|
||||
throw new Error('NexDataProvider.fetchInstanceData must be implemented.');
|
||||
}
|
||||
|
||||
async fetchLearnerData(dataKey) { // eslint-disable-line no-unused-vars
|
||||
throw new Error('NexDataProvider.fetchLearnerData must be implemented.');
|
||||
}
|
||||
|
||||
async emitLearnerEvent(eventData) { // eslint-disable-line no-unused-vars
|
||||
throw new Error('NexDataProvider.emitLearnerEvent must be implemented.');
|
||||
}
|
||||
}
|
||||
3
src/nex/index.js
Normal file
3
src/nex/index.js
Normal file
@@ -0,0 +1,3 @@
|
||||
export NexBlock from './NexBlock';
|
||||
export NexCore from './NexCore';
|
||||
export NexDataProvider from './NexDataProvider';
|
||||
Reference in New Issue
Block a user