diff --git a/app/javascript/flavours/glitch/components/poll.jsx b/app/javascript/flavours/glitch/components/poll.jsx
index a4fb4b62d1..76fd93f14e 100644
--- a/app/javascript/flavours/glitch/components/poll.jsx
+++ b/app/javascript/flavours/glitch/components/poll.jsx
@@ -41,12 +41,14 @@ const makeEmojiMap = record => record.get('emojis').reduce((obj, emoji) => {
class Poll extends ImmutablePureComponent {
static propTypes = {
identity: identityContextPropShape,
- poll: ImmutablePropTypes.map,
+ poll: ImmutablePropTypes.map.isRequired,
+ status: ImmutablePropTypes.map.isRequired,
lang: PropTypes.string,
intl: PropTypes.object.isRequired,
disabled: PropTypes.bool,
refresh: PropTypes.func,
onVote: PropTypes.func,
+ onInteractionModal: PropTypes.func,
};
state = {
@@ -117,7 +119,11 @@ class Poll extends ImmutablePureComponent {
return;
}
- this.props.onVote(Object.keys(this.state.selected));
+ if (this.props.identity.signedIn) {
+ this.props.onVote(Object.keys(this.state.selected));
+ } else {
+ this.props.onInteractionModal('vote', this.props.status);
+ }
};
handleRefresh = () => {
@@ -232,7 +238,7 @@ class Poll extends ImmutablePureComponent {
- {!showResults &&
}
+ {!showResults &&
}
{!showResults && <>
· >}
{showResults && !this.props.disabled && <>
· >}
{votesCount}
diff --git a/app/javascript/flavours/glitch/components/status.jsx b/app/javascript/flavours/glitch/components/status.jsx
index db3e8d77ed..bbf947a459 100644
--- a/app/javascript/flavours/glitch/components/status.jsx
+++ b/app/javascript/flavours/glitch/components/status.jsx
@@ -742,7 +742,7 @@ class Status extends ImmutablePureComponent {
if (status.get('poll')) {
const language = status.getIn(['translation', 'language']) || status.get('language');
- contentMedia.push(
);
+ contentMedia.push(
);
contentMediaIcons.push('tasks');
}
diff --git a/app/javascript/flavours/glitch/containers/poll_container.js b/app/javascript/flavours/glitch/containers/poll_container.js
index e25dd06148..710bed45c5 100644
--- a/app/javascript/flavours/glitch/containers/poll_container.js
+++ b/app/javascript/flavours/glitch/containers/poll_container.js
@@ -2,6 +2,7 @@ import { connect } from 'react-redux';
import { debounce } from 'lodash';
+import { openModal } from 'flavours/glitch/actions/modal';
import { fetchPoll, vote } from 'flavours/glitch/actions/polls';
import Poll from 'flavours/glitch/components/poll';
@@ -17,6 +18,17 @@ const mapDispatchToProps = (dispatch, { pollId }) => ({
onVote (choices) {
dispatch(vote(pollId, choices));
},
+
+ onInteractionModal (type, status) {
+ dispatch(openModal({
+ modalType: 'INTERACTION',
+ modalProps: {
+ type,
+ accountId: status.getIn(['account', 'id']),
+ url: status.get('uri'),
+ },
+ }));
+ }
});
const mapStateToProps = (state, { pollId }) => ({
diff --git a/app/javascript/flavours/glitch/features/interaction_modal/index.jsx b/app/javascript/flavours/glitch/features/interaction_modal/index.jsx
index 23244f06ca..5f514124bf 100644
--- a/app/javascript/flavours/glitch/features/interaction_modal/index.jsx
+++ b/app/javascript/flavours/glitch/features/interaction_modal/index.jsx
@@ -9,6 +9,7 @@ import { connect } from 'react-redux';
import { throttle, escapeRegExp } from 'lodash';
+import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react';
import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react';
import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react';
import ReplyIcon from '@/material-icons/400-24px/reply.svg?react';
@@ -340,7 +341,7 @@ class InteractionModal extends React.PureComponent {
static propTypes = {
displayNameHtml: PropTypes.string,
url: PropTypes.string,
- type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow']),
+ type: PropTypes.oneOf(['reply', 'reblog', 'favourite', 'follow', 'vote']),
onSignupClick: PropTypes.func.isRequired,
signupUrl: PropTypes.string.isRequired,
};
@@ -377,6 +378,11 @@ class InteractionModal extends React.PureComponent {
title =
;
actionDescription =
;
break;
+ case 'vote':
+ icon =
;
+ title =
;
+ actionDescription =
;
+ break;
}
let signupButton;
diff --git a/app/javascript/flavours/glitch/features/status/components/detailed_status.tsx b/app/javascript/flavours/glitch/features/status/components/detailed_status.tsx
index d1d955395f..7a7c98156b 100644
--- a/app/javascript/flavours/glitch/features/status/components/detailed_status.tsx
+++ b/app/javascript/flavours/glitch/features/status/components/detailed_status.tsx
@@ -289,6 +289,7 @@ export const DetailedStatus: React.FC<{
,
);