* add canSaveNew prop to pass to GUI
* pass to and receive from GUI info about project lifecycle
* reset project data or fetch new project data depending on updates received from gui
* removed canSaveNew
* projectId always a string
* moved handleUpdateProjectId calls that fetch or set project metadata into componentDidUpdate
* changed page history object
* removed comments
* two small fixes to deal with edge cases
* cleaning up getExtensions
* move login/registration functions and view state to session reducer, pass to gui
* navigation reducer handles login; gui passed renderLogin function
* put back in join class to make smoke tests keep working
* Create Comment component, start styling it
* Restructure PreviewPresentation to better match mockup
* Add padding, border to comment bubble
* add padding to bottom row of comment
* Tweak alignment of avatar and comment content
* Add margin to lower project page container
* Use border-box box sizing for comment bubble
* Make user avatar a link
* Add initial implementation of comment tail
* Align username row properly, fix comment bubble width
* Use ::before pseudoelement for comment tail
* Remove unused props to Comment component
* Add CommentContainer to handle comment replies
* Use CommentContainer instead of Comment in PreviewPresentation
* Remove debug data from CommentContainer
* Fetch top level comments from the API
* Force comment container to stretch to bottom of view div
* Remove unused api import in CommentContainer
* Long words in comments should not overflow page
* Remove @ before username in comment title
* Fix word wrapping on Firefox
* Refactor CommentContainer into a class
* Properly export CommentContainer component
* Make replies column take up proper width
* Pass project ID to CommentContainer
* Fetch comment replies in CommentContainer
* Initial implementation for loading more comments
* Add "Load More" button to Presentation
* Initial implementation of collapsing threads longer than 3 replies
* Remove console log from preview.js redux
* Tweak last comment gradient color
* Only show three total replies in collapsed state
* Match scratchr2 behavior for thread collapsing
* Use width calc instead of margin and width 100%
* Fix styling for load more button
* Make comment border gray to match the wireframe
* Allow clicking through comment fade gradient
* Add comment compose component
* style comment compose box
* Style post, cancel buttons on comment compose component
* Add margin to create comment container
* Tweak styling for characters remaining text
* Tweak placeholder text
* Add more margin to comment avatar
* Add icons and styling to delete, report text
* Refactor px -> rem where possible in comment styles
* Change comment time color to dark gray
* Tweak margin and border radius
* Add reply icon to preview comments
* Clean up unused imports, console.log in compose-comment component
* Remove console statement in preview.jsx
* Add some clarifying comments to unfinished parts of comments
* Remove direct passing of comment api response to CommentContainer
* CommentContainer should not pass api response directly
* Rename CommentContainer to TopLevelComment
* First pass at getReplies for comments in redux
* Move reply fetching into redux actions instead of in TopLevelComment
* Refactor getReplies logic to behave better
* Remove components not directly related to reading comments
* Hide load more button if all comments are loaded
This uses the project info returned by the API
* Use same gradient as add to studio modal on comment thread
First pass at project page design using actual assets from Carl, and matching styles with current design.
Includes a (negative margin) hack to line up the stage. see https://github.com/LLK/scratch-gui/issues/2132
* Add user-session awareness
- only show remix button if user is logged in (TBD: probably will want to hide if project creator == user)
* decorate text with @mentions and #hashtags
* Add studios, loves, favs
* In-place editing of title and description if current user is author and project shared (with validation)
- Moved preview state into redux
- Gets remix credit if the project is a remix
- Shows up to 5 remixes (direct children?)
- handles empty remixes result (it’s not an array)
- Added Column component - based on Grid, but doesn’t use frameless to set width.
- allows trailing ‘/‘ on the URL
- cleaned up conditional content
* issue/gh-1546:
Make api request on filter change
render load more even if messages not there
# Conflicts:
# src/views/messages/container.jsx
# src/views/messages/presentation.jsx
When trying to clear the invite, because invite is currently an object, it’s getting the state’s existing invite re-applied via `defaultsDeep`. Making it an array should solve this issue
* start work on www page
committing out of paranoia.
including changing splash page endpoints
* updates from feedback
thanks @rschamp! This includes:
1. splitting out messages list into a separate component (for clarity)
2. some comment/formatting adjustments for the api calls
3. removal of an extraneous property in emoji-text
* remove duplicate string declaration
* use object.assign instead of defaults deep
we don’t need deep defaults
* fix react warnings
Instead of retrieving the permission from the session cookie, store permission data from /session/, and cache it in a cookie. On subsequent page loads, the permission information will be retrieved from the cookie more quickly than the /session/ endpoint returns. When the session changes, the cookie and permissions state is updated to reflect the new state.
Previously requests to /session/ would return a signal to redirect, but we need /session/ to complete registration. So check if we should redirect when we retrieve the session.
Also update this behavior for banned users.
* 'feature/teacher-registration-flow' of https://github.com/rschamp/scratch-www: (46 commits)
Add serverside email validation
Clean up
Move registration step to main component
Submit the rest of the fields when registering
This help text is redundant now
Fix organization "other" field enablement
Get the form creating regular accounts
Add method to api for submitting forms
Update language chooser for formsy
Add missing string
Add progress indicators
Style pass
Remove unused label component
Remove unused mixin factory
Fixup api refactor
Add serverside username validation
L10n pass
Explain the GeneralError component
Add help text when a field is not required
L10n WIP
...
# Conflicts:
# src/l10n.json
# src/views/splash/splash.jsx
1. split `auth.js` up so it's 1 reducer per file
2. consolidate the conference schedule reducers
3. make conference reducer names more descriptive
4. add error handling for `body === 'undefined'`
Thanks @rschamp for all the help!
Use a model of reducer/action files for each component that has them, and make `reducer.js` be the one that imports and configures all of them. This modeling is based on a few examples I've seen which seemed to work for our current case, but I'm totally fine with splitting actions and reducers into separate directories if we'd like too.