From 9c2922958783f7e499cdda5bb874d6096e47eb0a Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 8 Mar 2020 16:10:48 +0100 Subject: [Glitch] Add support for links to statuses in announcements to be opened in web UI Port aa67036b41d37935210c8b5094ac20c153a62011 to glitch-soc Signed-off-by: Thibaut Girka --- .../features/getting_started/components/announcements.js | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'app/javascript/flavours/glitch/features/getting_started') diff --git a/app/javascript/flavours/glitch/features/getting_started/components/announcements.js b/app/javascript/flavours/glitch/features/getting_started/components/announcements.js index e34c9009b..48e1766e2 100644 --- a/app/javascript/flavours/glitch/features/getting_started/components/announcements.js +++ b/app/javascript/flavours/glitch/features/getting_started/components/announcements.js @@ -95,6 +95,10 @@ class Content extends ImmutablePureComponent { } else if (link.textContent[0] === '#' || (link.previousSibling && link.previousSibling.textContent && link.previousSibling.textContent[link.previousSibling.textContent.length - 1] === '#')) { link.addEventListener('click', this.onHashtagClick.bind(this, link.text), false); } else { + let status = this.props.announcement.get('statuses').find(item => link.href === item.get('url')); + if (status) { + link.addEventListener('click', this.onStatusClick.bind(this, status), false); + } link.setAttribute('title', link.href); link.classList.add('unhandled-link'); } @@ -120,6 +124,13 @@ class Content extends ImmutablePureComponent { } } + onStatusClick = (status, e) => { + if (this.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) { + e.preventDefault(); + this.context.router.history.push(`/statuses/${status.get('id')}`); + } + } + handleEmojiMouseEnter = ({ target }) => { target.src = target.getAttribute('data-original'); } -- cgit From 9da4bd098cac88c3e44157765adcff01445ba31a Mon Sep 17 00:00:00 2001 From: Daniel Sockwell Date: Fri, 20 Mar 2020 22:10:42 -0400 Subject: [Glitch] Fix frontend crash when deleting announcements Port 8758221e7344645bc1357578ec1789aa7d46da08 to glitch-soc Signed-off-by: Thibaut Girka --- .../glitch/features/getting_started/components/announcements.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/javascript/flavours/glitch/features/getting_started') diff --git a/app/javascript/flavours/glitch/features/getting_started/components/announcements.js b/app/javascript/flavours/glitch/features/getting_started/components/announcements.js index 48e1766e2..5f6e6d84c 100644 --- a/app/javascript/flavours/glitch/features/getting_started/components/announcements.js +++ b/app/javascript/flavours/glitch/features/getting_started/components/announcements.js @@ -389,7 +389,7 @@ class Announcements extends ImmutablePureComponent { _markAnnouncementAsRead () { const { dismissAnnouncement, announcements } = this.props; const { index } = this.state; - const announcement = announcements.get(index); + const announcement = announcements.get(index) || announcements.get(index - 1); if (!announcement.get('read')) dismissAnnouncement(announcement.get('id')); } @@ -407,7 +407,7 @@ class Announcements extends ImmutablePureComponent { render () { const { announcements, intl } = this.props; - const { index } = this.state; + const index = this.state.index < announcements.size ? this.state.index : announcements.size - 1; if (announcements.isEmpty()) { return null; -- cgit From faa56643b8d226e1bc19a87c2e169870f7648aee Mon Sep 17 00:00:00 2001 From: ThibG Date: Wed, 25 Mar 2020 22:39:55 +0100 Subject: [Glitch] Fix frontend crash when deleting announcements Port 858d0dd168b737a77506d6aa00f6ed582d0e33c6 to glitch-soc Signed-off-by: Thibaut Girka --- .../features/getting_started/components/announcements.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'app/javascript/flavours/glitch/features/getting_started') diff --git a/app/javascript/flavours/glitch/features/getting_started/components/announcements.js b/app/javascript/flavours/glitch/features/getting_started/components/announcements.js index 5f6e6d84c..acaa78fe3 100644 --- a/app/javascript/flavours/glitch/features/getting_started/components/announcements.js +++ b/app/javascript/flavours/glitch/features/getting_started/components/announcements.js @@ -378,6 +378,14 @@ class Announcements extends ImmutablePureComponent { index: 0, }; + static getDerivedStateFromProps(props, state) { + if (props.announcements.size > 0 && state.index >= props.announcements.size) { + return { index: props.announcements.size - 1 }; + } else { + return null; + } + } + componentDidMount () { this._markAnnouncementAsRead(); } @@ -389,7 +397,7 @@ class Announcements extends ImmutablePureComponent { _markAnnouncementAsRead () { const { dismissAnnouncement, announcements } = this.props; const { index } = this.state; - const announcement = announcements.get(index) || announcements.get(index - 1); + const announcement = announcements.get(index); if (!announcement.get('read')) dismissAnnouncement(announcement.get('id')); } @@ -407,7 +415,7 @@ class Announcements extends ImmutablePureComponent { render () { const { announcements, intl } = this.props; - const index = this.state.index < announcements.size ? this.state.index : announcements.size - 1; + const { index } = this.state; if (announcements.isEmpty()) { return null; -- cgit