Use server-provided poll limits instead of hardcoded ones

Also does not enable polls if no limits are provided by the server
This commit is contained in:
Thibaut Girka 2019-03-06 13:42:48 +01:00 committed by ThibG
parent 3b1390dc78
commit 235be596bc
3 changed files with 20 additions and 15 deletions

View File

@ -19,6 +19,7 @@ import {
assignHandlers,
hiddenComponent,
} from 'flavours/glitch/util/react_helpers';
import { pollLimits } from 'flavours/glitch/util/initial_state';
// Messages.
const messages = defineMessages({
@ -248,19 +249,21 @@ export default class ComposerOptions extends React.PureComponent {
onModalOpen={onModalOpen}
title={intl.formatMessage(messages.attach)}
/>
<IconButton
active={hasPoll}
disabled={disabled || !allowPoll}
icon='tasks'
inverted
onClick={onTogglePoll}
size={18}
style={{
height: null,
lineHeight: null,
}}
title={intl.formatMessage(hasPoll ? messages.remove_poll : messages.add_poll)}
/>
{!!pollLimits && (
<IconButton
active={hasPoll}
disabled={disabled || !allowPoll}
icon='tasks'
inverted
onClick={onTogglePoll}
size={18}
style={{
height: null,
lineHeight: null,
}}
title={intl.formatMessage(hasPoll ? messages.remove_poll : messages.add_poll)}
/>
)}
<Motion
defaultStyle={{ scale: 0.87 }}
style={{

View File

@ -6,6 +6,7 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import IconButton from 'flavours/glitch/components/icon_button';
import Icon from 'flavours/glitch/components/icon';
import classNames from 'classnames';
import { pollLimits } from 'flavours/glitch/util/initial_state';
const messages = defineMessages({
option_placeholder: { id: 'compose_form.poll.option_placeholder', defaultMessage: 'Choice {number}' },
@ -48,7 +49,7 @@ class Option extends React.PureComponent {
<input
type='text'
placeholder={intl.formatMessage(messages.option_placeholder, { number: index + 1 })}
maxlength={25}
maxlength={pollLimits.max_option_chars}
value={title}
onChange={this.handleOptionTitleChange}
/>
@ -100,7 +101,7 @@ class PollForm extends ImmutablePureComponent {
</ul>
<div className='poll__footer'>
{options.size < 4 && (
{options.size < pollLimits.max_options && (
<button className='button button-secondary' onClick={this.handleAddOption}><Icon id='plus' /> <FormattedMessage {...messages.add_option} /></button>
)}

View File

@ -22,6 +22,7 @@ export const deleteModal = getMeta('delete_modal');
export const me = getMeta('me');
export const searchEnabled = getMeta('search_enabled');
export const maxChars = (initialState && initialState.max_toot_chars) || 500;
export const pollLimits = (initialState && initialState.poll_limits);
export const invitesEnabled = getMeta('invites_enabled');
export const version = getMeta('version');
export const mascot = getMeta('mascot');