fixes from linting

This commit is contained in:
Kyle McCormick
2021-02-15 21:52:33 -05:00
parent 74e86fd4e8
commit 17b027a8db
8 changed files with 80 additions and 77 deletions

View File

@@ -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, () => {

View File

@@ -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);
}
}

View 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
};

View File

@@ -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
View 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
View 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.');
}
}

View 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
View File

@@ -0,0 +1,3 @@
export NexBlock from './NexBlock';
export NexCore from './NexCore';
export NexDataProvider from './NexDataProvider';