From 4a5ef6f469b0554bcbdb09899489e78668509fbd Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 27 Jun 2021 17:15:57 -0500 Subject: [PATCH] ScheduledStatuses: display link in Composer --- .../compose/components/compose_form.js | 25 +++++++++++++++++-- .../containers/compose_form_container.js | 1 + app/soapbox/features/ui/index.js | 3 +++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/app/soapbox/features/compose/components/compose_form.js b/app/soapbox/features/compose/components/compose_form.js index c08b7aa24..2c48a921f 100644 --- a/app/soapbox/features/compose/components/compose_form.js +++ b/app/soapbox/features/compose/components/compose_form.js @@ -4,12 +4,13 @@ import Button from '../../../components/button'; import ImmutablePropTypes from 'react-immutable-proptypes'; import PropTypes from 'prop-types'; import classNames from 'classnames'; +import { Link } from 'react-router-dom'; import ReplyIndicatorContainer from '../containers/reply_indicator_container'; import AutosuggestTextarea from '../../../components/autosuggest_textarea'; import AutosuggestInput from '../../../components/autosuggest_input'; import PollButtonContainer from '../containers/poll_button_container'; import UploadButtonContainer from '../containers/upload_button_container'; -import { defineMessages, injectIntl } from 'react-intl'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; import SpoilerButtonContainer from '../containers/spoiler_button_container'; import MarkdownButtonContainer from '../containers/markdown_button_container'; import ScheduleFormContainer from '../containers/schedule_form_container'; @@ -25,6 +26,7 @@ import { length } from 'stringz'; import { countableText } from '../util/counter'; import Icon from 'soapbox/components/icon'; import { get } from 'lodash'; +import Warning from '../components/warning'; const allowedAroundShortCode = '><\u0085\u0020\u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\u0009\u000a\u000b\u000c\u000d'; @@ -245,7 +247,7 @@ class ComposeForm extends ImmutablePureComponent { } render() { - const { intl, onPaste, showSearch, anyMedia, shouldCondense, autoFocus, isModalOpen, maxTootChars } = this.props; + const { intl, onPaste, showSearch, anyMedia, shouldCondense, autoFocus, isModalOpen, maxTootChars, scheduledStatusCount } = this.props; const condensed = shouldCondense && !this.state.composeFocused && this.isEmpty() && !this.props.isUploading; const disabled = this.props.isSubmitting; const text = [this.props.spoilerText, countableText(this.props.text)].join(''); @@ -267,6 +269,25 @@ class ComposeForm extends ImmutablePureComponent { return (
+ {scheduledStatusCount > 0 && ( + + + + ) }} + />) + } + /> + )} + { !shouldCondense && } diff --git a/app/soapbox/features/compose/containers/compose_form_container.js b/app/soapbox/features/compose/containers/compose_form_container.js index ba0f43c69..dad55a041 100644 --- a/app/soapbox/features/compose/containers/compose_form_container.js +++ b/app/soapbox/features/compose/containers/compose_form_container.js @@ -27,6 +27,7 @@ const mapStateToProps = state => ({ isModalOpen: state.get('modal').modalType === 'COMPOSE', maxTootChars: state.getIn(['instance', 'max_toot_chars']), schedule: state.getIn(['instance', 'schedule']), + scheduledStatusCount: state.get('scheduled_statuses').size, }); const mapDispatchToProps = (dispatch) => ({ diff --git a/app/soapbox/features/ui/index.js b/app/soapbox/features/ui/index.js index cdd0652dc..d972cb4e4 100644 --- a/app/soapbox/features/ui/index.js +++ b/app/soapbox/features/ui/index.js @@ -21,6 +21,7 @@ import { fetchChats } from 'soapbox/actions/chats'; import { clearHeight } from '../../actions/height_cache'; import { openModal } from '../../actions/modal'; import { fetchFollowRequests } from '../../actions/accounts'; +import { fetchScheduledStatuses } from '../../actions/scheduled_statuses'; import { WrappedRoute } from './util/react_router_helpers'; import UploadArea from './components/upload_area'; import TabsBar from './components/tabs_bar'; @@ -503,6 +504,8 @@ class UI extends React.PureComponent { if (account.get('locked')) { setTimeout(() => this.props.dispatch(fetchFollowRequests()), 700); } + + setTimeout(() => this.props.dispatch(fetchScheduledStatuses()), 900); } this.connectStreaming(); }