From 17b027a8db3462e49b530d32c12388ccc0fa3213 Mon Sep 17 00:00:00 2001 From: Kyle McCormick Date: Mon, 15 Feb 2021 21:52:33 -0500 Subject: [PATCH] fixes from linting --- src/index.jsx | 2 +- src/nex-runtime/NexLmsDataProvider.js | 37 +++++++++-------- src/nex/FallbackAuthoringUi.js | 9 +++++ src/nex/NexBases.js | 57 --------------------------- src/nex/NexBlock.js | 22 +++++++++++ src/nex/NexCore.js | 9 +++++ src/nex/NexDataProvider.js | 18 +++++++++ src/nex/index.js | 3 ++ 8 files changed, 80 insertions(+), 77 deletions(-) create mode 100644 src/nex/FallbackAuthoringUi.js delete mode 100644 src/nex/NexBases.js create mode 100644 src/nex/NexBlock.js create mode 100644 src/nex/NexCore.js create mode 100644 src/nex/NexDataProvider.js create mode 100644 src/nex/index.js diff --git a/src/index.jsx b/src/index.jsx index 468f2def..aa41810a 100755 --- a/src/index.jsx +++ b/src/index.jsx @@ -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, () => { diff --git a/src/nex-runtime/NexLmsDataProvider.js b/src/nex-runtime/NexLmsDataProvider.js index d917ba02..5c777eb3 100644 --- a/src/nex-runtime/NexLmsDataProvider.js +++ b/src/nex-runtime/NexLmsDataProvider.js @@ -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); + } } diff --git a/src/nex/FallbackAuthoringUi.js b/src/nex/FallbackAuthoringUi.js new file mode 100644 index 00000000..b8e9d35a --- /dev/null +++ b/src/nex/FallbackAuthoringUi.js @@ -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 +}; diff --git a/src/nex/NexBases.js b/src/nex/NexBases.js deleted file mode 100644 index 297a9613..00000000 --- a/src/nex/NexBases.js +++ /dev/null @@ -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; -} diff --git a/src/nex/NexBlock.js b/src/nex/NexBlock.js new file mode 100644 index 00000000..ed4efebe --- /dev/null +++ b/src/nex/NexBlock.js @@ -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 +}; diff --git a/src/nex/NexCore.js b/src/nex/NexCore.js new file mode 100644 index 00000000..555edfb7 --- /dev/null +++ b/src/nex/NexCore.js @@ -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.'); + } +} diff --git a/src/nex/NexDataProvider.js b/src/nex/NexDataProvider.js new file mode 100644 index 00000000..2ea0107c --- /dev/null +++ b/src/nex/NexDataProvider.js @@ -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.'); + } +} diff --git a/src/nex/index.js b/src/nex/index.js new file mode 100644 index 00000000..10afac85 --- /dev/null +++ b/src/nex/index.js @@ -0,0 +1,3 @@ +export NexBlock from './NexBlock'; +export NexCore from './NexCore'; +export NexDataProvider from './NexDataProvider';