[Glitch] Show user what options they have voted

Port front-end changes from b359974d9b to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
main
ThibG 5 years ago committed by Thibaut Girka
parent 2441d07cd5
commit e25b7feb72

@ -71,8 +71,9 @@ export function normalizePoll(poll) {
const emojiMap = makeEmojiMap(normalPoll);
normalPoll.options = poll.options.map(option => ({
normalPoll.options = poll.options.map((option, index) => ({
...option,
voted: poll.own_votes && poll.own_votes.includes(index),
title_emojified: emojify(escapeTextContentForBrowser(option.title), emojiMap),
}));

@ -10,6 +10,7 @@ import spring from 'react-motion/lib/spring';
import escapeTextContentForBrowser from 'escape-html';
import emojify from 'flavours/glitch/util/emoji';
import RelativeTimestamp from './relative_timestamp';
import Icon from 'flavours/glitch/components/icon';
const messages = defineMessages({
closed: { id: 'poll.closed', defaultMessage: 'Closed' },
@ -103,6 +104,7 @@ class Poll extends ImmutablePureComponent {
const percent = poll.get('votes_count') === 0 ? 0 : (option.get('votes_count') / poll.get('votes_count')) * 100;
const leading = poll.get('options').filterNot(other => other.get('title') === option.get('title')).every(other => option.get('votes_count') > other.get('votes_count'));
const active = !!this.state.selected[`${optionIndex}`];
const voted = option.get('voted') || (poll.get('own_votes') && poll.get('own_votes').includes(optionIndex));
let titleEmojified = option.get('title_emojified');
if (!titleEmojified) {
@ -131,7 +133,10 @@ class Poll extends ImmutablePureComponent {
/>
{!showResults && <span className={classNames('poll__input', { checkbox: poll.get('multiple'), active })} />}
{showResults && <span className='poll__number'>{Math.round(percent)}%</span>}
{showResults && <span className='poll__number'>
{!!voted && <Icon id='check' className='poll__vote__mark' />}
{Math.round(percent)}%
</span>}
<span dangerouslySetInnerHTML={{ __html: titleEmojified }} />
</label>

@ -102,13 +102,19 @@
&__number {
display: inline-block;
width: 36px;
width: 48px;
font-weight: 700;
padding: 0 10px;
text-align: right;
margin-top: auto;
margin-bottom: auto;
flex: 0 0 36px;
flex: 0 0 48px;
}
&__vote__mark {
float: left;
color: $valid-value-color;
line-height: 18px;
}
&__footer {

Loading…
Cancel
Save