From 6e28a99c8e46295dd049f7af45565d4bea97c725 Mon Sep 17 00:00:00 2001 From: Fire Demon Date: Sun, 16 Aug 2020 03:24:47 -0500 Subject: [Feature] Full article support --- .../flavours/glitch/actions/importer/normalizer.js | 2 ++ .../flavours/glitch/components/status_content.js | 40 ++++++++++++++++++---- .../features/status/components/detailed_status.js | 1 + .../styles/monsterfork/components/status.scss | 19 +++++++--- 4 files changed, 52 insertions(+), 10 deletions(-) (limited to 'app/javascript/flavours') diff --git a/app/javascript/flavours/glitch/actions/importer/normalizer.js b/app/javascript/flavours/glitch/actions/importer/normalizer.js index 70431dce3..729c8d700 100644 --- a/app/javascript/flavours/glitch/actions/importer/normalizer.js +++ b/app/javascript/flavours/glitch/actions/importer/normalizer.js @@ -61,6 +61,7 @@ export function normalizeStatus(status, normalOldStatus) { if (normalOldStatus && oldUpdatedAt === newUpdatedAt) { normalStatus.search_index = normalOldStatus.get('search_index'); normalStatus.contentHtml = normalOldStatus.get('contentHtml'); + normalStatus.articleHtml = normalOldStatus.get('articleHtml'); normalStatus.spoilerHtml = normalOldStatus.get('spoilerHtml'); } else { const spoilerText = normalStatus.spoiler_text || ''; @@ -69,6 +70,7 @@ export function normalizeStatus(status, normalOldStatus) { normalStatus.search_index = domParser.parseFromString(searchContent, 'text/html').documentElement.textContent; normalStatus.contentHtml = emojify(normalStatus.content, emojiMap); + normalStatus.articleHtml = normalStatus.article_content ? emojify(normalStatus.article_content, emojiMap) : normalStatus.contentHtml; normalStatus.spoilerHtml = emojify(escapeTextContentForBrowser(spoilerText), emojiMap); } diff --git a/app/javascript/flavours/glitch/components/status_content.js b/app/javascript/flavours/glitch/components/status_content.js index d34da1a8f..0d861b9c0 100644 --- a/app/javascript/flavours/glitch/components/status_content.js +++ b/app/javascript/flavours/glitch/components/status_content.js @@ -78,11 +78,13 @@ export default class StatusContent extends React.PureComponent { onUpdate: PropTypes.func, tagLinks: PropTypes.bool, rewriteMentions: PropTypes.string, + article: PropTypes.bool, }; static defaultProps = { tagLinks: true, rewriteMentions: 'no', + article: false, }; state = { @@ -272,6 +274,7 @@ export default class StatusContent extends React.PureComponent { disabled, tagLinks, rewriteMentions, + article, } = this.props; const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden; @@ -324,12 +327,29 @@ export default class StatusContent extends React.PureComponent { ); + const article_content = status.get('article') && ( +
+ + + + +
+ ); + const status_notice_wrapper = (
{unpublished} {quiet} {edited} {local_only} + {article_content}
); @@ -402,7 +422,7 @@ export default class StatusContent extends React.PureComponent { ); - const content = { __html: status.get('contentHtml') }; + const content = { __html: article ? status.get('articleHtml') : status.get('contentHtml') }; const spoilerContent = { __html: status.get('spoilerHtml') }; const directionStyle = { direction: 'ltr' }; const classNames = classnames('status__content', { @@ -429,11 +449,19 @@ export default class StatusContent extends React.PureComponent { )).reduce((aggregate, item) => [...aggregate, item, ' '], []); const toggleText = hidden ? [ - , + article ? ( + + ) : ( + + ), mediaIcon ? ( diff --git a/app/javascript/flavours/glitch/styles/monsterfork/components/status.scss b/app/javascript/flavours/glitch/styles/monsterfork/components/status.scss index 30cd5d668..73f883db1 100644 --- a/app/javascript/flavours/glitch/styles/monsterfork/components/status.scss +++ b/app/javascript/flavours/glitch/styles/monsterfork/components/status.scss @@ -8,19 +8,30 @@ } .status__notice { - & > span { - color: $dark-text-color; + display: flex; + align-items: center; + + & > span, & > a { + display: inline-flex; + align-items: center; line-height: normal; font-style: italic; + font-weight: bold; font-size: 12px; padding-left: 8px; - position: relative; - bottom: 0.2em; + height: 1.5em; + } + + & > span { + color: $dark-text-color; } & > i { + display: inline-flex; + align-items: center; color: lighten($dark-text-color, 4%); width: 1.1em; + height: 1.5em; } } -- cgit