diff --git a/changelog.d/actor-type.fix b/changelog.d/actor-type.fix new file mode 100644 index 000000000..a2c873c1a --- /dev/null +++ b/changelog.d/actor-type.fix @@ -0,0 +1 @@ +fixed being unable to set actor type from profile page diff --git a/changelog.d/error-mute.fix b/changelog.d/error-mute.fix new file mode 100644 index 000000000..31e7bed12 --- /dev/null +++ b/changelog.d/error-mute.fix @@ -0,0 +1 @@ +fixed error when clicking mute menu itself (instead of submenu items) diff --git a/changelog.d/mute-domain.fix b/changelog.d/mute-domain.fix new file mode 100644 index 000000000..9f5b378bb --- /dev/null +++ b/changelog.d/mute-domain.fix @@ -0,0 +1 @@ +fixed mute -> domain status submenu not working diff --git a/src/components/block_card/block_card.js b/src/components/block_card/block_card.js index 754c2fb12..7301bf0c7 100644 --- a/src/components/block_card/block_card.js +++ b/src/components/block_card/block_card.js @@ -15,10 +15,10 @@ const BlockCard = { return this.relationship.blocking }, blockExpiryAvailable() { - return this.user.block_expires_at !== undefined + return Object.hasOwn(this.user, 'block_expires_at') }, blockExpiry() { - return this.user.block_expires_at == null + return this.user.block_expires_at === false ? this.$t('user_card.block_expires_forever') : this.$t('user_card.block_expires_at', [ new Date(this.user.mute_expires_at).toLocaleString(), diff --git a/src/components/confirm_modal/mute_confirm.js b/src/components/confirm_modal/mute_confirm.js index 560f6346c..c486ad7e4 100644 --- a/src/components/confirm_modal/mute_confirm.js +++ b/src/components/confirm_modal/mute_confirm.js @@ -19,9 +19,9 @@ export default { }, keypath() { if (this.type === 'domain') { - return 'status.mute_domain_confirm' + return 'user_card.mute_domain_confirm' } else if (this.type === 'conversation') { - return 'status.mute_conversation_confirm' + return 'user_card.mute_conversation_confirm' } }, conversationIsMuted() { @@ -65,9 +65,9 @@ export default { switch (this.type) { case 'domain': { if (!this.domainIsMuted) { - this.$store.dispatch('muteDomain', { id: this.domain }) + this.$store.dispatch('muteDomain', this.domain) } else { - this.$store.dispatch('unmuteDomain', { id: this.domain }) + this.$store.dispatch('unmuteDomain', this.domain) } break } diff --git a/src/components/mute_card/mute_card.js b/src/components/mute_card/mute_card.js index aaad96863..d5226ef06 100644 --- a/src/components/mute_card/mute_card.js +++ b/src/components/mute_card/mute_card.js @@ -14,10 +14,10 @@ const MuteCard = { return this.relationship.muting }, muteExpiryAvailable() { - return this.user.mute_expires_at !== undefined + return Object.hasOwn(this.user, 'mute_expires_at') }, muteExpiry() { - return this.user.mute_expires_at == null + return this.user.mute_expires_at === false ? this.$t('user_card.mute_expires_forever') : this.$t('user_card.mute_expires_at', [ new Date(this.user.mute_expires_at).toLocaleString(), diff --git a/src/components/status_action_buttons/action_button_container.js b/src/components/status_action_buttons/action_button_container.js index c5e615a19..58b382b26 100644 --- a/src/components/status_action_buttons/action_button_container.js +++ b/src/components/status_action_buttons/action_button_container.js @@ -63,7 +63,7 @@ export default { return this.$store.dispatch('unmuteConversation', { id: this.status.id }) }, unmuteDomain() { - return this.$store.dispatch('unmuteDomain', this.user.id) + return this.$store.dispatch('unmuteDomain', this.domain) }, toggleUserMute() { if (this.userIsMuted) { diff --git a/src/components/status_action_buttons/status_action_buttons.js b/src/components/status_action_buttons/status_action_buttons.js index d53ef3271..8473a0db1 100644 --- a/src/components/status_action_buttons/status_action_buttons.js +++ b/src/components/status_action_buttons/status_action_buttons.js @@ -98,7 +98,7 @@ const StatusActionButtons = { }, doActionReal(button) { button - .action(this.funcArg) + .action?.(this.funcArg) .then(() => this.$emit('onSuccess')) .catch((err) => this.$emit('onError', err.error.error)) }, diff --git a/src/components/user_card/user_card.js b/src/components/user_card/user_card.js index 3ec6e8e3d..0786e5b35 100644 --- a/src/components/user_card/user_card.js +++ b/src/components/user_card/user_card.js @@ -121,8 +121,6 @@ export default { return { followRequestInProgress: false, - muteExpiryAmount: 0, - muteExpiryUnit: 'minutes', // Editable stuff editImage: false, @@ -158,7 +156,7 @@ export default { computed: { somethingToSave() { if (this.newName !== this.user.name_unescaped) return true - if (this.newBio !== unescape(this.user.description)) return true + if (this.newBio !== ldUnescape(this.user.description)) return true if (this.newAvatar !== null) return true if (this.newBanner !== null) return true if (this.newActorType !== this.user.actor_type) return true @@ -288,17 +286,17 @@ export default { return 'note' in this.relationship }, muteExpiryAvailable() { - return this.user.mute_expires_at !== undefined + return Object.hasOwn(this.user, 'mute_expires_at') }, muteExpiry() { - return this.user.mute_expires_at == null + return this.user.mute_expires_at === false ? this.$t('user_card.mute_expires_forever') : this.$t('user_card.mute_expires_at', [ new Date(this.user.mute_expires_at).toLocaleString(), ]) }, blockExpiryAvailable() { - return this.user.block_expires_at !== undefined + return Object.hasOwn(this.user, 'block_expires_at') }, blockExpiry() { return this.user.block_expires_at == null @@ -500,7 +498,7 @@ export default { const user = this.$store.state.users.currentUser this.newName = user.name_unescaped - this.newBio = unescape(user.description) + this.newBio = ldUnescape(user.description) this.newAvatar = null this.newAvatarFile = null @@ -530,8 +528,8 @@ export default { show_birthday: !!this.newShowBirthday, } - if (this.actorType) { - params.actor_type = this.actorType + if (this.newActorType) { + params.actor_type = this.newActorType } if (this.newAvatarFile !== null) { diff --git a/src/components/user_card/user_card.vue b/src/components/user_card/user_card.vue index d6edc021f..66529f59b 100644 --- a/src/components/user_card/user_card.vue +++ b/src/components/user_card/user_card.vue @@ -208,22 +208,10 @@ {{ $t('user_card.group') }} - - {{ muteExpiry }} - - - {{ blockExpiry }} - diff --git a/src/i18n/en.json b/src/i18n/en.json index d1e591225..8dea6851b 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -1664,6 +1664,7 @@ "muted": "Muted", "mute_confirm_title": "Mute confirmation", "mute_confirm": "Do you really want to mute {user}?", + "mute_domain_confirm": "Do you really want to mute entire {domain}?", "mute_confirm_accept_button": "Mute", "mute_confirm_cancel_button": "Do not mute", "mute_or": "or", diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index dee586aeb..2020f564e 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -61,8 +61,16 @@ export const parseUser = (data) => { output.screen_name = data.acct output.fqn = data.fqn output.statusnet_profile_url = data.url - output.mute_expires_at = data.mute_expires_at - output.block_expires_at = data.block_expires_at + + if (Object.hasOwn(data, 'mute_expires_at')) { + output.mute_expires_at = + data.mute_expires_at == null ? false : data.mute_expires_at + } + + if (Object.hasOwn(data, 'block_expires_at')) { + output.block_expires_at = + data.block_expires_at == null ? false : data.block_expires_at + } // There's nothing else to get if (mastoShort) {