Refactor code for reblogging and favouriting (#31102)
This commit is contained in:
		
							parent
							
								
									80d9bff6df
								
							
						
					
					
						commit
						03dea64b79
					
				@ -1,7 +1,11 @@
 | 
				
			|||||||
 | 
					import { boostModal } from 'mastodon/initial_state';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import api, { getLinks } from '../api';
 | 
					import api, { getLinks } from '../api';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { fetchRelationships } from './accounts';
 | 
					import { fetchRelationships } from './accounts';
 | 
				
			||||||
import { importFetchedAccounts, importFetchedStatus } from './importer';
 | 
					import { importFetchedAccounts, importFetchedStatus } from './importer';
 | 
				
			||||||
 | 
					import { unreblog, reblog } from './interactions_typed';
 | 
				
			||||||
 | 
					import { openModal } from './modal';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const REBLOGS_EXPAND_REQUEST = 'REBLOGS_EXPAND_REQUEST';
 | 
					export const REBLOGS_EXPAND_REQUEST = 'REBLOGS_EXPAND_REQUEST';
 | 
				
			||||||
export const REBLOGS_EXPAND_SUCCESS = 'REBLOGS_EXPAND_SUCCESS';
 | 
					export const REBLOGS_EXPAND_SUCCESS = 'REBLOGS_EXPAND_SUCCESS';
 | 
				
			||||||
@ -432,3 +436,49 @@ export function unpinFail(status, error) {
 | 
				
			|||||||
    skipLoading: true,
 | 
					    skipLoading: true,
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function toggleReblogWithoutConfirmation(status, privacy) {
 | 
				
			||||||
 | 
					  return (dispatch) => {
 | 
				
			||||||
 | 
					    if (status.get('reblogged')) {
 | 
				
			||||||
 | 
					      dispatch(unreblog({ statusId: status.get('id') }));
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      dispatch(reblog({ statusId: status.get('id'), privacy }));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function toggleReblog(statusId, skipModal = false) {
 | 
				
			||||||
 | 
					  return (dispatch, getState) => {
 | 
				
			||||||
 | 
					    const state = getState();
 | 
				
			||||||
 | 
					    let status = state.statuses.get(statusId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!status)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // The reblog modal expects a pre-filled account in status
 | 
				
			||||||
 | 
					    // TODO: fix this by having the reblog modal get a statusId and do the work itself
 | 
				
			||||||
 | 
					    status = status.set('account', state.accounts.get(status.get('account')));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (boostModal && !skipModal) {
 | 
				
			||||||
 | 
					      dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: toggleReblogWithoutConfirmation } }));
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      toggleReblogWithoutConfirmation(status);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function toggleFavourite(statusId) {
 | 
				
			||||||
 | 
					  return (dispatch, getState) => {
 | 
				
			||||||
 | 
					    const state = getState();
 | 
				
			||||||
 | 
					    const status = state.statuses.get(statusId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!status)
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (status.get('favourited')) {
 | 
				
			||||||
 | 
					      dispatch(unfavourite(status));
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      dispatch(favourite(status));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -21,11 +21,9 @@ import {
 | 
				
			|||||||
  initAddFilter,
 | 
					  initAddFilter,
 | 
				
			||||||
} from '../actions/filters';
 | 
					} from '../actions/filters';
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  reblog,
 | 
					  toggleReblog,
 | 
				
			||||||
  favourite,
 | 
					  toggleFavourite,
 | 
				
			||||||
  bookmark,
 | 
					  bookmark,
 | 
				
			||||||
  unreblog,
 | 
					 | 
				
			||||||
  unfavourite,
 | 
					 | 
				
			||||||
  unbookmark,
 | 
					  unbookmark,
 | 
				
			||||||
  pin,
 | 
					  pin,
 | 
				
			||||||
  unpin,
 | 
					  unpin,
 | 
				
			||||||
@ -46,7 +44,7 @@ import {
 | 
				
			|||||||
  undoStatusTranslation,
 | 
					  undoStatusTranslation,
 | 
				
			||||||
} from '../actions/statuses';
 | 
					} from '../actions/statuses';
 | 
				
			||||||
import Status from '../components/status';
 | 
					import Status from '../components/status';
 | 
				
			||||||
import { boostModal, deleteModal } from '../initial_state';
 | 
					import { deleteModal } from '../initial_state';
 | 
				
			||||||
import { makeGetStatus, makeGetPictureInPicture } from '../selectors';
 | 
					import { makeGetStatus, makeGetPictureInPicture } from '../selectors';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const messages = defineMessages({
 | 
					const messages = defineMessages({
 | 
				
			||||||
@ -94,28 +92,12 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onModalReblog (status, privacy) {
 | 
					 | 
				
			||||||
    if (status.get('reblogged')) {
 | 
					 | 
				
			||||||
      dispatch(unreblog({ statusId: status.get('id') }));
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      dispatch(reblog({ statusId: status.get('id'), visibility: privacy }));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  onReblog (status, e) {
 | 
					  onReblog (status, e) {
 | 
				
			||||||
    if ((e && e.shiftKey) || !boostModal) {
 | 
					    dispatch(toggleReblog(status.get('id'), e.shiftKey));
 | 
				
			||||||
      this.onModalReblog(status);
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog } }));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onFavourite (status) {
 | 
					  onFavourite (status) {
 | 
				
			||||||
    if (status.get('favourited')) {
 | 
					    dispatch(toggleFavourite(status.get('id')));
 | 
				
			||||||
      dispatch(unfavourite(status));
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      dispatch(favourite(status));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onBookmark (status) {
 | 
					  onBookmark (status) {
 | 
				
			||||||
 | 
				
			|||||||
@ -2,17 +2,13 @@ import { connect } from 'react-redux';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import { mentionCompose } from '../../../actions/compose';
 | 
					import { mentionCompose } from '../../../actions/compose';
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  reblog,
 | 
					  toggleFavourite,
 | 
				
			||||||
  favourite,
 | 
					  toggleReblog,
 | 
				
			||||||
  unreblog,
 | 
					 | 
				
			||||||
  unfavourite,
 | 
					 | 
				
			||||||
} from '../../../actions/interactions';
 | 
					} from '../../../actions/interactions';
 | 
				
			||||||
import { openModal } from '../../../actions/modal';
 | 
					 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  hideStatus,
 | 
					  hideStatus,
 | 
				
			||||||
  revealStatus,
 | 
					  revealStatus,
 | 
				
			||||||
} from '../../../actions/statuses';
 | 
					} from '../../../actions/statuses';
 | 
				
			||||||
import { boostModal } from '../../../initial_state';
 | 
					 | 
				
			||||||
import { makeGetNotification, makeGetStatus, makeGetReport } from '../../../selectors';
 | 
					import { makeGetNotification, makeGetStatus, makeGetReport } from '../../../selectors';
 | 
				
			||||||
import Notification from '../components/notification';
 | 
					import Notification from '../components/notification';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -38,28 +34,12 @@ const mapDispatchToProps = dispatch => ({
 | 
				
			|||||||
    dispatch(mentionCompose(account));
 | 
					    dispatch(mentionCompose(account));
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onModalReblog (status, privacy) {
 | 
					 | 
				
			||||||
    dispatch(reblog({ statusId: status.get('id'), visibility: privacy }));
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  onReblog (status, e) {
 | 
					  onReblog (status, e) {
 | 
				
			||||||
    if (status.get('reblogged')) {
 | 
					    dispatch(toggleReblog(status.get('id'), e.shiftKey));
 | 
				
			||||||
      dispatch(unreblog({ statusId: status.get('id') }));
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      if (e.shiftKey || !boostModal) {
 | 
					 | 
				
			||||||
        this.onModalReblog(status);
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog } }));
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onFavourite (status) {
 | 
					  onFavourite (status) {
 | 
				
			||||||
    if (status.get('favourited')) {
 | 
					    dispatch(toggleFavourite(status.get('id')));
 | 
				
			||||||
      dispatch(unfavourite(status));
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      dispatch(favourite(status));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onToggleHidden (status) {
 | 
					  onToggleHidden (status) {
 | 
				
			||||||
 | 
				
			|||||||
@ -15,11 +15,11 @@ import ReplyIcon from '@/material-icons/400-24px/reply.svg?react';
 | 
				
			|||||||
import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react';
 | 
					import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react';
 | 
				
			||||||
import StarIcon from '@/material-icons/400-24px/star.svg?react';
 | 
					import StarIcon from '@/material-icons/400-24px/star.svg?react';
 | 
				
			||||||
import { replyCompose } from 'mastodon/actions/compose';
 | 
					import { replyCompose } from 'mastodon/actions/compose';
 | 
				
			||||||
import { reblog, favourite, unreblog, unfavourite } from 'mastodon/actions/interactions';
 | 
					import { toggleReblog, toggleFavourite } from 'mastodon/actions/interactions';
 | 
				
			||||||
import { openModal } from 'mastodon/actions/modal';
 | 
					import { openModal } from 'mastodon/actions/modal';
 | 
				
			||||||
import { IconButton } from 'mastodon/components/icon_button';
 | 
					import { IconButton } from 'mastodon/components/icon_button';
 | 
				
			||||||
import { identityContextPropShape, withIdentity } from 'mastodon/identity_context';
 | 
					import { identityContextPropShape, withIdentity } from 'mastodon/identity_context';
 | 
				
			||||||
import { me, boostModal } from 'mastodon/initial_state';
 | 
					import { me } from 'mastodon/initial_state';
 | 
				
			||||||
import { makeGetStatus } from 'mastodon/selectors';
 | 
					import { makeGetStatus } from 'mastodon/selectors';
 | 
				
			||||||
import { WithRouterPropTypes } from 'mastodon/utils/react_router';
 | 
					import { WithRouterPropTypes } from 'mastodon/utils/react_router';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -104,11 +104,7 @@ class Footer extends ImmutablePureComponent {
 | 
				
			|||||||
    const { signedIn } = this.props.identity;
 | 
					    const { signedIn } = this.props.identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (signedIn) {
 | 
					    if (signedIn) {
 | 
				
			||||||
      if (status.get('favourited')) {
 | 
					      dispatch(toggleFavourite(status.get('id')));
 | 
				
			||||||
        dispatch(unfavourite(status));
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        dispatch(favourite(status));
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      dispatch(openModal({
 | 
					      dispatch(openModal({
 | 
				
			||||||
        modalType: 'INTERACTION',
 | 
					        modalType: 'INTERACTION',
 | 
				
			||||||
@ -121,23 +117,12 @@ class Footer extends ImmutablePureComponent {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  _performReblog = (status, privacy) => {
 | 
					 | 
				
			||||||
    const { dispatch } = this.props;
 | 
					 | 
				
			||||||
    dispatch(reblog({ statusId: status.get('id'), visibility: privacy }));
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  handleReblogClick = e => {
 | 
					  handleReblogClick = e => {
 | 
				
			||||||
    const { dispatch, status } = this.props;
 | 
					    const { dispatch, status } = this.props;
 | 
				
			||||||
    const { signedIn } = this.props.identity;
 | 
					    const { signedIn } = this.props.identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (signedIn) {
 | 
					    if (signedIn) {
 | 
				
			||||||
      if (status.get('reblogged')) {
 | 
					      dispatch(toggleReblog(status.get('id'), e && e.shiftKey));
 | 
				
			||||||
        dispatch(unreblog({ statusId: status.get('id') }));
 | 
					 | 
				
			||||||
      } else if ((e && e.shiftKey) || !boostModal) {
 | 
					 | 
				
			||||||
        this._performReblog(status);
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this._performReblog } }));
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      dispatch(openModal({
 | 
					      dispatch(openModal({
 | 
				
			||||||
        modalType: 'INTERACTION',
 | 
					        modalType: 'INTERACTION',
 | 
				
			||||||
 | 
				
			|||||||
@ -10,10 +10,8 @@ import {
 | 
				
			|||||||
  directCompose,
 | 
					  directCompose,
 | 
				
			||||||
} from '../../../actions/compose';
 | 
					} from '../../../actions/compose';
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  reblog,
 | 
					  toggleReblog,
 | 
				
			||||||
  favourite,
 | 
					  toggleFavourite,
 | 
				
			||||||
  unreblog,
 | 
					 | 
				
			||||||
  unfavourite,
 | 
					 | 
				
			||||||
  pin,
 | 
					  pin,
 | 
				
			||||||
  unpin,
 | 
					  unpin,
 | 
				
			||||||
} from '../../../actions/interactions';
 | 
					} from '../../../actions/interactions';
 | 
				
			||||||
@ -27,7 +25,7 @@ import {
 | 
				
			|||||||
  hideStatus,
 | 
					  hideStatus,
 | 
				
			||||||
  revealStatus,
 | 
					  revealStatus,
 | 
				
			||||||
} from '../../../actions/statuses';
 | 
					} from '../../../actions/statuses';
 | 
				
			||||||
import { boostModal, deleteModal } from '../../../initial_state';
 | 
					import { deleteModal } from '../../../initial_state';
 | 
				
			||||||
import { makeGetStatus, makeGetPictureInPicture } from '../../../selectors';
 | 
					import { makeGetStatus, makeGetPictureInPicture } from '../../../selectors';
 | 
				
			||||||
import DetailedStatus from '../components/detailed_status';
 | 
					import DetailedStatus from '../components/detailed_status';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -73,28 +71,12 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onModalReblog (status, privacy) {
 | 
					 | 
				
			||||||
    dispatch(reblog({ statusId: status.get('id'), visibility: privacy }));
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  onReblog (status, e) {
 | 
					  onReblog (status, e) {
 | 
				
			||||||
    if (status.get('reblogged')) {
 | 
					    dispatch(toggleReblog(status.get('id'), e.shiftKey));
 | 
				
			||||||
      dispatch(unreblog({ statusId: status.get('id') }));
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      if (e.shiftKey || !boostModal) {
 | 
					 | 
				
			||||||
        this.onModalReblog(status);
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.onModalReblog } }));
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onFavourite (status) {
 | 
					  onFavourite (status) {
 | 
				
			||||||
    if (status.get('favourited')) {
 | 
					    dispatch(toggleFavourite(status.get('id')));
 | 
				
			||||||
      dispatch(unfavourite(status));
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      dispatch(favourite(status));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  onPin (status) {
 | 
					  onPin (status) {
 | 
				
			||||||
 | 
				
			|||||||
@ -38,12 +38,10 @@ import {
 | 
				
			|||||||
  unblockDomain,
 | 
					  unblockDomain,
 | 
				
			||||||
} from '../../actions/domain_blocks';
 | 
					} from '../../actions/domain_blocks';
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  favourite,
 | 
					  toggleFavourite,
 | 
				
			||||||
  unfavourite,
 | 
					 | 
				
			||||||
  bookmark,
 | 
					  bookmark,
 | 
				
			||||||
  unbookmark,
 | 
					  unbookmark,
 | 
				
			||||||
  reblog,
 | 
					  toggleReblog,
 | 
				
			||||||
  unreblog,
 | 
					 | 
				
			||||||
  pin,
 | 
					  pin,
 | 
				
			||||||
  unpin,
 | 
					  unpin,
 | 
				
			||||||
} from '../../actions/interactions';
 | 
					} from '../../actions/interactions';
 | 
				
			||||||
@ -64,7 +62,7 @@ import {
 | 
				
			|||||||
import ColumnHeader from '../../components/column_header';
 | 
					import ColumnHeader from '../../components/column_header';
 | 
				
			||||||
import { textForScreenReader, defaultMediaVisibility } from '../../components/status';
 | 
					import { textForScreenReader, defaultMediaVisibility } from '../../components/status';
 | 
				
			||||||
import StatusContainer from '../../containers/status_container';
 | 
					import StatusContainer from '../../containers/status_container';
 | 
				
			||||||
import { boostModal, deleteModal } from '../../initial_state';
 | 
					import { deleteModal } from '../../initial_state';
 | 
				
			||||||
import { makeGetStatus, makeGetPictureInPicture } from '../../selectors';
 | 
					import { makeGetStatus, makeGetPictureInPicture } from '../../selectors';
 | 
				
			||||||
import Column from '../ui/components/column';
 | 
					import Column from '../ui/components/column';
 | 
				
			||||||
import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen';
 | 
					import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen';
 | 
				
			||||||
@ -244,11 +242,7 @@ class Status extends ImmutablePureComponent {
 | 
				
			|||||||
    const { signedIn } = this.props.identity;
 | 
					    const { signedIn } = this.props.identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (signedIn) {
 | 
					    if (signedIn) {
 | 
				
			||||||
      if (status.get('favourited')) {
 | 
					      dispatch(toggleFavourite(status.get('id')));
 | 
				
			||||||
        dispatch(unfavourite(status));
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        dispatch(favourite(status));
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      dispatch(openModal({
 | 
					      dispatch(openModal({
 | 
				
			||||||
        modalType: 'INTERACTION',
 | 
					        modalType: 'INTERACTION',
 | 
				
			||||||
@ -298,24 +292,12 @@ class Status extends ImmutablePureComponent {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  handleModalReblog = (status, privacy) => {
 | 
					 | 
				
			||||||
    this.props.dispatch(reblog({ statusId: status.get('id'), visibility: privacy }));
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  handleReblogClick = (status, e) => {
 | 
					  handleReblogClick = (status, e) => {
 | 
				
			||||||
    const { dispatch } = this.props;
 | 
					    const { dispatch } = this.props;
 | 
				
			||||||
    const { signedIn } = this.props.identity;
 | 
					    const { signedIn } = this.props.identity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (signedIn) {
 | 
					    if (signedIn) {
 | 
				
			||||||
      if (status.get('reblogged')) {
 | 
					      dispatch(toggleReblog(status.get('id'), e && e.shiftKey));
 | 
				
			||||||
        dispatch(unreblog({ statusId: status.get('id') }));
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        if ((e && e.shiftKey) || !boostModal) {
 | 
					 | 
				
			||||||
          this.handleModalReblog(status);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
          dispatch(openModal({ modalType: 'BOOST', modalProps: { status, onReblog: this.handleModalReblog } }));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      dispatch(openModal({
 | 
					      dispatch(openModal({
 | 
				
			||||||
        modalType: 'INTERACTION',
 | 
					        modalType: 'INTERACTION',
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user