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) {