forked from cybrespace/mastodon
		
	Switch to compose view when tapping 'mention' in dropdown on mobile
This commit is contained in:
		
							parent
							
								
									69643338f6
								
							
						
					
					
						commit
						d64c454cfe
					
				
					 6 changed files with 25 additions and 5 deletions
				
			
		| 
						 | 
					@ -49,7 +49,7 @@ const StatusActionBar = React.createClass({
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  handleMentionClick () {
 | 
					  handleMentionClick () {
 | 
				
			||||||
    this.props.onMention(this.props.status.get('account'));
 | 
					    this.props.onMention(this.props.status.get('account'), this.context.router);
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  handleBlockClick () {
 | 
					  handleBlockClick () {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@ import { blockAccount } from '../actions/accounts';
 | 
				
			||||||
import { deleteStatus } from '../actions/statuses';
 | 
					import { deleteStatus } from '../actions/statuses';
 | 
				
			||||||
import { openMedia } from '../actions/modal';
 | 
					import { openMedia } from '../actions/modal';
 | 
				
			||||||
import { createSelector } from 'reselect'
 | 
					import { createSelector } from 'reselect'
 | 
				
			||||||
 | 
					import { isMobile } from '../is_mobile'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const mapStateToProps = (state, props) => ({
 | 
					const mapStateToProps = (state, props) => ({
 | 
				
			||||||
  statusBase: state.getIn(['statuses', props.id]),
 | 
					  statusBase: state.getIn(['statuses', props.id]),
 | 
				
			||||||
| 
						 | 
					@ -86,8 +87,11 @@ const mapDispatchToProps = (dispatch) => ({
 | 
				
			||||||
    dispatch(deleteStatus(status.get('id')));
 | 
					    dispatch(deleteStatus(status.get('id')));
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onMention (account) {
 | 
					  onMention (account, router) {
 | 
				
			||||||
    dispatch(mentionCompose(account));
 | 
					    dispatch(mentionCompose(account));
 | 
				
			||||||
 | 
					    if (isMobile(window.innerWidth)) {
 | 
				
			||||||
 | 
					      router.push('/statuses/new');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onOpenMedia (url) {
 | 
					  onOpenMedia (url) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,7 @@ import LoadingIndicator      from '../../components/loading_indicator';
 | 
				
			||||||
import ActionBar             from './components/action_bar';
 | 
					import ActionBar             from './components/action_bar';
 | 
				
			||||||
import Column                from '../ui/components/column';
 | 
					import Column                from '../ui/components/column';
 | 
				
			||||||
import ColumnBackButton      from '../../components/column_back_button';
 | 
					import ColumnBackButton      from '../../components/column_back_button';
 | 
				
			||||||
 | 
					import { isMobile } from '../../is_mobile'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const makeMapStateToProps = () => {
 | 
					const makeMapStateToProps = () => {
 | 
				
			||||||
  const getAccount = makeGetAccount();
 | 
					  const getAccount = makeGetAccount();
 | 
				
			||||||
| 
						 | 
					@ -34,6 +35,10 @@ const makeMapStateToProps = () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Account = React.createClass({
 | 
					const Account = React.createClass({
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  contextTypes: {
 | 
				
			||||||
 | 
					    router: React.PropTypes.object
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  propTypes: {
 | 
					  propTypes: {
 | 
				
			||||||
    params: React.PropTypes.object.isRequired,
 | 
					    params: React.PropTypes.object.isRequired,
 | 
				
			||||||
    dispatch: React.PropTypes.func.isRequired,
 | 
					    dispatch: React.PropTypes.func.isRequired,
 | 
				
			||||||
| 
						 | 
					@ -71,6 +76,9 @@ const Account = React.createClass({
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  handleMention () {
 | 
					  handleMention () {
 | 
				
			||||||
    this.props.dispatch(mentionCompose(this.props.account));
 | 
					    this.props.dispatch(mentionCompose(this.props.account));
 | 
				
			||||||
 | 
					    if (isMobile(window.innerWidth)) {
 | 
				
			||||||
 | 
					      this.context.router.push('/statuses/new');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  render () {
 | 
					  render () {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@ import { ScrollContainer }   from 'react-router-scroll';
 | 
				
			||||||
import ColumnBackButton      from '../../components/column_back_button';
 | 
					import ColumnBackButton      from '../../components/column_back_button';
 | 
				
			||||||
import StatusContainer       from '../../containers/status_container';
 | 
					import StatusContainer       from '../../containers/status_container';
 | 
				
			||||||
import { openMedia }         from '../../actions/modal';
 | 
					import { openMedia }         from '../../actions/modal';
 | 
				
			||||||
 | 
					import { isMobile } from '../../is_mobile'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const makeMapStateToProps = () => {
 | 
					const makeMapStateToProps = () => {
 | 
				
			||||||
  const getStatus = makeGetStatus();
 | 
					  const getStatus = makeGetStatus();
 | 
				
			||||||
| 
						 | 
					@ -80,6 +81,9 @@ const Status = React.createClass({
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  handleMentionClick (account) {
 | 
					  handleMentionClick (account) {
 | 
				
			||||||
    this.props.dispatch(mentionCompose(account));
 | 
					    this.props.dispatch(mentionCompose(account));
 | 
				
			||||||
 | 
					    if (isMobile(window.innerWidth)) {
 | 
				
			||||||
 | 
					      this.context.router.push('/statuses/new');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  handleOpenMedia (url) {
 | 
					  handleOpenMedia (url) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ import Notifications from '../notifications';
 | 
				
			||||||
import { debounce } from 'react-decoration';
 | 
					import { debounce } from 'react-decoration';
 | 
				
			||||||
import { uploadCompose } from '../../actions/compose';
 | 
					import { uploadCompose } from '../../actions/compose';
 | 
				
			||||||
import { connect } from 'react-redux';
 | 
					import { connect } from 'react-redux';
 | 
				
			||||||
 | 
					import { isMobile } from '../../is_mobile'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const UI = React.createClass({
 | 
					const UI = React.createClass({
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,11 +65,9 @@ const UI = React.createClass({
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  render () {
 | 
					  render () {
 | 
				
			||||||
    const layoutBreakpoint = 1024;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    let mountedColumns;
 | 
					    let mountedColumns;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (this.state.width <= layoutBreakpoint) {
 | 
					    if (isMobile(this.state.width)) {
 | 
				
			||||||
      mountedColumns = (
 | 
					      mountedColumns = (
 | 
				
			||||||
        <ColumnsArea>
 | 
					        <ColumnsArea>
 | 
				
			||||||
          {this.props.children}
 | 
					          {this.props.children}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								app/assets/javascripts/components/is_mobile.jsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								app/assets/javascripts/components/is_mobile.jsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					const LAYOUT_BREAKPOINT = 1024;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function isMobile(width) {
 | 
				
			||||||
 | 
					  return width <= LAYOUT_BREAKPOINT;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue