From b46165ede0829f85d25a6f64fbff11764c2444b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 04:20:46 +0000 Subject: [PATCH 1/6] fix(deps): update dependency @openedx/frontend-slot-footer to v1.0.5 --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6528d9095..5f54a3889 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3310,9 +3310,9 @@ } }, "node_modules/@openedx/frontend-slot-footer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@openedx/frontend-slot-footer/-/frontend-slot-footer-1.0.4.tgz", - "integrity": "sha512-ywMAYpS6mBP1LIuPgqHKEwWtVgYihKSZjDxEZE8yl7PrYFmJ/ZmlSAVEiZPvwyj55MP5G+JMXFRrKH3YMuRELw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@openedx/frontend-slot-footer/-/frontend-slot-footer-1.0.5.tgz", + "integrity": "sha512-hlKj2p7zgAHfPTbmW4rAMUCCj35uCbm9VfRkZYPEIX2bdhkPjc4OIGTE5CKGkyWG5+zL+aap1ywwcKEjEgOMOQ==", "license": "AGPL-3.0", "dependencies": { "@openedx/frontend-plugin-framework": "^1.1.2" From 3ec887089d8e91b8e3beb9d5a178a9345401a2a3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 04:21:01 +0000 Subject: [PATCH 2/6] fix(deps): update dependency core-js to v3.38.1 --- package-lock.json | 9 +++++---- package.json | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5f54a3889..b4469eedd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "@tensorflow/tfjs-core": "3.21.0", "bowser": "2.11.0", "classnames": "2.5.1", - "core-js": "3.38.0", + "core-js": "3.38.1", "font-awesome": "4.7.0", "form-urlencoded": "6.1.5", "formdata-polyfill": "4.0.10", @@ -6102,10 +6102,11 @@ "license": "MIT" }, "node_modules/core-js": { - "version": "3.38.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.0.tgz", - "integrity": "sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug==", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", + "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" diff --git a/package.json b/package.json index 8e318ce9e..effe97704 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "@tensorflow/tfjs-core": "3.21.0", "bowser": "2.11.0", "classnames": "2.5.1", - "core-js": "3.38.0", + "core-js": "3.38.1", "font-awesome": "4.7.0", "form-urlencoded": "6.1.5", "formdata-polyfill": "4.0.10", From 0ed92cc7e8878ae2c28cad50c27c3093cc10e48d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 06:26:12 +0000 Subject: [PATCH 3/6] chore(deps): update dependency @openedx/frontend-build to v14.1.4 --- package-lock.json | 38 +++++++++++++++++++++++--------------- package.json | 2 +- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4469eedd..6a005af46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,7 +66,7 @@ "devDependencies": { "@edx/browserslist-config": "1.2.0", "@edx/reactifex": "1.1.0", - "@openedx/frontend-build": "14.1.2", + "@openedx/frontend-build": "14.1.4", "@testing-library/jest-dom": "6.4.8", "@testing-library/react": "12.1.5", "react-test-renderer": "17.0.2", @@ -3086,9 +3086,9 @@ } }, "node_modules/@openedx/frontend-build": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@openedx/frontend-build/-/frontend-build-14.1.2.tgz", - "integrity": "sha512-pLTcY/BLjCFn2qsBmUY0on2qB4PNShlg8scTYjrsz5fCASuSAJk000jOF5ys6bg6i8krSOIJlcZXPgrq0ywsUg==", + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@openedx/frontend-build/-/frontend-build-14.1.4.tgz", + "integrity": "sha512-DMzkitHqemtqwxmDsF8y7zRVAJcW8URPfWcLKtFvXffqJ3WW7fJXXMmiZWKra/vGBw3SRyYRqvdzQG1d2giPAw==", "license": "AGPL-3.0", "dependencies": { "@babel/cli": "7.24.8", @@ -3109,7 +3109,7 @@ "@types/jest": "29.5.12", "@typescript-eslint/eslint-plugin": "^5.58.0", "@typescript-eslint/parser": "^5.58.0", - "autoprefixer": "10.4.19", + "autoprefixer": "10.4.20", "babel-jest": "29.6.1", "babel-loader": "9.1.3", "babel-plugin-formatjs": "^10.4.0", @@ -3138,7 +3138,7 @@ "jest-environment-jsdom": "29.6.1", "mini-css-extract-plugin": "1.6.2", "parse5": "7.1.2", - "postcss": "8.4.39", + "postcss": "8.4.47", "postcss-custom-media": "10.0.8", "postcss-loader": "7.3.4", "postcss-rtlcss": "5.1.2", @@ -5084,7 +5084,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.19", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "funding": [ { "type": "opencollective", @@ -5101,11 +5103,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -12060,7 +12062,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "license": "ISC" }, "node_modules/picomatch": { @@ -12265,7 +12269,9 @@ } }, "node_modules/postcss": { - "version": "8.4.39", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -12283,8 +12289,8 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -14600,7 +14606,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" diff --git a/package.json b/package.json index effe97704..8f00fb4fe 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "devDependencies": { "@edx/browserslist-config": "1.2.0", "@edx/reactifex": "1.1.0", - "@openedx/frontend-build": "14.1.2", + "@openedx/frontend-build": "14.1.4", "@testing-library/jest-dom": "6.4.8", "@testing-library/react": "12.1.5", "react-test-renderer": "17.0.2", From 116c30663b6df65bc39058541f5786c292f874a1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 06:26:24 +0000 Subject: [PATCH 4/6] fix(deps): update react-router monorepo to v6.26.2 --- package-lock.json | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6a005af46..38bddca99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3520,7 +3520,9 @@ "license": "MIT" }, "node_modules/@remix-run/router": { - "version": "1.19.0", + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", + "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -13557,10 +13559,12 @@ } }, "node_modules/react-router": { - "version": "6.26.0", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", + "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.19.0" + "@remix-run/router": "1.19.2" }, "engines": { "node": ">=14.0.0" @@ -13570,11 +13574,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.26.0", + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", + "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.19.0", - "react-router": "6.26.0" + "@remix-run/router": "1.19.2", + "react-router": "6.26.2" }, "engines": { "node": ">=14.0.0" From 83242b1042903284250951dfb8a0bf7b56d86992 Mon Sep 17 00:00:00 2001 From: eemaanamir Date: Mon, 23 Sep 2024 16:57:01 +0500 Subject: [PATCH 5/6] chore: added notificationTitle for oraGradeAssigned --- src/notification-preferences/messages.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/notification-preferences/messages.js b/src/notification-preferences/messages.js index b99aca6bd..d8035452d 100644 --- a/src/notification-preferences/messages.js +++ b/src/notification-preferences/messages.js @@ -28,6 +28,7 @@ const messages = defineMessages({ contentReported {Reported content} courseUpdates {Course updates} oraStaffNotification {ORA new submissions} + oraGradeAssigned {ORA grade received} other {{text}} }`, description: 'Display text for Notification Types', From 94cc4f982803457866831970311f6d9ed86eee34 Mon Sep 17 00:00:00 2001 From: Awais Ansari <79941147+awais-ansari@users.noreply.github.com> Date: Tue, 17 Sep 2024 17:35:00 +0500 Subject: [PATCH 6/6] feat: added country disabling feature (#1116) * feat: added country disabling feature * refactor: removed isDisabledCountry additional call --- src/account-settings/AccountSettingsPage.jsx | 39 +++++++++++++++++++- src/account-settings/EditableSelectField.jsx | 3 +- src/account-settings/data/reducers.js | 1 + src/account-settings/data/selectors.js | 8 ++++ 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/account-settings/AccountSettingsPage.jsx b/src/account-settings/AccountSettingsPage.jsx index 6c2e336d8..f67e71762 100644 --- a/src/account-settings/AccountSettingsPage.jsx +++ b/src/account-settings/AccountSettingsPage.jsx @@ -120,7 +120,15 @@ class AccountSettingsPage extends React.Component { countryOptions: [{ value: '', label: this.props.intl.formatMessage(messages['account.settings.field.country.options.empty']), - }].concat(getCountryList(locale).map(({ code, name }) => ({ value: code, label: name }))), + }].concat( + this.removeDisabledCountries( + getCountryList(locale).map(({ code, name }) => ({ + value: code, + label: name, + disabled: this.isDisabledCountry(code), + })), + ), + ), stateOptions: [{ value: '', label: this.props.intl.formatMessage(messages['account.settings.field.state.options.empty']), @@ -147,11 +155,28 @@ class AccountSettingsPage extends React.Component { })), })); + removeDisabledCountries = (countryList) => { + const { disabledCountries, committedValues } = this.props; + + if (!disabledCountries.length) { + return countryList; + } + + return countryList.filter(({ value, disabled }) => { + const isUserCountry = value === committedValues.country; + return !disabled || isUserCountry; + }); + }; + handleEditableFieldChange = (name, value) => { this.props.updateDraft(name, value); }; handleSubmit = (formId, values) => { + if (formId === 'country' && this.isDisabledCountry(values)) { + return; + } + const { formValues } = this.props; let extendedProfileObject = {}; @@ -193,6 +218,11 @@ class AccountSettingsPage extends React.Component { } }; + isDisabledCountry = (country) => { + const { disabledCountries } = this.props; + return disabledCountries.includes(country); + }; + isEditable(fieldName) { return !this.props.staticFields.includes(fieldName); } @@ -476,7 +506,8 @@ class AccountSettingsPage extends React.Component { } = this.getLocalizedOptions(this.context.locale, this.props.formValues.country); // Show State field only if the country is US (could include Canada later) - const showState = this.props.formValues.country === COUNTRY_WITH_STATES; + const { country } = this.props.formValues; + const showState = country === COUNTRY_WITH_STATES && !this.isDisabledCountry(country); const { verifiedName } = this.props; const hasWorkExperience = !!this.props.formValues?.extended_profile?.find(field => field.field_name === 'work_experience'); @@ -880,6 +911,7 @@ AccountSettingsPage.propTypes = { name: PropTypes.string, useVerifiedNameForCerts: PropTypes.bool, verified_name: PropTypes.string, + country: PropTypes.string, }), drafts: PropTypes.shape({}), formErrors: PropTypes.shape({ @@ -938,6 +970,7 @@ AccountSettingsPage.propTypes = { ), navigate: PropTypes.func.isRequired, location: PropTypes.string.isRequired, + disabledCountries: PropTypes.arrayOf(PropTypes.string), }; AccountSettingsPage.defaultProps = { @@ -947,6 +980,7 @@ AccountSettingsPage.defaultProps = { committedValues: { useVerifiedNameForCerts: false, verified_name: null, + country: '', }, drafts: {}, formErrors: {}, @@ -963,6 +997,7 @@ AccountSettingsPage.defaultProps = { verifiedName: null, mostRecentVerifiedName: {}, verifiedNameHistory: [], + disabledCountries: [], }; export default withLocation(withNavigate(connect(accountSettingsPageSelector, { diff --git a/src/account-settings/EditableSelectField.jsx b/src/account-settings/EditableSelectField.jsx index 63a1f7d1c..bc1757e07 100644 --- a/src/account-settings/EditableSelectField.jsx +++ b/src/account-settings/EditableSelectField.jsx @@ -107,6 +107,7 @@ const EditableSelectField = (props) => { @@ -115,7 +116,7 @@ const EditableSelectField = (props) => { ); } return ( - ); diff --git a/src/account-settings/data/reducers.js b/src/account-settings/data/reducers.js index 7edb53a4e..35de9effc 100644 --- a/src/account-settings/data/reducers.js +++ b/src/account-settings/data/reducers.js @@ -39,6 +39,7 @@ export const defaultState = { verifiedName: null, mostRecentVerifiedName: {}, verifiedNameHistory: {}, + disabledCountries: ['RU'], }; const reducer = (state = defaultState, action = {}) => { diff --git a/src/account-settings/data/selectors.js b/src/account-settings/data/selectors.js index 1e6eb2497..99480a7f9 100644 --- a/src/account-settings/data/selectors.js +++ b/src/account-settings/data/selectors.js @@ -206,6 +206,11 @@ const activeAccountSelector = createSelector( accountSettings => accountSettings.values.is_active, ); +const disabledCountriesSelector = createSelector( + accountSettingsSelector, + accountSettings => accountSettings.disabledCountries, +); + export const siteLanguageSelector = createSelector( previousSiteLanguageSelector, draftsSelector, @@ -237,6 +242,7 @@ export const accountSettingsPageSelector = createSelector( mostRecentApprovedVerifiedNameValueSelector, mostRecentVerifiedNameSelector, sortedVerifiedNameHistorySelector, + disabledCountriesSelector, ( accountSettings, siteLanguageOptions, @@ -254,6 +260,7 @@ export const accountSettingsPageSelector = createSelector( verifiedName, mostRecentVerifiedName, verifiedNameHistory, + disabledCountries, ) => ({ siteLanguageOptions, siteLanguage, @@ -274,6 +281,7 @@ export const accountSettingsPageSelector = createSelector( verifiedName, mostRecentVerifiedName, verifiedNameHistory, + disabledCountries, }), );