aboutsummaryrefslogtreecommitdiff
path: root/src/components/status/status.js
diff options
context:
space:
mode:
authorHenry Jameson <me@hjkos.com>2020-06-07 00:10:21 +0300
committerHenry Jameson <me@hjkos.com>2020-06-07 00:10:21 +0300
commit9e3e6b0c6986896db5c484bc5910961ee5585a78 (patch)
tree5fbb1a28fdcb4a072806c417a9caa5a057d3e9b8 /src/components/status/status.js
parent4fae2f8ea878bedfce89402f19adffaedec65baf (diff)
parente47d0f210317c6e04e15fb89eb8f1d469137b779 (diff)
Merge remote-tracking branch 'origin/develop' into settings-modal
* origin/develop: (22 commits) changelog alignment fixes Update CHANGELOG.md StillImage: Make it work properly in both firefox and chrome. ReactButton: Change the combined emoji (heart) to a simple one. Linting fixes. Settings: Keep a local version of the mutedWordsString MediaModal: Close on browser navigation events. StatusContent: Try to get hashtag from dataset first. Docs: Change wrong documentation. EntityNormalizerSpec: More fixes. EntityNormalizerSpec: Test new behavior. EntityNormalizer: Add colons to emoji alt text. fixed case in class name The sidebarRight option wasn't being read Use consistent naming for Pleroma-FE in README Remove mention of GNU Social lint multiple fixes fix non-mention notifs ...
Diffstat (limited to 'src/components/status/status.js')
-rw-r--r--src/components/status/status.js55
1 files changed, 42 insertions, 13 deletions
diff --git a/src/components/status/status.js b/src/components/status/status.js
index 9cd9d61c..73382521 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -12,7 +12,8 @@ import StatusPopover from '../status_popover/status_popover.vue'
import EmojiReactions from '../emoji_reactions/emoji_reactions.vue'
import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'
import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'
-import { filter, unescape, uniqBy } from 'lodash'
+import { muteWordHits } from '../../services/status_parser/status_parser.js'
+import { unescape, uniqBy } from 'lodash'
import { mapGetters, mapState } from 'vuex'
const Status = {
@@ -44,6 +45,12 @@ const Status = {
muteWords () {
return this.mergedConfig.muteWords
},
+ showReasonMutedThread () {
+ return (
+ this.status.thread_muted ||
+ (this.status.reblog && this.status.reblog.thread_muted)
+ ) && !this.inConversation
+ },
repeaterClass () {
const user = this.statusoid.user
return highlightClass(user)
@@ -93,20 +100,42 @@ const Status = {
return !!this.currentUser
},
muteWordHits () {
- const statusText = this.status.text.toLowerCase()
- const statusSummary = this.status.summary.toLowerCase()
- const hits = filter(this.muteWords, (muteWord) => {
- return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())
- })
-
- return hits
+ return muteWordHits(this.status, this.muteWords)
},
muted () {
- const relationship = this.$store.getters.relationship(this.status.user.id)
- return !this.unmuted && (
- (!(this.inProfile && this.status.user.id === this.profileUserId) && relationship.muting) ||
- (!this.inConversation && this.status.thread_muted) ||
- this.muteWordHits.length > 0)
+ const { status } = this
+ const { reblog } = status
+ const relationship = this.$store.getters.relationship(status.user.id)
+ const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)
+ const reasonsToMute = (
+ // Post is muted according to BE
+ status.muted ||
+ // Reprööt of a muted post according to BE
+ (reblog && reblog.muted) ||
+ // Muted user
+ relationship.muting ||
+ // Muted user of a reprööt
+ (relationshipReblog && relationshipReblog.muting) ||
+ // Thread is muted
+ status.thread_muted ||
+ // Wordfiltered
+ this.muteWordHits.length > 0
+ )
+ const excusesNotToMute = (
+ (
+ this.inProfile && (
+ // Don't mute user's posts on user timeline (except reblogs)
+ (!reblog && status.user.id === this.profileUserId) ||
+ // Same as above but also allow self-reblogs
+ (reblog && reblog.user.id === this.profileUserId)
+ )
+ ) ||
+ // Don't mute statuses in muted conversation when said conversation is opened
+ (this.inConversation && status.thread_muted)
+ // No excuses if post has muted words
+ ) && !this.muteWordHits.length > 0
+
+ return !this.unmuted && !excusesNotToMute && reasonsToMute
},
hideFilteredStatuses () {
return this.mergedConfig.hideFilteredStatuses