From 8f37cc1a8d15ebce1422a5cea09fe4d6d61ce3cf Mon Sep 17 00:00:00 2001 From: David Joy Date: Mon, 23 Sep 2019 13:50:56 -0400 Subject: [PATCH] Organize the repo and export profile module properly (#262) * Moving files to their new homes. Subsequent commit will wire everything up again. * Relink files and split stylesheet. Requires adding resolve-url-loader to fix sass import relativity. * Remove browserslist warning. * Remove the need for ProfileMain * Fix test issues - needed thunk. --- package-lock.json | 164 ++++++++++++++++++ package.json | 5 + src/index.jsx | 12 +- src/index.scss | 140 +-------------- src/profile/{components => }/AgeMessage.jsx | 0 src/profile/{components => }/Banner.jsx | 0 src/profile/{components => }/DateJoined.jsx | 0 src/profile/{components => }/NotFoundPage.jsx | 0 src/profile/{components => }/PageLoading.jsx | 0 src/profile/{components => }/ProfilePage.jsx | 11 +- .../{components => }/ProfilePage.messages.jsx | 0 .../{components => }/ProfilePage.test.jsx | 19 +- .../__mocks__/loadingApp.mockStore.js | 0 .../__mocks__/savingEditedBio.mockStore.js | 0 .../__mocks__/viewOtherProfile.mockStore.js | 0 .../__mocks__/viewOwnProfile.mockStore.js | 0 .../__snapshots__/ProfilePage.test.jsx.snap | 0 src/profile/_index.scss | 141 +++++++++++++++ .../assets/dot-pattern-light.png | Bin src/profile/components/ProfileMain.jsx | 37 ---- src/profile/{ => data}/actions.js | 0 src/profile/{ => data}/actions.test.js | 0 src/profile/{ => data}/constants.js | 0 src/profile/{ => data}/reducers.js | 0 src/profile/{ => data}/sagas.js | 0 src/profile/{ => data}/sagas.test.js | 0 src/profile/{ => data}/selectors.js | 0 src/profile/{ => data}/services.js | 0 src/profile/{components => }/forms/Bio.jsx | 2 +- .../{components => }/forms/Bio.messages.jsx | 0 .../{components => }/forms/Certificates.jsx | 6 +- .../forms/Certificates.messages.jsx | 0 .../{components => }/forms/Country.jsx | 2 +- .../forms/Country.messages.jsx | 0 .../{components => }/forms/Education.jsx | 4 +- .../forms/Education.messages.jsx | 0 src/profile/{components => }/forms/Name.jsx | 2 +- .../{components => }/forms/Name.messages.jsx | 0 .../forms/PreferredLanguage.jsx | 2 +- .../forms/PreferredLanguage.messages.jsx | 0 .../{components => }/forms/ProfileAvatar.jsx | 2 +- .../forms/ProfileAvatar.messages.jsx | 0 .../{components => }/forms/SocialLinks.jsx | 2 +- .../forms/SocialLinks.messages.jsx | 0 .../forms/elements/EditButton.jsx | 0 .../forms/elements/EditButton.messages.jsx | 0 .../forms/elements/EditableItemHeader.jsx | 0 .../forms/elements/EmptyContent.jsx | 0 .../forms/elements/FormControls.jsx | 0 .../forms/elements/FormControls.messages.jsx | 0 .../forms/elements/SwitchContent.jsx | 0 .../forms/elements/Visibility.jsx | 0 .../forms/elements/Visibility.messages.jsx | 0 src/profile/index.js | 14 +- src/{ => profile}/utils.js | 0 src/{ => profile}/utils.test.js | 0 src/reducers.js | 2 +- src/sagas.js | 2 +- webpack/webpack.dev.config.js | 3 + webpack/webpack.prod.config.js | 5 +- 60 files changed, 363 insertions(+), 214 deletions(-) rename src/profile/{components => }/AgeMessage.jsx (100%) rename src/profile/{components => }/Banner.jsx (100%) rename src/profile/{components => }/DateJoined.jsx (100%) rename src/profile/{components => }/NotFoundPage.jsx (100%) rename src/profile/{components => }/PageLoading.jsx (100%) rename src/profile/{components => }/ProfilePage.jsx (96%) rename src/profile/{components => }/ProfilePage.messages.jsx (100%) rename src/profile/{components => }/ProfilePage.test.jsx (91%) rename src/profile/{components => }/__mocks__/loadingApp.mockStore.js (100%) rename src/profile/{components => }/__mocks__/savingEditedBio.mockStore.js (100%) rename src/profile/{components => }/__mocks__/viewOtherProfile.mockStore.js (100%) rename src/profile/{components => }/__mocks__/viewOwnProfile.mockStore.js (100%) rename src/profile/{components => }/__snapshots__/ProfilePage.test.jsx.snap (100%) create mode 100644 src/profile/_index.scss rename src/{ => profile}/assets/dot-pattern-light.png (100%) delete mode 100644 src/profile/components/ProfileMain.jsx rename src/profile/{ => data}/actions.js (100%) rename src/profile/{ => data}/actions.test.js (100%) rename src/profile/{ => data}/constants.js (100%) rename src/profile/{ => data}/reducers.js (100%) rename src/profile/{ => data}/sagas.js (100%) rename src/profile/{ => data}/sagas.test.js (100%) rename src/profile/{ => data}/selectors.js (100%) rename src/profile/{ => data}/services.js (100%) rename src/profile/{components => }/forms/Bio.jsx (98%) rename src/profile/{components => }/forms/Bio.messages.jsx (100%) rename src/profile/{components => }/forms/Certificates.jsx (97%) rename src/profile/{components => }/forms/Certificates.messages.jsx (100%) rename src/profile/{components => }/forms/Country.jsx (98%) rename src/profile/{components => }/forms/Country.messages.jsx (100%) rename src/profile/{components => }/forms/Education.jsx (98%) rename src/profile/{components => }/forms/Education.messages.jsx (100%) rename src/profile/{components => }/forms/Name.jsx (98%) rename src/profile/{components => }/forms/Name.messages.jsx (100%) rename src/profile/{components => }/forms/PreferredLanguage.jsx (98%) rename src/profile/{components => }/forms/PreferredLanguage.messages.jsx (100%) rename src/profile/{components => }/forms/ProfileAvatar.jsx (98%) rename src/profile/{components => }/forms/ProfileAvatar.messages.jsx (100%) rename src/profile/{components => }/forms/SocialLinks.jsx (99%) rename src/profile/{components => }/forms/SocialLinks.messages.jsx (100%) rename src/profile/{components => }/forms/elements/EditButton.jsx (100%) rename src/profile/{components => }/forms/elements/EditButton.messages.jsx (100%) rename src/profile/{components => }/forms/elements/EditableItemHeader.jsx (100%) rename src/profile/{components => }/forms/elements/EmptyContent.jsx (100%) rename src/profile/{components => }/forms/elements/FormControls.jsx (100%) rename src/profile/{components => }/forms/elements/FormControls.messages.jsx (100%) rename src/profile/{components => }/forms/elements/SwitchContent.jsx (100%) rename src/profile/{components => }/forms/elements/Visibility.jsx (100%) rename src/profile/{components => }/forms/elements/Visibility.messages.jsx (100%) rename src/{ => profile}/utils.js (100%) rename src/{ => profile}/utils.test.js (100%) diff --git a/package-lock.json b/package-lock.json index c43ce70..9abb81e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4248,6 +4248,27 @@ "integrity": "sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ==", "dev": true }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "dev": true, + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + } + } + }, "agent-base": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", @@ -4495,6 +4516,12 @@ "commander": "^2.11.0" } }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", + "dev": true + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -6631,6 +6658,15 @@ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "dev": true, + "requires": { + "arity-n": "^1.0.4" + } + }, "compressible": { "version": "2.0.15", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", @@ -7131,6 +7167,18 @@ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, "css-color-names": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", @@ -7462,6 +7510,16 @@ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", "dev": true }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, "damerau-levenshtein": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", @@ -8344,6 +8402,28 @@ "is-symbol": "^1.0.2" } }, + "es5-ext": { + "version": "0.10.51", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz", + "integrity": "sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "^1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, "es6-promise": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.6.tgz", @@ -8357,6 +8437,16 @@ "es6-promise": "^4.0.3" } }, + "es6-symbol": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.2.tgz", + "integrity": "sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.51" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -14901,6 +14991,12 @@ } } }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -15334,6 +15430,12 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -18373,6 +18475,12 @@ "safe-regex": "^1.1.0" } }, + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==", + "dev": true + }, "regexp-tree": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.13.tgz", @@ -18595,6 +18703,32 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "resolve-url-loader": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.0.tgz", + "integrity": "sha512-2QcrA+2QgVqsMJ1Hn5NnJXIGCX1clQ1F6QJTqOeiaDw9ACo1G2k+8/shq3mtqne03HOFyskAClqfxKyFBriXZg==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.0.0", + "compose-function": "3.0.3", + "convert-source-map": "1.6.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.14", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + } + } + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -18626,6 +18760,30 @@ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", @@ -21406,6 +21564,12 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", diff --git a/package.json b/package.json index 9111cb8..e8136c1 100755 --- a/package.json +++ b/package.json @@ -6,6 +6,10 @@ "type": "git", "url": "git+https://github.com/edx/frontend-app-profile.git" }, + "browserslist": [ + "last 2 versions", + "ie 11" + ], "scripts": { "build": "NODE_ENV=production BABEL_ENV=production webpack --config=webpack/webpack.prod.config.js", "i18n_extract": "BABEL_ENV=i18n babel src --quiet > /dev/null", @@ -113,6 +117,7 @@ "react-test-renderer": "16.9.0", "reactifex": "1.1.1", "redux-mock-store": "1.5.3", + "resolve-url-loader": "^3.1.0", "sass-loader": "6.0.7", "source-map-loader": "0.2.4", "style-loader": "0.20.3", diff --git a/src/index.jsx b/src/index.jsx index d45b8a3..2f079b0 100755 --- a/src/index.jsx +++ b/src/index.jsx @@ -4,20 +4,27 @@ import { App, AppProvider, APP_ERROR, APP_READY, ErrorPage } from '@edx/frontend import { NewRelicLoggingService } from '@edx/frontend-logging'; import React from 'react'; import ReactDOM from 'react-dom'; +import { Route, Switch } from 'react-router-dom'; import Header, { messages as headerMessages } from '@edx/frontend-component-header'; import Footer from '../footer/Footer'; import appMessages from './i18n'; import './index.scss'; -import ProfileMain from './profile/components/ProfileMain'; +import { ProfilePage, NotFoundPage } from './profile'; import configureStore from './store'; App.subscribe(APP_READY, () => { ReactDOM.render(
- +
+ + + + + +