Logged in user can use "Add to collection" menu item

This commit is contained in:
Andrew Nicolaou 2019-09-09 18:52:54 +02:00
parent 3dbaa900a4
commit 55e6b3162d
4 changed files with 41 additions and 12 deletions

View file

@ -322,6 +322,19 @@ class Nav extends React.PureComponent {
Open Open
</Link> </Link>
</li> } </li> }
{ __process.env.UI_COLLECTIONS_ENABLED &&
this.props.user.authenticated &&
this.props.project.id &&
<li className="nav__dropdown-item">
<Link
to={`/${this.props.user.username}/sketches/${this.props.project.id}/add-to-collection`}
onFocus={this.handleFocusForFile}
onBlur={this.handleBlur}
onClick={this.setDropdownForNone}
>
Add to Collection
</Link>
</li> }
{ __process.env.EXAMPLES_ENABLED && { __process.env.EXAMPLES_ENABLED &&
<li className="nav__dropdown-item"> <li className="nav__dropdown-item">
<Link <Link

View file

@ -30,6 +30,7 @@ import * as ConsoleActions from '../actions/console';
import { getHTMLFile } from '../reducers/files'; import { getHTMLFile } from '../reducers/files';
import Overlay from '../../App/components/Overlay'; import Overlay from '../../App/components/Overlay';
import About from '../components/About'; import About from '../components/About';
import CollectionList from '../components/CollectionList';
import Feedback from '../components/Feedback'; import Feedback from '../components/Feedback';
class IDEView extends React.Component { class IDEView extends React.Component {
@ -381,6 +382,20 @@ class IDEView extends React.Component {
<Feedback previousPath={this.props.ide.previousPath} /> <Feedback previousPath={this.props.ide.previousPath} />
</Overlay> </Overlay>
} }
{this.props.location.pathname.match(/add-to-collection$/) &&
<Overlay
ariaLabel="add to collection"
title="Add sketch to collection"
previousPath={this.props.ide.previousPath}
>
<CollectionList
addMode
projectId={this.props.params.project_id}
username={this.props.params.username}
user={this.props.user}
/>
</Overlay>
}
{this.props.ide.shareModalVisible && {this.props.ide.shareModalVisible &&
<Overlay <Overlay
title="Share This Sketch" title="Share This Sketch"

View file

@ -42,6 +42,7 @@ const routes = store => (
<Route path="/assets" component={createRedirectWithUsername('/:username/assets')} /> <Route path="/assets" component={createRedirectWithUsername('/:username/assets')} />
<Route path="/account" component={AccountView} /> <Route path="/account" component={AccountView} />
<Route path="/:username/sketches/:project_id" component={IDEView} /> <Route path="/:username/sketches/:project_id" component={IDEView} />
<Route path="/:username/sketches/:project_id/add-to-collection" component={IDEView} />
<Route path="/:username/sketches" component={DashboardView} /> <Route path="/:username/sketches" component={DashboardView} />
<Route path="/:username/collections" component={DashboardView} /> <Route path="/:username/collections" component={DashboardView} />
<Route path="/:username/collections/create" component={CollectionView} /> <Route path="/:username/collections/create" component={CollectionView} />

View file

@ -27,12 +27,24 @@ router.get('/projects/:project_id', (req, res) => {
)); ));
}); });
router.get('/:username/sketches/:project_id/add-to-collection', (req, res) => {
projectForUserExists(req.params.username, req.params.project_id, exists => (
exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html))
));
});
router.get('/:username/sketches/:project_id', (req, res) => { router.get('/:username/sketches/:project_id', (req, res) => {
projectForUserExists(req.params.username, req.params.project_id, exists => ( projectForUserExists(req.params.username, req.params.project_id, exists => (
exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html)) exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html))
)); ));
}); });
router.get('/:username/sketches', (req, res) => {
userExists(req.params.username, exists => (
exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html))
));
});
router.get('/:username/full/:project_id', (req, res) => { router.get('/:username/full/:project_id', (req, res) => {
projectForUserExists(req.params.username, req.params.project_id, exists => ( projectForUserExists(req.params.username, req.params.project_id, exists => (
exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html)) exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html))
@ -106,12 +118,6 @@ router.get('/feedback', (req, res) => {
res.send(renderIndex()); res.send(renderIndex());
}); });
router.get('/:username/sketches', (req, res) => {
userExists(req.params.username, exists => (
exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html))
));
});
router.get('/:username/collections/create', (req, res) => { router.get('/:username/collections/create', (req, res) => {
userExists(req.params.username, (exists) => { userExists(req.params.username, (exists) => {
const isLoggedInUser = req.user && req.user.username === req.params.username; const isLoggedInUser = req.user && req.user.username === req.params.username;
@ -128,12 +134,6 @@ router.get('/:username/collections/create', (req, res) => {
)); ));
}); });
router.get('/:username/sketches/:project_id/add-to-collection', (req, res) => {
projectForUserExists(req.params.username, req.params.project_id, exists => (
exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html))
));
});
router.get('/:username/collections/:id', (req, res) => { router.get('/:username/collections/:id', (req, res) => {
collectionForUserExists(req.params.username, req.params.id, exists => ( collectionForUserExists(req.params.username, req.params.id, exists => (
exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html)) exists ? res.send(renderIndex()) : get404Sketch(html => res.send(html))