Compare commits

...

37 Commits

Author SHA1 Message Date
edX requirements bot
dfb6b0d2a1 chore: update browserslist DB (#1334)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-03-16 00:23:46 +00:00
edX requirements bot
5a3498c6eb chore: update browserslist DB (#1333)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-03-09 00:20:50 +00:00
edX requirements bot
b0eae68a3b chore: update browserslist DB (#1332)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-03-02 00:36:57 +00:00
edX requirements bot
5fbf78956d chore: update browserslist DB (#1331)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-02-23 19:19:58 +00:00
renovate[bot]
bd44d4e240 fix(deps): update dependency core-js to v3.48.0 (#1330)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-23 19:17:17 +00:00
renovate[bot]
3b4a710ace chore(deps): update dependency @edx/frontend-platform to v8.5.5 (#1329)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 06:13:51 +00:00
edX requirements bot
b2bfbab095 chore: update browserslist DB (#1328)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-02-16 00:25:08 +00:00
Brian Smith
e5f57ec603 fix(deps): regenerate package-lock.json (#1325)
* fix(deps): regenerate package-lock.json

Co-Authored-By: Claude Code <noreply@anthropic.com>

* test: update snapshots for CSS serialization changes

Minor formatting differences from dependency updates:
- .1px → 0.1px (leading zero)
- url(path) → url("path") (quoted URLs)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Code <noreply@anthropic.com>
2026-02-13 17:28:33 -05:00
renovate[bot]
665522d59d chore(deps): update dependency @edx/browserslist-config to v1.5.1 (#1327)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 05:04:46 +00:00
edX requirements bot
1d8d2d6cde chore: update browserslist DB (#1326)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-02-09 00:21:32 +00:00
Anton Melser
0227efdb0f docs: Replace references to devstack with tutor
Signed-off-by: Anton Melser <anton.melser@outlook.com>
2026-01-27 13:47:28 -03:00
Anton Melser
0b21cc18ed docs: Generify currently supported node version
Signed-off-by: Anton Melser <anton.melser@outlook.com>
2026-01-27 13:47:28 -03:00
renovate[bot]
0eaf2f1c4e chore(deps): update dependency @edx/frontend-platform to v8.5.4 (#1324)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-26 06:31:51 +00:00
edX requirements bot
ea1982abd8 chore: update browserslist DB (#1323)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-01-26 00:17:42 +00:00
renovate[bot]
2c94e48bd0 fix(deps): update react-router monorepo to v6.30.3 (#1322)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-19 05:18:43 +00:00
edX requirements bot
1737d2f6f9 chore: update browserslist DB (#1321)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-01-19 00:17:26 +00:00
Diana Villalvazo
f94d055bd6 docs: update owner/maintainer (#1319) 2026-01-13 10:45:00 -06:00
edX requirements bot
a864511756 chore: update browserslist DB (#1318)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-01-12 00:17:32 +00:00
edX requirements bot
2ae4cf08de chore: update browserslist DB (#1317)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2026-01-05 00:18:03 +00:00
renovate[bot]
438e937ad4 chore(deps): update dependency @openedx/paragon to v23.18.2 (#1315)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-22 06:15:09 +00:00
edX requirements bot
223d346ce3 chore: update browserslist DB (#1314)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2025-12-22 00:16:42 +00:00
edX requirements bot
929ba69503 chore: update browserslist DB (#1313)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2025-12-15 00:17:29 +00:00
Stanislav
16de1d6a40 feat: Change Twitter to X (#1186) 2025-12-08 10:35:36 -05:00
edX requirements bot
f04aaa0daa chore: update browserslist DB (#1310)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2025-12-08 00:16:47 +00:00
renovate[bot]
bb88c0954d chore(deps): update dependency @openedx/paragon to v23.18.1 (#1308)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-01 08:31:47 +00:00
edX requirements bot
ab6732038e chore: update browserslist DB (#1306)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2025-12-01 00:18:37 +00:00
renovate[bot]
72a2842acc fix(deps): update dependency core-js to v3.47.0 (#1303)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-24 05:57:48 +00:00
renovate[bot]
1ba4d6bfb3 chore(deps): update dependency @openedx/paragon to v23.18.0 (#1302)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-24 05:57:33 +00:00
edX requirements bot
afa826121b chore: update browserslist DB (#1301)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2025-11-24 00:16:32 +00:00
renovate[bot]
9197d0d6ec chore(deps): update dependency glob to v11.1.0 [security] (#1300)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-18 06:41:01 +00:00
renovate[bot]
1ee2fe873a chore(deps): update dependency @openedx/paragon to v23.17.0 (#1297)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-17 06:27:11 +00:00
renovate[bot]
64dcab37ed fix(deps): update react-router monorepo to v6.30.2 (#1296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-17 06:27:00 +00:00
edX requirements bot
ae0cb99cdf chore: update browserslist DB (#1295)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2025-11-17 00:16:15 +00:00
renovate[bot]
29bdb7d176 fix(deps): update dependency redux-saga to v1.4.2 (#1293)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-10 07:16:07 +00:00
renovate[bot]
5583c1589b chore(deps): update dependency @openedx/paragon to v23.16.0 (#1292)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-10 07:15:55 +00:00
edX requirements bot
7433b44059 chore: update browserslist DB (#1291)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2025-11-10 00:16:48 +00:00
edX requirements bot
df11ee6fb8 chore: update browserslist DB (#1290)
Co-authored-by: jsnwesson <62807795+jsnwesson@users.noreply.github.com>
2025-11-03 00:15:56 +00:00
14 changed files with 3044 additions and 7392 deletions

View File

@@ -20,5 +20,5 @@ Include a link to the sandbox for design changes or screenshot for before and af
#### Post-merge Checklist #### Post-merge Checklist
* [ ] Deploy the changes to prod after verifying on stage or ask **@openedx/2u-infinity** to do it. * [ ] Deploy the changes to prod after verifying on stage or ask **@jacobo-dominguez-wgu** to do it.
* [ ] 🎉 🙌 Celebrate! Thanks for your contribution. * [ ] 🎉 🙌 Celebrate! Thanks for your contribution.

View File

@@ -32,44 +32,52 @@ When a user views someone else's profile, they see all those fields that that us
Getting Started Getting Started
*************** ***************
Installation Prerequisites
============ =============
Follow these steps to provision, run, and enable an instance of the The Tutor_ platform is a prerequisite for developing an MFE.
Profile MFE for local development via the `devstack`_. Utilize `relevant tutor-mfe documentation`_ to guide you through
the process of MFE development within the Tutor environment.
.. _devstack: https://github.com/openedx/devstack#getting-started .. _Tutor: https://github.com/overhangio/tutor
#. To use this application, `devstack <https://github.com/openedx/devstack>`__ must be running and you must be logged into it. .. _relevant tutor-mfe documentation: https://github.com/overhangio/tutor-mfe#mfe-development
* Start devstack
* Log in (http://localhost:18000/login)
#. To run Profile, install requirements and start the development server by running: Cloning and Startup
===================
.. code-block:: 1. Clone the repo:
1. Clone your new repo:
``git clone https://github.com/openedx/frontend-app-profile.git`` ``git clone https://github.com/openedx/frontend-app-profile.git``
2. Use node v18.x. 2. Use the version of node in the `.nvmrc` file.
The current version of the micro-frontend build scripts support node 18. The current version of the micro-frontend build scripts support the version of node found in `.nvmrc`.
Using other major versions of node *may* work, but this is unsupported. For Using other major versions of node *may* work, but this is unsupported. For
convenience, this repository includes an .nvmrc file to help in setting the convenience, this repository includes an .nvmrc file to help in setting the
correct node version via `nvm <https://github.com/nvm-sh/nvm>`_. correct node version via `nvm <https://github.com/nvm-sh/nvm>`_.
3. Install npm dependencies: 3. Install npm dependencies:
``cd frontend-app-profile && npm ci`` ``cd frontend-app-profile && npm ci``
4. Start the dev server: 4. Mount the frontend-app-profile MFE in Tutor:
``npm start`` ``tutor mounts add <your-tutor-project-dir>/frontend-app-profile``
The server will run on port 1995 5. Build the Docker image:
Once the dev server is up, visit http://localhost:1995/u/staff. ``tutor images build profile-dev``
6. Launch the development server with Tutor:
``tutor dev start profile``
The dev server is running at `http://localhost:1995/u/staff <http://localhost:1995/u/staff>`_.
`Tutor <https://github.com/overhangio/tutor>`_. If you start Tutor with ``tutor dev start profile``
that should give you everything you need as a companion to this frontend.
Plugins Plugins
======= =======

View File

@@ -19,7 +19,7 @@ metadata:
openedx.org/add-to-projects: "openedx:23" openedx.org/add-to-projects: "openedx:23"
openedx.org/release: "master" openedx.org/release: "master"
spec: spec:
owner: group:2u-infinity owner: jacobo-dominguez-wgu
type: 'service' type: 'service'
lifecycle: 'production' lifecycle: 'production'
# (Optional) An array of different components or resources. # (Optional) An array of different components or resources.

10274
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -44,7 +44,7 @@
"@pact-foundation/pact": "^11.0.2", "@pact-foundation/pact": "^11.0.2",
"@redux-devtools/extension": "3.3.0", "@redux-devtools/extension": "3.3.0",
"classnames": "2.5.1", "classnames": "2.5.1",
"core-js": "3.46.0", "core-js": "3.48.0",
"history": "5.3.0", "history": "5.3.0",
"lodash.camelcase": "4.3.0", "lodash.camelcase": "4.3.0",
"lodash.get": "4.4.2", "lodash.get": "4.4.2",
@@ -55,11 +55,11 @@
"react-dom": "18.3.1", "react-dom": "18.3.1",
"react-helmet": "6.1.0", "react-helmet": "6.1.0",
"react-redux": "7.2.9", "react-redux": "7.2.9",
"react-router": "6.30.1", "react-router": "6.30.3",
"react-router-dom": "6.30.1", "react-router-dom": "6.30.3",
"redux": "4.2.1", "redux": "4.2.1",
"redux-logger": "3.0.6", "redux-logger": "3.0.6",
"redux-saga": "1.3.0", "redux-saga": "1.4.2",
"redux-thunk": "2.4.2", "redux-thunk": "2.4.2",
"regenerator-runtime": "0.14.1", "regenerator-runtime": "0.14.1",
"reselect": "5.1.1", "reselect": "5.1.1",
@@ -72,7 +72,7 @@
"@openedx/frontend-build": "^14.6.2", "@openedx/frontend-build": "^14.6.2",
"@testing-library/jest-dom": "6.9.1", "@testing-library/jest-dom": "6.9.1",
"@testing-library/react": "14.3.1", "@testing-library/react": "14.3.1",
"glob": "11.0.3", "glob": "11.1.0",
"redux-mock-store": "1.5.5" "redux-mock-store": "1.5.5"
} }
} }

View File

@@ -158,7 +158,7 @@ describe('<ProfilePage />', () => {
courseCertificates: [{ title: 'Course 1' }], courseCertificates: [{ title: 'Course 1' }],
levelOfEducation: 'bachelors', levelOfEducation: 'bachelors',
languageProficiencies: [{ code: 'en' }], languageProficiencies: [{ code: 'en' }],
socialLinks: [{ platform: 'twitter', socialLink: 'https://twitter.com/user' }], socialLinks: [{ platform: 'x', socialLink: 'https://x.com/user' }],
}, },
preferences: { preferences: {
...storeMocks.viewOtherProfile.profilePage.preferences, ...storeMocks.viewOtherProfile.profilePage.preferences,

View File

@@ -13,8 +13,8 @@ module.exports = {
socialLink: 'https://www.facebook.com/aloha' socialLink: 'https://www.facebook.com/aloha'
}, },
{ {
platform: 'twitter', platform: 'x',
socialLink: 'https://www.twitter.com/ALOHA' socialLink: 'https://www.x.com/ALOHA'
} }
], ],
profileImage: { profileImage: {
@@ -85,8 +85,8 @@ module.exports = {
socialLink: 'https://www.facebook.com/aloha' socialLink: 'https://www.facebook.com/aloha'
}, },
{ {
platform: 'twitter', platform: 'x',
socialLink: 'https://www.twitter.com/ALOHA' socialLink: 'https://www.x.com/ALOHA'
} }
], ],
timeZone: null, timeZone: null,

View File

@@ -13,8 +13,8 @@ module.exports = {
socialLink: 'https://www.facebook.com/aloha' socialLink: 'https://www.facebook.com/aloha'
}, },
{ {
platform: 'twitter', platform: 'x',
socialLink: 'https://www.twitter.com/ALOHA' socialLink: 'https://www.x.com/ALOHA'
} }
], ],
profileImage: { profileImage: {

View File

@@ -13,8 +13,8 @@ module.exports = {
socialLink: 'https://www.facebook.com/aloha' socialLink: 'https://www.facebook.com/aloha'
}, },
{ {
platform: 'twitter', platform: 'x',
socialLink: 'https://www.twitter.com/ALOHA' socialLink: 'https://www.x.com/ALOHA'
} }
], ],
profileImage: { profileImage: {
@@ -85,8 +85,8 @@ module.exports = {
socialLink: 'https://www.facebook.com/aloha' socialLink: 'https://www.facebook.com/aloha'
}, },
{ {
platform: 'twitter', platform: 'x',
socialLink: 'https://www.twitter.com/ALOHA' socialLink: 'https://www.x.com/ALOHA'
} }
], ],
timeZone: null, timeZone: null,

View File

@@ -307,7 +307,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing other profi
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<div <div
class="row m-0 pb-1.5 align-items-center" class="row m-0 pb-1.5 align-items-center"
@@ -357,7 +357,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing other profi
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -390,7 +390,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing other profi
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -423,7 +423,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing other profi
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -460,7 +460,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing other profi
class="pgn-transition-replace-group position-relative pt-0" class="pgn-transition-replace-group position-relative pt-0"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -493,7 +493,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing other profi
class="pgn-transition-replace-group position-relative p-0" class="pgn-transition-replace-group position-relative p-0"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<div> <div>
<div> <div>
@@ -504,7 +504,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing other profi
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
data-hj-suppress="true" data-hj-suppress="true"
> >
X X (Twitter)
</p> </p>
<div <div
class="row m-0 p-0 d-flex flex-nowrap align-items-center" class="row m-0 p-0 d-flex flex-nowrap align-items-center"
@@ -515,7 +515,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing other profi
<h4 <h4
class="edit-section-header text-gray-700" class="edit-section-header text-gray-700"
> >
https://twitter.com/user https://x.com/user
</h4> </h4>
</div> </div>
<div <div
@@ -747,7 +747,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing own profile
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<div <div
class="row m-0 pb-1.5 align-items-center" class="row m-0 pb-1.5 align-items-center"
@@ -842,7 +842,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing own profile
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -920,7 +920,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing own profile
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -998,7 +998,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing own profile
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -1080,7 +1080,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing own profile
class="pgn-transition-replace-group position-relative pt-0" class="pgn-transition-replace-group position-relative pt-0"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -1158,7 +1158,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing own profile
class="pgn-transition-replace-group position-relative p-0" class="pgn-transition-replace-group position-relative p-0"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<div> <div>
<div> <div>
@@ -1169,7 +1169,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing own profile
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
data-hj-suppress="true" data-hj-suppress="true"
> >
X X (Twitter)
</p> </p>
<div <div
class="w-100 overflowWrap-breakWord" class="w-100 overflowWrap-breakWord"
@@ -1183,7 +1183,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing own profile
<h4 <h4
class="edit-section-header text-gray-700" class="edit-section-header text-gray-700"
> >
https://www.twitter.com/ALOHA https://www.x.com/ALOHA
</h4> </h4>
</div> </div>
<div <div
@@ -1403,7 +1403,7 @@ exports[`<ProfilePage /> Renders correctly in various states viewing own profile
> >
<div <div
class="certificate-type-illustration" class="certificate-type-illustration"
style="background-image: url(icon/mock/path);" style="background-image: url("icon/mock/path");"
/> />
<div <div
class="d-flex flex-column position-relative p-0 width-314px" class="d-flex flex-column position-relative p-0 width-314px"
@@ -1663,7 +1663,7 @@ exports[`<ProfilePage /> Renders correctly in various states without credentials
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<div <div
class="row m-0 pb-1.5 align-items-center" class="row m-0 pb-1.5 align-items-center"
@@ -1758,7 +1758,7 @@ exports[`<ProfilePage /> Renders correctly in various states without credentials
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -1836,7 +1836,7 @@ exports[`<ProfilePage /> Renders correctly in various states without credentials
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -1914,7 +1914,7 @@ exports[`<ProfilePage /> Renders correctly in various states without credentials
class="pgn-transition-replace-group position-relative pt-40px" class="pgn-transition-replace-group position-relative pt-40px"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -1996,7 +1996,7 @@ exports[`<ProfilePage /> Renders correctly in various states without credentials
class="pgn-transition-replace-group position-relative pt-0" class="pgn-transition-replace-group position-relative pt-0"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<p <p
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
@@ -2074,7 +2074,7 @@ exports[`<ProfilePage /> Renders correctly in various states without credentials
class="pgn-transition-replace-group position-relative p-0" class="pgn-transition-replace-group position-relative p-0"
> >
<div <div
style="padding: .1px 0px;" style="padding: 0.1px 0px;"
> >
<div> <div>
<div> <div>
@@ -2085,7 +2085,7 @@ exports[`<ProfilePage /> Renders correctly in various states without credentials
class="h5 font-weight-bold m-0 pb-1.5" class="h5 font-weight-bold m-0 pb-1.5"
data-hj-suppress="true" data-hj-suppress="true"
> >
X X (Twitter)
</p> </p>
<div <div
class="w-100 overflowWrap-breakWord" class="w-100 overflowWrap-breakWord"
@@ -2099,7 +2099,7 @@ exports[`<ProfilePage /> Renders correctly in various states without credentials
<h4 <h4
class="edit-section-header text-gray-700" class="edit-section-header text-gray-700"
> >
https://www.twitter.com/ALOHA https://www.x.com/ALOHA
</h4> </h4>
</div> </div>
<div <div
@@ -2319,7 +2319,7 @@ exports[`<ProfilePage /> Renders correctly in various states without credentials
> >
<div <div
class="certificate-type-illustration" class="certificate-type-illustration"
style="background-image: url(icon/mock/path);" style="background-image: url("icon/mock/path");"
/> />
<div <div
class="d-flex flex-column position-relative p-0 width-314px" class="d-flex flex-column position-relative p-0 width-314px"

View File

@@ -14,8 +14,8 @@ const SOCIAL = {
linkedin: { linkedin: {
title: 'LinkedIn', title: 'LinkedIn',
}, },
twitter: { x: {
title: 'Twitter', title: 'X',
}, },
facebook: { facebook: {
title: 'Facebook', title: 'Facebook',

View File

@@ -32,7 +32,7 @@ describe('profilePage reducer', () => {
bio: 'Software Engineer', bio: 'Software Engineer',
country: 'US', country: 'US',
levelOfEducation: 'bachelors', levelOfEducation: 'bachelors',
socialLinks: [{ platform: 'twitter', link: 'twitter.com/johndoe' }], socialLinks: [{ platform: 'x', link: 'x.com/johndoe' }],
languageProficiencies: [{ code: 'en', name: 'English' }], languageProficiencies: [{ code: 'en', name: 'English' }],
profileImage: { url: 'profile.jpg' }, profileImage: { url: 'profile.jpg' },
yearOfBirth: 1990, yearOfBirth: 1990,

View File

@@ -187,7 +187,7 @@ export const formSocialLinksSelector = createSelector(
socialLinksByPlatformSelector, socialLinksByPlatformSelector,
draftSocialLinksByPlatformSelector, draftSocialLinksByPlatformSelector,
(linksByPlatform, draftLinksByPlatform) => { (linksByPlatform, draftLinksByPlatform) => {
const knownPlatforms = ['twitter', 'facebook', 'linkedin']; const knownPlatforms = ['x', 'facebook', 'linkedin'];
const socialLinks = []; const socialLinks = [];
knownPlatforms.forEach((platform) => { knownPlatforms.forEach((platform) => {
if (draftLinksByPlatform[platform] !== undefined) { if (draftLinksByPlatform[platform] !== undefined) {

View File

@@ -2,7 +2,7 @@ import React, { useState } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { Alert } from '@openedx/paragon'; import { Alert } from '@openedx/paragon';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { faTwitter, faFacebook, faLinkedin } from '@fortawesome/free-brands-svg-icons'; import { faXTwitter, faFacebook, faLinkedin } from '@fortawesome/free-brands-svg-icons';
import { FormattedMessage } from '@edx/frontend-platform/i18n'; import { FormattedMessage } from '@edx/frontend-platform/i18n';
import classNames from 'classnames'; import classNames from 'classnames';
@@ -19,9 +19,9 @@ const platformDisplayInfo = {
icon: faFacebook, icon: faFacebook,
name: 'Facebook', name: 'Facebook',
}, },
twitter: { x: {
icon: faTwitter, icon: faXTwitter,
name: 'X', name: 'X (Twitter)',
}, },
linkedin: { linkedin: {
icon: faLinkedin, icon: faLinkedin,
@@ -46,7 +46,7 @@ const SocialLinks = ({
const [activePlatform, setActivePlatform] = useState(null); const [activePlatform, setActivePlatform] = useState(null);
const mergeWithDrafts = (newSocialLink) => { const mergeWithDrafts = (newSocialLink) => {
const knownPlatforms = ['twitter', 'facebook', 'linkedin']; const knownPlatforms = ['x', 'facebook', 'linkedin'];
const updated = []; const updated = [];
knownPlatforms.forEach((platform) => { knownPlatforms.forEach((platform) => {
if (newSocialLink.platform === platform) { if (newSocialLink.platform === platform) {
@@ -164,7 +164,7 @@ const SocialLinks = ({
values={{ values={{
network: platformDisplayInfo[platform].name, network: platformDisplayInfo[platform].name,
}} }}
description="{network} is the name of a social network such as Facebook or Twitter" description="{network} is the name of a social network such as Facebook or X"
/> />
</EmptyContent> </EmptyContent>
</div> </div>