implemented status visibility change
This commit is contained in:
parent
aa0cef12b1
commit
19d8875196
16 changed files with 225 additions and 98 deletions
|
|
@ -19,6 +19,7 @@ import {
|
|||
faChevronDown,
|
||||
faChevronRight,
|
||||
faExternalLinkAlt,
|
||||
faEye,
|
||||
faEyeSlash,
|
||||
faHistory,
|
||||
faMinus,
|
||||
|
|
@ -51,6 +52,7 @@ library.add(
|
|||
faBookmark,
|
||||
faBookmarkRegular,
|
||||
faEyeSlash,
|
||||
faEye,
|
||||
faThumbtack,
|
||||
faShareAlt,
|
||||
faExternalLinkAlt,
|
||||
|
|
|
|||
|
|
@ -3,14 +3,30 @@ import { defineAsyncComponent } from 'vue'
|
|||
import Popover from 'src/components/popover/popover.vue'
|
||||
import ActionButton from './action_button.vue'
|
||||
|
||||
import { useAdminSettingsStore } from 'src/stores/admin_settings.js'
|
||||
|
||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||
import {
|
||||
faEnvelope,
|
||||
faEye,
|
||||
faEyeSlash,
|
||||
faFolderTree,
|
||||
faGlobe,
|
||||
faLock,
|
||||
faLockOpen,
|
||||
faUser,
|
||||
} from '@fortawesome/free-solid-svg-icons'
|
||||
|
||||
library.add(faUser, faGlobe, faFolderTree)
|
||||
library.add(
|
||||
faUser,
|
||||
faGlobe,
|
||||
faFolderTree,
|
||||
faEye,
|
||||
faEyeSlash,
|
||||
faLock,
|
||||
faLockOpen,
|
||||
faEnvelope,
|
||||
)
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
|
@ -61,8 +77,27 @@ export default {
|
|||
this.domain,
|
||||
)
|
||||
},
|
||||
availableScopes() {
|
||||
return ['private', 'unlisted', 'direct', 'public'].filter((scope) => {
|
||||
return scope !== this.status.visibility
|
||||
})
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
visibilityIcon(visibility) {
|
||||
switch (visibility) {
|
||||
case 'private':
|
||||
return 'lock'
|
||||
case 'unlisted':
|
||||
return 'lock-open'
|
||||
case 'direct':
|
||||
return 'envelope'
|
||||
case 'local':
|
||||
return 'igloo'
|
||||
default:
|
||||
return 'globe'
|
||||
}
|
||||
},
|
||||
unmuteUser() {
|
||||
return this.$store.dispatch('unmuteUser', this.user.id)
|
||||
},
|
||||
|
|
@ -79,6 +114,18 @@ export default {
|
|||
this.$refs.confirmUser.optionallyPrompt()
|
||||
}
|
||||
},
|
||||
setScope(visibility) {
|
||||
return useAdminSettingsStore().changeStatusScope({
|
||||
id: this.status.id,
|
||||
visibility,
|
||||
})
|
||||
},
|
||||
setSensitive(sensitive) {
|
||||
useAdminSettingsStore().changeStatusScope({
|
||||
id: this.status.id,
|
||||
sensitive,
|
||||
})
|
||||
},
|
||||
toggleConversationMute() {
|
||||
if (this.conversationIsMuted) {
|
||||
this.unmuteConversation()
|
||||
|
|
|
|||
|
|
@ -14,6 +14,58 @@
|
|||
/>
|
||||
</template>
|
||||
<template #content>
|
||||
<div
|
||||
v-if="button.name === 'changeScope'"
|
||||
:id="`popup-menu-scope-${randomSeed}`"
|
||||
class="dropdown-menu"
|
||||
role="menu"
|
||||
>
|
||||
<div
|
||||
v-for="visibility in availableScopes"
|
||||
class="menu-item dropdown-item extra-action -icon"
|
||||
>
|
||||
<button
|
||||
class="main-button"
|
||||
@click="() => setScope(visibility)"
|
||||
>
|
||||
<FAIcon
|
||||
:icon="visibilityIcon(visibility)"
|
||||
fixed-width
|
||||
/>
|
||||
{{ $t('general.scope_in_timeline.' + visibility) }}
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
v-if="status.nsfw"
|
||||
class="menu-item dropdown-item extra-action -icon"
|
||||
>
|
||||
<button
|
||||
class="main-button"
|
||||
@click="() => setSensitive(false)"
|
||||
>
|
||||
<FAIcon
|
||||
icon="eye"
|
||||
fixed-width
|
||||
/>
|
||||
{{ $t('status.mark_as_non-sensitive') }}
|
||||
</button>
|
||||
</div>
|
||||
<div
|
||||
v-else
|
||||
class="menu-item dropdown-item extra-action -icon"
|
||||
>
|
||||
<button
|
||||
class="main-button"
|
||||
@click="() => setSensitive(true)"
|
||||
>
|
||||
<FAIcon
|
||||
icon="eye-slash"
|
||||
fixed-width
|
||||
/>
|
||||
{{ $t('status.mark_as_sensitive') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="button.name === 'mute'"
|
||||
:id="`popup-menu-${randomSeed}`"
|
||||
|
|
|
|||
|
|
@ -243,6 +243,26 @@ export const BUTTONS = [
|
|||
return dispatch('deleteStatus', { id: status.id })
|
||||
},
|
||||
},
|
||||
{
|
||||
// =========
|
||||
// CHANGE SCOPE
|
||||
// =========
|
||||
name: 'changeScope',
|
||||
icon: 'eye',
|
||||
label: 'status.admin_change_scope',
|
||||
if({ status, loggedIn, currentUser }) {
|
||||
return (
|
||||
loggedIn &&
|
||||
(status.user.id === currentUser.id ||
|
||||
currentUser.privileges.has('messages_delete'))
|
||||
)
|
||||
},
|
||||
toggleable: false,
|
||||
dropdown: true,
|
||||
action({ status, dispatch, emit }) {
|
||||
/* prevent hiding */
|
||||
},
|
||||
},
|
||||
{
|
||||
// =========
|
||||
// SHARE/COPY
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue