Follow up the project info request with a request to the visibility endpoint to find out if the project is trashed or censored. The project just not being published is handled by the existing code.
This PR generalizes the ShareBanner to a more generic "Banner" that is then filled with the relevant content.
This visually appears like a "load more comments" button for now, but has the impact of unsetting the #comments-<id> hash in the url and resetting the comment state, showing all the comments (in paginated view)
This makes a couple of assumptions about the shape of the endpoint:
- Route is /proxy/projects/:id/share.
- Returns the full (updated) project info on success, just like the project update endpoint does.
I reviewed these with colby since this is frontrunning the actual API, but I can update once the API is finalized.
Show the load more comments button any time the last comment page was filled to the requested limit. As noted in the comment, this heuristic will be wrong at most 5% of the time but the failure mode (showing load more which, when clicked doesn't load any more, just goes away) is very mild, and for the overwhelming majority of project views that happen on projects with many, many comments, this is very unlikely to ever be noticed. It obviously isn't a perfect solution, but I cannot think of another that does not need the server to do another query to find out the total number of visible comments, or to find out if there are more comments after the requested offset+limit.
* Initialize `locales` in redux using methods exported by GUI.
* pass GUI method to set the `scratchlanguage` cookie
NOTE: It does not reload the page, so switching back to the project page will not reflect language changes made in gui until the next page reload. Reloading the page will lose project state so we don’t want to do that.
* 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