The canSave prop was being passed to the editor view, but needs to also be passed to the player view because it is used to decide whether to connect the viewer to cloud variables. People cannot connect to cloud variables after entering editor mode on anothers project.
This does not implement any further design, like showing a confirmation popover, but just makes sure the button works. I used a very slim package to implement copy that does not include any fallbacks for IE, since we do not need to support that here.
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)
Having Formsy around the entire page was causing re-renders to happen when you typed into an input, when really just that component needed to re-render.
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.
This fixes an issue where a project with one top-level comment and one reply would should the "Load more" button at the bottom, even though there were no more to load