diff --git a/js/components/ascribe_accordion_list/accordion_list_item_piece.js b/js/components/ascribe_accordion_list/accordion_list_item_piece.js index d0b16c9f..a7f09e85 100644 --- a/js/components/ascribe_accordion_list/accordion_list_item_piece.js +++ b/js/components/ascribe_accordion_list/accordion_list_item_piece.js @@ -1,14 +1,12 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import AccordionListItem from './accordion_list_item'; import { getLangText } from '../../utils/lang_utils'; -let Link = Router.Link; - let AccordionListItemPiece = React.createClass({ propTypes: { @@ -24,26 +22,15 @@ let AccordionListItemPiece = React.createClass({ badge: React.PropTypes.object }, - mixins: [Router.Navigation], - getLinkData() { + let { piece } = this.props; + + if(piece && piece.first_edition) { + return `/editions/${piece.first_edition.bitcoin_id}`; - if(this.props.piece && this.props.piece.first_edition) { - return { - to: 'edition', - params: { - editionId: this.props.piece.first_edition.bitcoin_id - } - }; } else { - return { - to: 'piece', - params: { - pieceId: this.props.piece.id - } - }; + return `/pieces/${piece.id}`; } - }, render() { @@ -51,11 +38,11 @@ let AccordionListItemPiece = React.createClass({ + } heading={ - +

{this.props.piece.title}

} subheading={ diff --git a/js/components/ascribe_detail/edition.js b/js/components/ascribe_detail/edition.js index 7f700c42..dfb5c3a8 100644 --- a/js/components/ascribe_detail/edition.js +++ b/js/components/ascribe_detail/edition.js @@ -1,7 +1,7 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import Row from 'react-bootstrap/lib/Row'; import Col from 'react-bootstrap/lib/Col'; @@ -44,7 +44,7 @@ import AppConstants from '../../constants/application_constants'; import { getLangText } from '../../utils/lang_utils'; import { mergeOptions } from '../../utils/general_utils'; -let Link = Router.Link; + /** * This is the component that implements display-specific functionality */ @@ -364,7 +364,7 @@ let CoaDetails = React.createClass({ {getLangText('Download')} - + diff --git a/js/components/ascribe_detail/further_details.js b/js/components/ascribe_detail/further_details.js index db241f3d..7d4424f3 100644 --- a/js/components/ascribe_detail/further_details.js +++ b/js/components/ascribe_detail/further_details.js @@ -23,7 +23,8 @@ let FurtherDetails = React.createClass({ pieceId: React.PropTypes.number, extraData: React.PropTypes.object, otherData: React.PropTypes.arrayOf(React.PropTypes.object), - handleSuccess: React.PropTypes.func + handleSuccess: React.PropTypes.func, + location: React.PropTypes.object }, getInitialState() { @@ -85,7 +86,8 @@ let FurtherDetails = React.createClass({ overrideForm={true} pieceId={this.props.pieceId} otherData={this.props.otherData} - multiple={true}/> + multiple={true} + location={this.props.location}/> diff --git a/js/components/ascribe_detail/further_details_fileuploader.js b/js/components/ascribe_detail/further_details_fileuploader.js index 9bf0bd5b..f4c4ea4c 100644 --- a/js/components/ascribe_detail/further_details_fileuploader.js +++ b/js/components/ascribe_detail/further_details_fileuploader.js @@ -20,7 +20,8 @@ let FurtherDetailsFileuploader = React.createClass({ submitFile: React.PropTypes.func, isReadyForFormSubmission: React.PropTypes.func, editable: React.PropTypes.bool, - multiple: React.PropTypes.bool + multiple: React.PropTypes.bool, + location: React.PropTypes.object }, getDefaultProps() { @@ -88,7 +89,8 @@ let FurtherDetailsFileuploader = React.createClass({ }} areAssetsDownloadable={true} areAssetsEditable={this.props.editable} - multiple={this.props.multiple}/> + multiple={this.props.multiple} + location={this.props.location}/> ); } diff --git a/js/components/ascribe_detail/piece_container.js b/js/components/ascribe_detail/piece_container.js index c2eb1759..d9257f09 100644 --- a/js/components/ascribe_detail/piece_container.js +++ b/js/components/ascribe_detail/piece_container.js @@ -43,6 +43,9 @@ import { getLangText } from '../../utils/lang_utils'; * This is the component that implements resource/data specific functionality */ let PieceContainer = React.createClass({ + propTypes: { + location: React.PropTypes.object + }, mixins: [Router.Navigation], @@ -261,7 +264,8 @@ let PieceContainer = React.createClass({ pieceId={this.state.piece.id} extraData={this.state.piece.extra_data} otherData={this.state.piece.other_data} - handleSuccess={this.loadPiece}/> + handleSuccess={this.loadPiece} + location={this.props.location}/> diff --git a/js/components/ascribe_forms/form_create_contract.js b/js/components/ascribe_forms/form_create_contract.js index b19cb050..fe00cebc 100644 --- a/js/components/ascribe_forms/form_create_contract.js +++ b/js/components/ascribe_forms/form_create_contract.js @@ -28,7 +28,8 @@ let CreateContractForm = React.createClass({ fileClassToUpload: React.PropTypes.shape({ singular: React.PropTypes.string, plural: React.PropTypes.string - }) + }), + location: React.PropTypes.object }, getInitialState() { @@ -86,7 +87,8 @@ let CreateContractForm = React.createClass({ areAssetsEditable={true} setIsUploadReady={this.setIsUploadReady} isReadyForFormSubmission={formSubmissionValidation.atLeastOneUploadedFile} - fileClassToUpload={this.props.fileClassToUpload}/> + fileClassToUpload={this.props.fileClassToUpload} + location={this.props.location}/> + enableLocalHashing={enableLocalHashing} + location={this.props.location}/> + fileClassToUpload={this.props.fileClassToUpload} + location={this.props.location}/> ); } }); diff --git a/js/components/ascribe_pagination/pagination_button.js b/js/components/ascribe_pagination/pagination_button.js index 3adf0b50..633d964c 100644 --- a/js/components/ascribe_pagination/pagination_button.js +++ b/js/components/ascribe_pagination/pagination_button.js @@ -1,11 +1,10 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import { getLangText } from '../../utils/lang_utils'; -let Link = Router.Link; let PaginationButton = React.createClass({ propTypes: { @@ -43,7 +42,7 @@ let PaginationButton = React.createClass({ if (this.isInRange(page)) { anchor = ( - {directionDisplay} diff --git a/js/components/ascribe_settings/contract_settings.js b/js/components/ascribe_settings/contract_settings.js index 7196032b..76052b26 100644 --- a/js/components/ascribe_settings/contract_settings.js +++ b/js/components/ascribe_settings/contract_settings.js @@ -27,6 +27,10 @@ import { mergeOptions, truncateTextAtCharIndex } from '../../utils/general_utils let ContractSettings = React.createClass({ + propTypes: { + location: React.PropTypes.object + }, + getInitialState(){ return mergeOptions( ContractListStore.getState(), @@ -89,7 +93,8 @@ let ContractSettings = React.createClass({ fileClassToUpload={{ singular: 'new contract', plural: 'new contracts' - }}/> + }} + location={this.props.location}/> ); } @@ -114,7 +119,9 @@ let ContractSettings = React.createClass({ - + - + + location={this.props.location}/> ); } }); diff --git a/js/components/ascribe_table/models/table_models.js b/js/components/ascribe_table/models/table_models.js index 7b971afe..b675d14e 100644 --- a/js/components/ascribe_table/models/table_models.js +++ b/js/components/ascribe_table/models/table_models.js @@ -35,14 +35,7 @@ export class TransitionModel { this.callback = callback; } - toReactRouterLinkProps(queryValue) { - let props = { - to: this.to, - params: {} - }; - - props.params[this.queryKey] = queryValue; - - return props; + toReactRouterLink(queryValue) { + return '/' + this.to + '/' + queryValue; } } \ No newline at end of file diff --git a/js/components/ascribe_table/table_item_wrapper.js b/js/components/ascribe_table/table_item_wrapper.js index 6eb7b3b4..2a2b31bf 100644 --- a/js/components/ascribe_table/table_item_wrapper.js +++ b/js/components/ascribe_table/table_item_wrapper.js @@ -1,11 +1,10 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import { ColumnModel } from './models/table_models'; -let Link = Router.Link; let TableItemWrapper = React.createClass({ propTypes: { @@ -15,8 +14,6 @@ let TableItemWrapper = React.createClass({ onClick: React.PropTypes.func }, - mixins: [Router.Navigation], - render() { return ( @@ -35,7 +32,7 @@ let TableItemWrapper = React.createClass({ ); } else { - let linkProps = column.transition.toReactRouterLinkProps(this.props.columnContent[column.transition.valueKey]); + let linkString = column.transition.toReactRouterLink(this.props.columnContent[column.transition.valueKey]); /** * If a transition is defined in columnContent, then we can use * Router.Navigation.transitionTo to redirect the user @@ -44,9 +41,9 @@ let TableItemWrapper = React.createClass({ return ( + onClick={column.transition.callback}> diff --git a/js/components/ascribe_uploader/ascribe_file_drag_and_drop/file_drag_and_drop.js b/js/components/ascribe_uploader/ascribe_file_drag_and_drop/file_drag_and_drop.js index 4c9211c5..c7f62b4c 100644 --- a/js/components/ascribe_uploader/ascribe_file_drag_and_drop/file_drag_and_drop.js +++ b/js/components/ascribe_uploader/ascribe_file_drag_and_drop/file_drag_and_drop.js @@ -40,7 +40,8 @@ let FileDragAndDrop = React.createClass({ plural: React.PropTypes.string }), - allowedExtensions: React.PropTypes.string + allowedExtensions: React.PropTypes.string, + location: React.PropTypes.object }, handleDragOver(event) { @@ -142,7 +143,8 @@ let FileDragAndDrop = React.createClass({ fileClassToUpload, areAssetsDownloadable, areAssetsEditable, - allowedExtensions + allowedExtensions, + location } = this.props; // has files only is true if there are files that do not have the status deleted or canceled @@ -179,7 +181,8 @@ let FileDragAndDrop = React.createClass({ hasFiles={hasFiles} onClick={this.handleOnClick} enableLocalHashing={enableLocalHashing} - fileClassToUpload={fileClassToUpload}/> + fileClassToUpload={fileClassToUpload} + location={location}/>

{getLangText('Would you rather')}

{getLangText('Hash your work')} @@ -52,7 +55,7 @@ let FileDragAndDropDialog = React.createClass({ or {getLangText('Upload and hash your work')} diff --git a/js/components/ascribe_uploader/react_s3_fine_uploader.js b/js/components/ascribe_uploader/react_s3_fine_uploader.js index c7a5f9a7..b736457f 100644 --- a/js/components/ascribe_uploader/react_s3_fine_uploader.js +++ b/js/components/ascribe_uploader/react_s3_fine_uploader.js @@ -127,7 +127,9 @@ let ReactS3FineUploader = React.createClass({ fileInputElement: React.PropTypes.oneOfType([ React.PropTypes.func, React.PropTypes.element - ]) + ]), + + location: React.PropTypes.object }, mixins: [Router.State], @@ -859,12 +861,20 @@ let ReactS3FineUploader = React.createClass({ enableLocalHashing, fileClassToUpload, validation, - fileInputElement + fileInputElement, + location } = this.props; // Here we initialize the template that has been either provided from the outside // or the default input that is FileDragAndDrop. return React.createElement(fileInputElement, { + multiple, + areAssetsDownloadable, + areAssetsEditable, + onInactive, + enableLocalHashing, + fileClassToUpload, + location, onDrop: this.handleUploadFile, filesToUpload: this.state.filesToUpload, handleDeleteFile: this.handleDeleteFile, @@ -872,14 +882,8 @@ let ReactS3FineUploader = React.createClass({ handlePauseFile: this.handlePauseFile, handleResumeFile: this.handleResumeFile, handleCancelHashing: this.handleCancelHashing, - multiple: multiple, - areAssetsDownloadable: areAssetsDownloadable, - areAssetsEditable: areAssetsEditable, - onInactive: onInactive, dropzoneInactive: this.isDropzoneInactive(), hashingProgress: this.state.hashingProgress, - enableLocalHashing: enableLocalHashing, - fileClassToUpload: fileClassToUpload, allowedExtensions: this.getAllowedExtensions() }); } diff --git a/js/components/header_notification.js b/js/components/header_notification.js index 67252af8..510db4c1 100644 --- a/js/components/header_notification.js +++ b/js/components/header_notification.js @@ -1,7 +1,7 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import DropdownButton from 'react-bootstrap/lib/DropdownButton'; import Glyphicon from 'react-bootstrap/lib/Glyphicon'; import MenuItem from 'react-bootstrap/lib/MenuItem'; @@ -14,8 +14,6 @@ import NotificationStore from '../stores/notification_store'; import { mergeOptions } from '../utils/general_utils'; import { getLangText } from '../utils/lang_utils'; -let Link = Router.Link; - let HeaderNotifications = React.createClass({ @@ -39,7 +37,7 @@ let HeaderNotifications = React.createClass({ this.setState(state); }, - onMenuItemClick(event) { + onMenuItemClick() { /* This is a hack to make the dropdown close after clicking on an item The function just need to be defined @@ -158,23 +156,13 @@ let NotificationListItem = React.createClass({ }, getLinkData() { + let { pieceOrEdition } = this.props; if (this.isPiece()) { - return { - to: 'piece', - params: { - pieceId: this.props.pieceOrEdition.id - } - }; + return `/pieces/${pieceOrEdition.id}`; } else { - return { - to: 'edition', - params: { - editionId: this.props.pieceOrEdition.bitcoin_id - } - }; + return `/pieces/${pieceOrEdition.bitcoin_id}`; } - }, onClick(event){ @@ -184,7 +172,7 @@ let NotificationListItem = React.createClass({ getNotificationText(){ let numNotifications = null; if (this.props.notification.length > 1){ - numNotifications =
+ {this.props.notification.length - 1} more...
; + numNotifications =
+ {this.props.notification.length - 1} {getLangText('more...')}
; } return (
@@ -196,7 +184,7 @@ let NotificationListItem = React.createClass({ render() { if (this.props.pieceOrEdition) { return ( - +
diff --git a/js/components/login_container.js b/js/components/login_container.js index f050014b..b9446606 100644 --- a/js/components/login_container.js +++ b/js/components/login_container.js @@ -1,14 +1,12 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import LoginForm from './ascribe_forms/form_login'; import { getLangText } from '../utils/lang_utils'; -let Link = Router.Link; - let LoginContainer = React.createClass({ propTypes: { @@ -35,8 +33,8 @@ let LoginContainer = React.createClass({ message={this.props.message} onLogin={this.props.onLogin}/>
- {getLangText('Not an ascribe user')}? {getLangText('Sign up')}...
- {getLangText('Forgot my password')}? {getLangText('Rescue me')}... + {getLangText('Not an ascribe user')}? {getLangText('Sign up')}...
+ {getLangText('Forgot my password')}? {getLangText('Rescue me')}...
); diff --git a/js/components/register_piece.js b/js/components/register_piece.js index 1a09e64f..d9880927 100644 --- a/js/components/register_piece.js +++ b/js/components/register_piece.js @@ -37,7 +37,8 @@ let RegisterPiece = React.createClass( { React.PropTypes.arrayOf(React.PropTypes.element), React.PropTypes.element, React.PropTypes.string - ]) + ]), + location: React.PropTypes.object }, mixins: [Router.Navigation], @@ -149,7 +150,8 @@ let RegisterPiece = React.createClass( { {...this.props} isFineUploaderActive={this.state.isFineUploaderActive} handleSuccess={this.handleSuccess} - onLoggedOut={this.onLoggedOut}> + onLoggedOut={this.onLoggedOut} + location={this.props.location}> {this.props.children} {this.getSpecifyEditions()} diff --git a/js/components/signup_container.js b/js/components/signup_container.js index 69fab1e8..4b492d0a 100644 --- a/js/components/signup_container.js +++ b/js/components/signup_container.js @@ -1,13 +1,12 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import SignupForm from './ascribe_forms/form_signup'; import { getLangText } from '../utils/lang_utils'; -let Link = Router.Link; let SignupContainer = React.createClass({ getInitialState() { @@ -39,7 +38,7 @@ let SignupContainer = React.createClass({
- {getLangText('Already an ascribe user')}? {getLangText('Log in')}...
+ {getLangText('Already an ascribe user')}? {getLangText('Log in')}...
diff --git a/js/components/whitelabel/prize/components/ascribe_accordion_list/accordion_list_item_prize.js b/js/components/whitelabel/prize/components/ascribe_accordion_list/accordion_list_item_prize.js index 7b3d5de0..a444b836 100644 --- a/js/components/whitelabel/prize/components/ascribe_accordion_list/accordion_list_item_prize.js +++ b/js/components/whitelabel/prize/components/ascribe_accordion_list/accordion_list_item_prize.js @@ -1,7 +1,7 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import StarRating from 'react-star-rating'; import PieceListActions from '../../../../../actions/piece_list_actions'; @@ -21,12 +21,9 @@ import GlobalNotificationActions from '../../../../../actions/global_notificatio import AclProxy from '../../../../acl_proxy'; import SubmitToPrizeButton from './../ascribe_buttons/submit_to_prize_button'; - import { getLangText } from '../../../../../utils/lang_utils'; import { mergeOptions } from '../../../../../utils/general_utils'; -let Link = Router.Link; - let AccordionListItemPrize = React.createClass({ propTypes: { @@ -85,7 +82,7 @@ let AccordionListItemPrize = React.createClass({ return (
- + - + {getLangText('Submit your rating')}
diff --git a/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js b/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js index 73cfa83a..77774126 100644 --- a/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js +++ b/js/components/whitelabel/prize/components/ascribe_detail/prize_piece_container.js @@ -1,7 +1,7 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import Moment from 'moment'; import StarRating from 'react-star-rating'; @@ -41,7 +41,6 @@ import ApiUrls from '../../../../../constants/api_urls'; import { mergeOptions } from '../../../../../utils/general_utils'; import { getLangText } from '../../../../../utils/lang_utils'; -let Link = Router.Link; /** * This is the component that implements resource/data specific functionality @@ -169,12 +168,12 @@ let NavigationHeader = React.createClass({ return (
- + - + {getLangText('Next')} diff --git a/js/components/whitelabel/prize/components/prize_login_container.js b/js/components/whitelabel/prize/components/prize_login_container.js index eaceb503..289243e9 100644 --- a/js/components/whitelabel/prize/components/prize_login_container.js +++ b/js/components/whitelabel/prize/components/prize_login_container.js @@ -1,14 +1,12 @@ 'use strict'; import React from 'react'; -import Router from 'react-router'; +import { Link } from 'react-router'; import LoginForm from '../../../ascribe_forms/form_login'; import { getLangText } from '../../../../utils/lang_utils'; -let Link = Router.Link; - let LoginContainer = React.createClass({ render() { @@ -19,11 +17,11 @@ let LoginContainer = React.createClass({
{getLangText('I\'m not a user') + ' '} - {getLangText('Sign up...')} + {getLangText('Sign up...')}
{getLangText('I forgot my password') + ' '} - {getLangText('Rescue me...')} + {getLangText('Rescue me...')}
); diff --git a/js/components/whitelabel/wallet/components/cyland/ascribe_detail/cyland_piece_container.js b/js/components/whitelabel/wallet/components/cyland/ascribe_detail/cyland_piece_container.js index 1be98cfc..70744f54 100644 --- a/js/components/whitelabel/wallet/components/cyland/ascribe_detail/cyland_piece_container.js +++ b/js/components/whitelabel/wallet/components/cyland/ascribe_detail/cyland_piece_container.js @@ -21,6 +21,10 @@ import { getLangText } from '../../../../../../utils/lang_utils'; import { mergeOptions } from '../../../../../../utils/general_utils'; let CylandPieceContainer = React.createClass({ + propTypes: { + location: React.PropTypes.object + }, + getInitialState() { return mergeOptions( PieceStore.getState(), @@ -68,7 +72,8 @@ let CylandPieceContainer = React.createClass({ + isInline={true} + location={this.props.location}/> ); diff --git a/js/components/whitelabel/wallet/components/cyland/ascribe_forms/cyland_additional_data_form.js b/js/components/whitelabel/wallet/components/cyland/ascribe_forms/cyland_additional_data_form.js index 0fd023c2..7e18bd10 100644 --- a/js/components/whitelabel/wallet/components/cyland/ascribe_forms/cyland_additional_data_form.js +++ b/js/components/whitelabel/wallet/components/cyland/ascribe_forms/cyland_additional_data_form.js @@ -26,7 +26,8 @@ let CylandAdditionalDataForm = React.createClass({ handleSuccess: React.PropTypes.func, piece: React.PropTypes.object.isRequired, disabled: React.PropTypes.bool, - isInline: React.PropTypes.bool + isInline: React.PropTypes.bool, + location: React.PropTypes.object }, getDefaultProps() { @@ -140,7 +141,8 @@ let CylandAdditionalDataForm = React.createClass({ isReadyForFormSubmission={formSubmissionValidation.fileOptional} pieceId={piece.id} otherData={piece.other_data} - multiple={true}/> + multiple={true} + location={this.props.location}/> ); } else { diff --git a/js/components/whitelabel/wallet/components/cyland/cyland_register_piece.js b/js/components/whitelabel/wallet/components/cyland/cyland_register_piece.js index 84713bd9..b0ac26bc 100644 --- a/js/components/whitelabel/wallet/components/cyland/cyland_register_piece.js +++ b/js/components/whitelabel/wallet/components/cyland/cyland_register_piece.js @@ -39,6 +39,9 @@ import { getAclFormMessage } from '../../../../../utils/form_utils'; let CylandRegisterPiece = React.createClass({ + propTypes: { + location: React.PropTypes.object + }, mixins: [Router.Navigation, Router.State], @@ -190,7 +193,8 @@ let CylandRegisterPiece = React.createClass({ submitMessage={getLangText('Submit')} isFineUploaderActive={this.state.isFineUploaderActive} handleSuccess={this.handleRegisterSuccess} - onLoggedOut={this.onLoggedOut} /> + onLoggedOut={this.onLoggedOut} + location={this.props.location}/>
@@ -200,7 +204,8 @@ let CylandRegisterPiece = React.createClass({ 1} handleSuccess={this.handleAdditionalDataSuccess} - piece={this.state.piece}/> + piece={this.state.piece} + location={this.props.location}/>
diff --git a/js/components/whitelabel/wallet/components/ikonotv/ikonotv_register_piece.js b/js/components/whitelabel/wallet/components/ikonotv/ikonotv_register_piece.js index 38078747..6a9dc19f 100644 --- a/js/components/whitelabel/wallet/components/ikonotv/ikonotv_register_piece.js +++ b/js/components/whitelabel/wallet/components/ikonotv/ikonotv_register_piece.js @@ -33,10 +33,10 @@ import { mergeOptions } from '../../../../../utils/general_utils'; import { getLangText } from '../../../../../utils/lang_utils'; let IkonotvRegisterPiece = React.createClass({ - propTypes: { handleSuccess: React.PropTypes.func, - piece: React.PropTypes.object.isRequired + piece: React.PropTypes.object.isRequired, + location: React.PropTypes.object }, mixins: [Router.Navigation, Router.State], @@ -256,7 +256,8 @@ let IkonotvRegisterPiece = React.createClass({ submitMessage={getLangText('Register')} isFineUploaderActive={this.state.isFineUploaderActive} handleSuccess={this.handleRegisterSuccess} - onLoggedOut={this.onLoggedOut} /> + onLoggedOut={this.onLoggedOut} + location={this.props.location}/>
diff --git a/js/routes.js b/js/routes.js index c40d2561..4a19fbce 100644 --- a/js/routes.js +++ b/js/routes.js @@ -44,7 +44,7 @@ const COMMON_ROUTES = ( - + );