Added quote posting to status bar, Removed share from status bar

• Added:
- quote icon
- quote posting to status bar

• Removed:
- share from status bar (all share items now in status ellipsis menu)
- repost options popover
- share option popover
- unused code, constants
This commit is contained in:
mgabdev
2020-05-27 01:13:46 -04:00
parent 2824e9d3b9
commit 0364a4000b
10 changed files with 155 additions and 288 deletions

View File

@@ -24,6 +24,7 @@ import { initMuteModal } from '../../actions/mutes'
import { initReport } from '../../actions/reports'
import { openModal } from '../../actions/modal'
import { closePopover } from '../../actions/popover'
import { MODAL_EMBED } from '../../constants'
import PopoverLayout from './popover_layout'
import List from '../list'
@@ -53,6 +54,9 @@ const messages = defineMessages({
group_remove_account: { id: 'status.remove_account_from_group', defaultMessage: 'Remove account from group' },
group_remove_post: { id: 'status.remove_post_from_group', defaultMessage: 'Remove status from group' },
repostWithComment: { id: 'repost_with_comment', defaultMessage: 'Repost with comment' },
embed: { id: 'status.embed', defaultMessage: 'Embed' },
email: { id: 'status.email', defaultMessage: 'Email this gab' },
copy: { id: 'status.copy', defaultMessage: 'Copy link to status' },
})
const mapStateToProps = (state, { status }) => {
@@ -173,7 +177,16 @@ const mapDispatchToProps = (dispatch) => ({
onFetchGroupRelationships(groupId) {
dispatch(fetchGroupRelationships([groupId]))
}
},
onOpenEmbedModal(url) {
dispatch(closePopover())
dispatch(openModal(MODAL_EMBED, {
url,
}))
},
onClosePopover: () => dispatch(closePopover()),
})
export default
@@ -199,6 +212,8 @@ class StatusOptionsPopover extends ImmutablePureComponent {
onPin: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
onFetchGroupRelationships: PropTypes.func.isRequired,
onOpenEmbedModal: PropTypes.func.isRequired,
onClosePopover: PropTypes.func.isRequired,
isXS: PropTypes.bool,
}
@@ -262,6 +277,30 @@ class StatusOptionsPopover extends ImmutablePureComponent {
this.props.onQuote(this.props.status, this.context.router)
}
handleOnOpenEmbedModal = () => {
this.props.onOpenEmbedModal(this.props.status.get('url'))
}
handleCopy = () => {
const url = this.props.status.get('url');
const textarea = document.createElement('textarea');
textarea.textContent = url;
textarea.style.position = 'fixed';
document.body.appendChild(textarea);
try {
textarea.select();
document.execCommand('copy');
} catch (e) {
//
}
document.body.removeChild(textarea);
this.props.onClosePopover()
}
render() {
const {
status,
@@ -274,6 +313,7 @@ class StatusOptionsPopover extends ImmutablePureComponent {
const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'))
const isReply = !!status.get('in_reply_to_id')
const withGroupAdmin = !!groupRelationships ? groupRelationships.get('admin') : false
const mailToHref = !status ? undefined : `mailto:?subject=Gab&body=${status.get('url')}`
let menu = []
@@ -372,6 +412,25 @@ class StatusOptionsPopover extends ImmutablePureComponent {
}
}
menu.push({
icon: 'copy',
hideArrow: true,
title: intl.formatMessage(messages.copy),
onClick: this.handleCopy,
})
menu.push({
icon: 'email',
hideArrow: true,
title: intl.formatMessage(messages.email),
href: mailToHref,
})
menu.push({
icon: 'code',
hideArrow: true,
title: intl.formatMessage(messages.embed),
onClick: this.handleOnOpenEmbedModal,
})
return (
<PopoverLayout isXS={isXS}>
<List