Add timed-mute functionality

This commit is contained in:
Tusooa Zhu 2022-04-30 11:08:19 -04:00 committed by tusooa
commit 228a9afdf5
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
7 changed files with 72 additions and 18 deletions

View file

@ -1,3 +1,4 @@
import { unitToSeconds } from 'src/services/date_utils/date_utils.js'
import UserAvatar from '../user_avatar/user_avatar.vue'
import RemoteFollow from '../remote_follow/remote_follow.vue'
import ProgressButton from '../progress_button/progress_button.vue'
@ -48,7 +49,9 @@ export default {
return {
followRequestInProgress: false,
betterShadow: this.$store.state.interface.browserSupport.cssFilter,
showingConfirmMute: false
showingConfirmMute: false,
muteExpiryAmount: 0,
muteExpiryUnit: 'minutes'
}
},
created () {
@ -142,6 +145,9 @@ export default {
shouldConfirmMute () {
return this.mergedConfig.modalOnMute
},
muteExpiryUnits () {
return ['minutes', 'hours', 'days']
},
...mapGetters(['mergedConfig'])
},
components: {
@ -172,7 +178,10 @@ export default {
}
},
doMuteUser () {
this.$store.dispatch('muteUser', this.user.id)
this.$store.dispatch('muteUser', {
id: this.user.id,
expiresIn: this.shouldConfirmMute ? unitToSeconds(this.muteExpiryUnit, this.muteExpiryAmount) : 0
})
this.hideConfirmMute()
},
unmuteUser () {

View file

@ -355,3 +355,8 @@
text-decoration: none;
}
}
.mute-expiry {
display: flex;
flex-direction: row;
}

View file

@ -325,7 +325,7 @@
>
<i18n-t
keypath="user_card.mute_confirm"
tag="span"
tag="div"
>
<template #user>
<span
@ -333,6 +333,32 @@
/>
</template>
</i18n-t>
<div
class="mute-expiry"
>
<label>
{{ $t('user_card.mute_duration_prompt') }}
</label>
<input
v-model="muteExpiryAmount"
type="number"
class="expiry-amount hide-number-spinner"
:min="0"
>
<Select
v-model="muteExpiryUnit"
unstyled="true"
class="expiry-unit"
>
<option
v-for="unit in muteExpiryUnits"
:key="unit"
:value="unit"
>
{{ $t(`time.${unit}_short`, ['']) }}
</option>
</Select>
</div>
</confirm-modal>
</teleport>
</div>