Commit Graph

13 Commits

Author SHA1 Message Date
David Joy
129e32f7b5 Client/server data adapter and simpler data model. (#53)
* Client/server data adapter and simpler data passthroughs.

* Parse error response and pipe to UI

* Add top-of-form error display for social links

* Remove save failed state from save button

* Remove object deconstruction in catch

* Fixing a few small bugs.

* When opening and closing forms, remove drafts.

* Tweak where we send account_privacy back to

* Passing course cert visibility through.

* Fixin’ up the tests.

* Documenting weird social links behavior.

* More comments.
2019-03-04 16:45:22 -05:00
Adam Butterworth
a03a063179 Add languageProficiencies 2019-03-01 14:17:53 -05:00
David Joy
baf6e83f73 Re-re-rewire data/form state up to redux (#40)
This PR rewires how our forms get their data. It also folds in changes from #35 because @abutterworth and I had a pretty hefty conflict between our two branches.

This turned into a broader effort than I intended, admittedly.

The original goal was to take our form state out of component state and put it into redux state for all six forms on the profile page. This has been done, but doing so begged a bit of broader refactoring and renaming as well.

In no particular order:

1. We were referring to our forms as fields - that language has been fixed.  They're forms now.
2. We were putting 'draft' form values in component state - that state has been moved up to the redux level.
3. The fetchProfile action is now responsible for making several underlying calls to the system for the profile's account information, preferences (if it's your own account), and certificates.  Before, we had multiple actions responsible for each part, and coordination was hard.
4. `react-router-redux` has been replaced with `connected-react-router`.  This is admittedly not something that ultimately needed to be in this PR - I _thought_ I was going to need it, but after the work was done, the need for the change fell out and it's essentially unrelated.  That said, `react-router-redux` is deprecated and no longer supported, and `connected-react-router` has taken its place.  I didn't see any reason to throw away the work, so here it is.
5. I updated some packages as part of number 4 above which didn't strictly need to be updated.  I _thought_ I needed to update them w/r/t changing the router, but I didn't.  As above, didn't see any reason to throw away the work, though.
6. Introduced `reselect` to handle derived state.  This helps keep components clean.
7. Directly connected the forms to the store.  This makes ProfilePage.jsx a lot cleaner.
8. The ProfilePage.jsx file still manages calling action creators to put stuff in redux - the forms are connected for their data, but are otherwise "dumb" about how the data gets back into redux.  It felt weird, for instance, to have the Name.jsx component call an action creator called `saveProfile`... just seemed above its pay grade.  Admittedly this is a bit asymmetrical, but it allowed ProfilePage.jsx to be a lot shorter/have less responsibility for passing data down.
2019-02-27 16:23:41 -05:00
Adam Butterworth
16ebda0761 Add course certificates stub 2019-02-22 15:09:34 -05:00
Adam Butterworth
2efdc78ace Import only lodash set and defaults deep 2019-02-21 13:55:03 -05:00
Adam Butterworth
f1b6af4975 Commit package-lock 2019-02-15 16:36:22 -05:00
albemarle
12db5859bf set up i18n 2019-02-15 15:34:18 -05:00
Adam Butterworth
e076356455 wireframe
use reactstrap

Add banner and header atoms

pull all user data out of JSX

Transform component to class

Add stub for editable content

Add height animation to editable content

progress with editing

Break out components to individual files. Make most editable.

Add ability to change tag of EditableContent

Add avatar

fix some prop type issues

Add an async button

Small update to avatar

Add height animation to editable content

pull edited data up to useraccount component callback

Updating oneOf prop type to provide arrays.

Fixing missing key attributes on repeated tags.

use reactstrap

Add state wrapper container to UserAccount component.

Move crossfade transition of in-context editable elements to a discrete component

Some reusable components.

Form row related stuff and an Alert box.  All backed by reactstrap.

Add passthroughs for button save states

Pointing edx-bootstrap at 2.0 branch

Also adding font-awesome icons via the preferred method, and updating port to 1995.

Fixing font-awesome icons and getting bootstrap imported correctly.

Update edx bootstrap

There was a problem with a missing org prefix

Move headings to a common component. Add full name

fix missing key and conflict of value and defalutValue props

Remove extraneous div in TransitionReplace

Fix some wonkiness with the education component

Add classname prop to TransitionReplace

Add some more consistent margins

Update to layout for some editable content

Update markup to remove repeat renders

Add empty state for bio

Refactoring profile form state out of the user account “fetch” state from frontend-auth

Using redux-saga to manage action side-effects (async calls, secondary actions, and delays).  redux-saga is a very flexible alternate side-effect model for redux (as opposed to redux-thunk).  Used it to good effect in the past, and it helps separate concerns between action creators and side effect management.  It also helps decouple react components from async actions by having redux-saga register as an observer of the redux action stream.

Add empty states for all fields except social links and my certificates

Close fields after save

Remove the delay after successfully saving

Update banner image. Update edit controls layout

Updated edx bootstrap to have focus ring on btn-link buttons

Add event handler props to TransitionReplace. Handle focus when edit fields are swapped in and out

Update empty content icon and width

Hide visibility if a field has no value

Add delays back in

Large reworking of components here. Social links still has a bug. Only twitter will save.

Renaming profileActions -> profile and tweaking editable state stuff.

Adding tests for profile actions - pulled over from frontend-auth.

Removing profile API helpers, fixing a few bugs in saving the user profile.

Make Social Links a full on component again. Can only save one field at a time.

Remove an old version of edx-bootstrap

Renaming UserAccount components to UserProfile.
2019-02-14 13:17:37 -05:00
Douglas Hall
31d89ce8ef Renaming app to frontend-app-profile. 2019-02-13 14:50:45 -05:00
Robert Raposa
050688826f Call identify user for analytics.
Call encapsulated Segment call to identify user for analytics.

ARCH-379
2019-02-07 15:28:14 -05:00
Douglas Hall
b77eb48677 Adding header component. 2019-01-24 13:58:44 -05:00
Robert Raposa
41e25b1591 Add events for footer.
Wraps Segment track event and passes to footer.
2019-01-22 14:17:11 -05:00
Douglas Hall
b79aa790fa Initial commit. 2019-01-14 16:37:21 -05:00