diff --git a/app/javascript/flavours/glitch/containers/status_container.js.orig b/app/javascript/flavours/glitch/containers/status_container.js.orig deleted file mode 100644 index 03714ce050..0000000000 --- a/app/javascript/flavours/glitch/containers/status_container.js.orig +++ /dev/null @@ -1,303 +0,0 @@ -import { defineMessages, injectIntl } from 'react-intl'; - -import { connect } from 'react-redux'; - -import { initBlockModal } from 'flavours/glitch/actions/blocks'; -import { initBoostModal } from 'flavours/glitch/actions/boosts'; -import { - replyCompose, - mentionCompose, - directCompose, -} from 'flavours/glitch/actions/compose'; -import { - initAddFilter, -} from 'flavours/glitch/actions/filters'; -import { - reblog, - favourite, - bookmark, - unreblog, - unfavourite, - unbookmark, - pin, - unpin, -} from 'flavours/glitch/actions/interactions'; -import { changeLocalSetting } from 'flavours/glitch/actions/local_settings'; -import { openModal } from 'flavours/glitch/actions/modal'; -import { initMuteModal } from 'flavours/glitch/actions/mutes'; -import { deployPictureInPicture } from 'flavours/glitch/actions/picture_in_picture'; -import { initReport } from 'flavours/glitch/actions/reports'; -import { - muteStatus, - unmuteStatus, - deleteStatus, - hideStatus, - revealStatus, - editStatus, - translateStatus, - undoStatusTranslation, -} from 'flavours/glitch/actions/statuses'; -import Status from 'flavours/glitch/components/status'; -import { boostModal, favouriteModal, deleteModal } from 'flavours/glitch/initial_state'; -import { makeGetStatus, makeGetPictureInPicture } from 'flavours/glitch/selectors'; - -import { showAlertForError } from '../actions/alerts'; - -const messages = defineMessages({ - deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' }, - deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' }, - redraftConfirm: { id: 'confirmations.redraft.confirm', defaultMessage: 'Delete & redraft' }, - redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? Favorites and boosts will be lost, and replies to the original post will be orphaned.' }, - replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' }, - replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' }, - editConfirm: { id: 'confirmations.edit.confirm', defaultMessage: 'Edit' }, - editMessage: { id: 'confirmations.edit.message', defaultMessage: 'Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?' }, - unfilterConfirm: { id: 'confirmations.unfilter.confirm', defaultMessage: 'Show' }, - author: { id: 'confirmations.unfilter.author', defaultMessage: 'Author' }, - matchingFilters: { id: 'confirmations.unfilter.filters', defaultMessage: 'Matching {count, plural, one {filter} other {filters}}' }, - editFilter: { id: 'confirmations.unfilter.edit_filter', defaultMessage: 'Edit filter' }, -}); - -const makeMapStateToProps = () => { - const getStatus = makeGetStatus(); - const getPictureInPicture = makeGetPictureInPicture(); - - const mapStateToProps = (state, props) => { - - let status = getStatus(state, props); - let reblogStatus = status ? status.get('reblog', null) : null; - let account = undefined; - let prepend = undefined; - - if (props.featured && status) { - account = status.get('account'); - prepend = 'featured'; - } else if (reblogStatus !== null && typeof reblogStatus === 'object') { - account = status.get('account'); - status = reblogStatus; - prepend = 'reblogged_by'; - } - - return { - containerId: props.containerId || props.id, // Should match reblogStatus's id for reblogs - status: status, - nextInReplyToId: props.nextId ? state.getIn(['statuses', props.nextId, 'in_reply_to_id']) : null, - account: account || props.account, - settings: state.get('local_settings'), - prepend: prepend || props.prepend, - pictureInPicture: getPictureInPicture(state, props), - }; - }; - - return mapStateToProps; -}; - -const mapDispatchToProps = (dispatch, { intl, contextType }) => ({ - - onReply (status, router) { - dispatch((_, getState) => { - let state = getState(); - - if (state.getIn(['local_settings', 'confirm_before_clearing_draft']) && state.getIn(['compose', 'text']).trim().length !== 0) { - dispatch(openModal({ - modalType: 'CONFIRM', - modalProps: { - message: intl.formatMessage(messages.replyMessage), - confirm: intl.formatMessage(messages.replyConfirm), - onDoNotAsk: () => dispatch(changeLocalSetting(['confirm_before_clearing_draft'], false)), - onConfirm: () => dispatch(replyCompose(status, router)), - }, - })); - } else { - dispatch(replyCompose(status, router)); - } - }); - }, - - onModalReblog (status, privacy) { - if (status.get('reblogged')) { - dispatch(unreblog(status)); - } else { - dispatch(reblog(status, privacy)); - } - }, - - onReblog (status, e) { - dispatch((_, getState) => { - let state = getState(); - if (state.getIn(['local_settings', 'confirm_boost_missing_media_description']) && status.get('media_attachments').some(item => !item.get('description')) && !status.get('reblogged')) { - dispatch(initBoostModal({ status, onReblog: this.onModalReblog, missingMediaDescription: true })); - } else if (e.shiftKey || !boostModal) { - this.onModalReblog(status); - } else { - dispatch(initBoostModal({ status, onReblog: this.onModalReblog })); - } - }); - }, - - onBookmark (status) { - if (status.get('bookmarked')) { - dispatch(unbookmark(status)); - } else { - dispatch(bookmark(status)); - } - }, - - onModalFavourite (status) { - dispatch(favourite(status)); - }, - - onFavourite (status, e) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - if (e.shiftKey || !favouriteModal) { - this.onModalFavourite(status); - } else { - dispatch(openModal({ - modalType: 'FAVOURITE', - modalProps: { - status, - onFavourite: this.onModalFavourite, - }, - })); - } - } - }, - - onPin (status) { - if (status.get('pinned')) { - dispatch(unpin(status)); - } else { - dispatch(pin(status)); - } - }, - - onEmbed (status) { - dispatch(openModal({ - modalType: 'EMBED', - modalProps: { - id: status.get('id'), - onError: error => dispatch(showAlertForError(error)), - }, - })); - }, - - onDelete (status, history, withRedraft = false) { - if (!deleteModal) { - dispatch(deleteStatus(status.get('id'), history, withRedraft)); - } else { - dispatch(openModal({ - modalType: 'CONFIRM', - modalProps: { - message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage), - confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm), - onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)), - }, - })); - } - }, - - onEdit (status, history) { - dispatch((_, getState) => { - let state = getState(); - if (state.getIn(['compose', 'text']).trim().length !== 0) { - dispatch(openModal({ - modalType: 'CONFIRM', - modalProps: { - message: intl.formatMessage(messages.editMessage), - confirm: intl.formatMessage(messages.editConfirm), - onConfirm: () => dispatch(editStatus(status.get('id'), history)), - }, - })); - } else { - dispatch(editStatus(status.get('id'), history)); - } - }); - }, - - onTranslate (status) { - if (status.get('translation')) { - dispatch(undoStatusTranslation(status.get('id'), status.get('poll'))); - } else { - dispatch(translateStatus(status.get('id'))); - } - }, - - onDirect (account, router) { - dispatch(directCompose(account, router)); - }, - - onMention (account, router) { - dispatch(mentionCompose(account, router)); - }, - - onOpenMedia (statusId, media, index, lang) { - dispatch(openModal({ - modalType: 'MEDIA', - modalProps: { statusId, media, index, lang }, - })); - }, - - onOpenVideo (statusId, media, lang, options) { - dispatch(openModal({ - modalType: 'VIDEO', - modalProps: { statusId, media, lang, options }, - })); - }, - - onBlock (status) { - const account = status.get('account'); - dispatch(initBlockModal(account)); - }, - - onReport (status) { - dispatch(initReport(status.get('account'), status)); - }, - - onAddFilter (status) { - dispatch(initAddFilter(status, { contextType })); - }, - - onMute (account) { - dispatch(initMuteModal(account)); - }, - - onMuteConversation (status) { - if (status.get('muted')) { - dispatch(unmuteStatus(status.get('id'))); - } else { - dispatch(muteStatus(status.get('id'))); - } - }, - - onToggleHidden (status) { - if (status.get('hidden')) { - dispatch(revealStatus(status.get('id'))); - } else { - dispatch(hideStatus(status.get('id'))); - } - }, - - deployPictureInPicture (status, type, mediaProps) { - dispatch((_, getState) => { - if (getState().getIn(['local_settings', 'media', 'pop_in_player'])) { - dispatch(deployPictureInPicture(status.get('id'), status.getIn(['account', 'id']), type, mediaProps)); - } - }); - }, - - onInteractionModal (type, status) { - dispatch(openModal({ - modalType: 'INTERACTION', - modalProps: { - type, - accountId: status.getIn(['account', 'id']), - url: status.get('url'), - }, - })); - }, - -}); - -export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Status)); diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx.orig b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx.orig deleted file mode 100644 index 720ffb3a70..0000000000 --- a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.jsx.orig +++ /dev/null @@ -1,232 +0,0 @@ -import PropTypes from 'prop-types'; - -import { defineMessages, injectIntl } from 'react-intl'; - -import classNames from 'classnames'; - -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; -import { connect } from 'react-redux'; - -import { initBoostModal } from 'flavours/glitch/actions/boosts'; -import { replyCompose } from 'flavours/glitch/actions/compose'; -import { reblog, favourite, unreblog, unfavourite } from 'flavours/glitch/actions/interactions'; -import { openModal } from 'flavours/glitch/actions/modal'; -import { IconButton } from 'flavours/glitch/components/icon_button'; -import { me, boostModal } from 'flavours/glitch/initial_state'; -import { makeGetStatus } from 'flavours/glitch/selectors'; - -const messages = defineMessages({ - reply: { id: 'status.reply', defaultMessage: 'Reply' }, - replyAll: { id: 'status.replyAll', defaultMessage: 'Reply to thread' }, - reblog: { id: 'status.reblog', defaultMessage: 'Boost' }, - reblog_private: { id: 'status.reblog_private', defaultMessage: 'Boost with original visibility' }, - cancel_reblog_private: { id: 'status.cancel_reblog_private', defaultMessage: 'Unboost' }, - cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' }, - favourite: { id: 'status.favourite', defaultMessage: 'Favorite' }, - replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' }, - replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' }, - open: { id: 'status.open', defaultMessage: 'Expand this status' }, -}); - -const makeMapStateToProps = () => { - const getStatus = makeGetStatus(); - - const mapStateToProps = (state, { statusId }) => ({ - status: getStatus(state, { id: statusId }), - askReplyConfirmation: state.getIn(['compose', 'text']).trim().length !== 0, - showReplyCount: state.getIn(['local_settings', 'show_reply_count']), - }); - - return mapStateToProps; -}; - -class Footer extends ImmutablePureComponent { - - static contextTypes = { - router: PropTypes.object, - identity: PropTypes.object, - }; - - static propTypes = { - statusId: PropTypes.string.isRequired, - status: ImmutablePropTypes.map.isRequired, - intl: PropTypes.object.isRequired, - dispatch: PropTypes.func.isRequired, - askReplyConfirmation: PropTypes.bool, - showReplyCount: PropTypes.bool, - withOpenButton: PropTypes.bool, - onClose: PropTypes.func, - }; - - _performReply = () => { - const { dispatch, status, onClose } = this.props; - const { router } = this.context; - - if (onClose) { - onClose(true); - } - - dispatch(replyCompose(status, router.history)); - }; - - handleReplyClick = () => { - const { dispatch, askReplyConfirmation, status, intl } = this.props; - const { signedIn } = this.context.identity; - - if (signedIn) { - if (askReplyConfirmation) { - dispatch(openModal({ - modalType: 'CONFIRM', - modalProps: { - message: intl.formatMessage(messages.replyMessage), - confirm: intl.formatMessage(messages.replyConfirm), - onConfirm: this._performReply, - }, - })); - } else { - this._performReply(); - } - } else { - dispatch(openModal({ - modalType: 'INTERACTION', - modalProps: { - type: 'reply', - accountId: status.getIn(['account', 'id']), - url: status.get('url'), - }, - })); - } - }; - - handleFavouriteClick = () => { - const { dispatch, status } = this.props; - const { signedIn } = this.context.identity; - - if (signedIn) { - if (status.get('favourited')) { - dispatch(unfavourite(status)); - } else { - dispatch(favourite(status)); - } - } else { - dispatch(openModal({ - modalType: 'INTERACTION', - modalProps: { - type: 'favourite', - accountId: status.getIn(['account', 'id']), - url: status.get('url'), - }, - })); - } - }; - - _performReblog = (privacy) => { - const { dispatch, status } = this.props; - dispatch(reblog(status, privacy)); - }; - - handleReblogClick = e => { - const { dispatch, status } = this.props; - const { signedIn } = this.context.identity; - - if (signedIn) { - if (status.get('reblogged')) { - dispatch(unreblog(status)); - } else if ((e && e.shiftKey) || !boostModal) { - this._performReblog(); - } else { - dispatch(initBoostModal({ status, onReblog: this._performReblog })); - } - } else { - dispatch(openModal({ - modalType: 'INTERACTION', - modalProps: { - type: 'reblog', - accountId: status.getIn(['account', 'id']), - url: status.get('url'), - }, - })); - } - }; - - handleOpenClick = e => { - const { router } = this.context; - - if (e.button !== 0 || !router) { - return; - } - - const { status, onClose } = this.props; - - if (onClose) { - onClose(); - } - - router.history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`); - }; - - render () { - const { status, intl, showReplyCount, withOpenButton } = this.props; - - const publicStatus = ['public', 'unlisted'].includes(status.get('visibility')); - const reblogPrivate = status.getIn(['account', 'id']) === me && status.get('visibility') === 'private'; - - let replyIcon, replyTitle; - - if (status.get('in_reply_to_id', null) === null) { - replyIcon = 'reply'; - replyTitle = intl.formatMessage(messages.reply); - } else { - replyIcon = 'reply-all'; - replyTitle = intl.formatMessage(messages.replyAll); - } - - let reblogTitle = ''; - - if (status.get('reblogged')) { - reblogTitle = intl.formatMessage(messages.cancel_reblog_private); - } else if (publicStatus) { - reblogTitle = intl.formatMessage(messages.reblog); - } else if (reblogPrivate) { - reblogTitle = intl.formatMessage(messages.reblog_private); - } else { - reblogTitle = intl.formatMessage(messages.cannot_reblog); - } - - let replyButton = null; - if (showReplyCount) { - replyButton = ( - - ); - } else { - replyButton = ( - - ); - } - - return ( -
- {replyButton} - - - {withOpenButton && } -
- ); - } - -} - -export default connect(makeMapStateToProps)(injectIntl(Footer)); diff --git a/app/javascript/flavours/glitch/styles/variables.scss.orig b/app/javascript/flavours/glitch/styles/variables.scss.orig deleted file mode 100644 index 8924e43113..0000000000 --- a/app/javascript/flavours/glitch/styles/variables.scss.orig +++ /dev/null @@ -1,101 +0,0 @@ -// Commonly used web colors -$black: #000000; // Black -$white: #ffffff; // White -$red-600: #b7253d !default; // Deep Carmine -$red-500: #df405a !default; // Cerise -$blurple-600: #563acc; // Iris -$blurple-500: #6364ff; // Brand purple -$blurple-300: #858afa; // Faded Blue -$grey-600: #4e4c5a; // Trout -$grey-100: #dadaf3; // Topaz - -$success-green: #79bd9a !default; // Padua -$error-red: $red-500 !default; // Cerise -$warning-red: #ff5050 !default; // Sunset Orange -$gold-star: #ca8f04 !default; // Dark Goldenrod - -$red-bookmark: $warning-red; - -// Values from the classic Mastodon UI -$classic-base-color: #282c37; // Midnight Express -$classic-primary-color: #9baec8; // Echo Blue -$classic-secondary-color: #d9e1e8; // Pattens Blue -$classic-highlight-color: #6364ff; // Brand purple - -// Variables for defaults in UI -$base-shadow-color: $black !default; -$base-overlay-background: $black !default; -$base-border-color: $white !default; -$simple-background-color: $white !default; -$valid-value-color: $success-green !default; -$error-value-color: $error-red !default; - -// Tell UI to use selected colors -$ui-base-color: $classic-base-color !default; // Darkest -$ui-base-lighter-color: lighten( - $ui-base-color, - 26% -) !default; // Lighter darkest -$ui-primary-color: $classic-primary-color !default; // Lighter -$ui-secondary-color: $classic-secondary-color !default; // Lightest -$ui-highlight-color: $classic-highlight-color !default; -$ui-button-color: $white !default; -$ui-button-background-color: $blurple-500 !default; -$ui-button-focus-background-color: $blurple-600 !default; - -$ui-button-secondary-color: $grey-100 !default; -$ui-button-secondary-border-color: $grey-100 !default; -$ui-button-secondary-focus-background-color: $grey-600 !default; -$ui-button-secondary-focus-color: $white !default; - -$ui-button-tertiary-color: $blurple-300 !default; -$ui-button-tertiary-border-color: $blurple-300 !default; -$ui-button-tertiary-focus-background-color: $blurple-600 !default; -$ui-button-tertiary-focus-color: $white !default; - -$ui-button-destructive-background-color: $red-500 !default; -$ui-button-destructive-focus-background-color: $red-600 !default; - -// Variables for texts -$primary-text-color: $white !default; -$darker-text-color: $ui-primary-color !default; -$dark-text-color: $ui-base-lighter-color !default; -$secondary-text-color: $ui-secondary-color !default; -$highlight-text-color: lighten($ui-highlight-color, 8%) !default; -$action-button-color: $ui-base-lighter-color !default; -$action-button-focus-color: lighten($ui-base-lighter-color, 4%) !default; -$passive-text-color: $gold-star !default; -$active-passive-text-color: $success-green !default; - -// For texts on inverted backgrounds -$inverted-text-color: $ui-base-color !default; -$lighter-text-color: $ui-base-lighter-color !default; -$light-text-color: $ui-primary-color !default; - -// Language codes that uses CJK fonts -$cjk-langs: ja, ko, zh-CN, zh-HK, zh-TW; - -// Variables for components -$media-modal-media-max-width: 100%; - -// put margins on top and bottom of image to avoid the screen covered by image. -$media-modal-media-max-height: 80%; - -$no-gap-breakpoint: 1175px; - -$font-sans-serif: 'mastodon-font-sans-serif' !default; -$font-display: 'mastodon-font-display' !default; -$font-monospace: 'mastodon-font-monospace' !default; - -// Avatar border size (8% default, 100% for rounded avatars) -$ui-avatar-border-size: 8%; - -// More variables -$dismiss-overlay-width: 4rem; - -:root { - --dropdown-border-color: #{lighten($ui-base-color, 12%)}; - --dropdown-background-color: #{lighten($ui-base-color, 4%)}; - --dropdown-shadow: 0 20px 25px -5px #{rgba($base-shadow-color, 0.25)}, - 0 8px 10px -6px #{rgba($base-shadow-color, 0.25)}; -}