mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
122 lines
3.4 KiB
Vue
122 lines
3.4 KiB
Vue
<template>
|
|
<div>
|
|
<ds-space>
|
|
<ds-card :header="$t('settings.blocked-users.name')">
|
|
<ds-text>
|
|
{{ $t('settings.blocked-users.explanation.intro') }}
|
|
</ds-text>
|
|
<ds-list>
|
|
<ds-list-item>
|
|
{{ $t('settings.blocked-users.explanation.your-perspective') }}
|
|
</ds-list-item>
|
|
<ds-list-item>
|
|
{{ $t('settings.blocked-users.explanation.their-perspective') }}
|
|
</ds-list-item>
|
|
<ds-list-item>
|
|
{{ $t('settings.blocked-users.explanation.search') }}
|
|
</ds-list-item>
|
|
<ds-list-item>
|
|
{{ $t('settings.blocked-users.explanation.notifications') }}
|
|
</ds-list-item>
|
|
</ds-list>
|
|
<ds-text>
|
|
{{ $t('settings.blocked-users.explanation.closing') }}
|
|
</ds-text>
|
|
</ds-card>
|
|
</ds-space>
|
|
<ds-card v-if="blockedUsers && blockedUsers.length">
|
|
<ds-table :data="blockedUsers" :fields="fields" condensed>
|
|
<template slot="avatar" slot-scope="scope">
|
|
<nuxt-link
|
|
:to="{
|
|
name: 'profile-id-slug',
|
|
params: { id: scope.row.id, slug: scope.row.slug },
|
|
}"
|
|
>
|
|
<hc-avatar :user="scope.row" size="small" />
|
|
</nuxt-link>
|
|
</template>
|
|
<template slot="name" slot-scope="scope">
|
|
<nuxt-link
|
|
:to="{
|
|
name: 'profile-id-slug',
|
|
params: { id: scope.row.id, slug: scope.row.slug },
|
|
}"
|
|
>
|
|
<b>{{ scope.row.name | truncate(20) }}</b>
|
|
</nuxt-link>
|
|
</template>
|
|
<template slot="slug" slot-scope="scope">
|
|
<nuxt-link
|
|
:to="{
|
|
name: 'profile-id-slug',
|
|
params: { id: scope.row.id, slug: scope.row.slug },
|
|
}"
|
|
>
|
|
<b>{{ scope.row.slug | truncate(20) }}</b>
|
|
</nuxt-link>
|
|
</template>
|
|
|
|
<template slot="unblock" slot-scope="scope">
|
|
<base-button circle size="small" @click="unblock(scope)" icon="user-plus" />
|
|
</template>
|
|
</ds-table>
|
|
</ds-card>
|
|
<ds-card v-else>
|
|
<ds-space>
|
|
<ds-placeholder>
|
|
{{ $t('settings.blocked-users.empty') }}
|
|
</ds-placeholder>
|
|
</ds-space>
|
|
<ds-space>
|
|
<ds-text align="center">
|
|
{{ $t('settings.blocked-users.how-to') }}
|
|
</ds-text>
|
|
</ds-space>
|
|
</ds-card>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { BlockedUsers, Unblock } from '~/graphql/settings/BlockedUsers'
|
|
import HcAvatar from '~/components/Avatar/Avatar.vue'
|
|
|
|
export default {
|
|
components: {
|
|
HcAvatar,
|
|
},
|
|
data() {
|
|
return {
|
|
blockedUsers: [],
|
|
}
|
|
},
|
|
computed: {
|
|
fields() {
|
|
return {
|
|
avatar: '',
|
|
name: this.$t('settings.blocked-users.columns.name'),
|
|
slug: this.$t('settings.blocked-users.columns.slug'),
|
|
unblock: this.$t('settings.blocked-users.columns.unblock'),
|
|
}
|
|
},
|
|
},
|
|
apollo: {
|
|
blockedUsers: { query: BlockedUsers, fetchPolicy: 'cache-and-network' },
|
|
},
|
|
methods: {
|
|
async unblock(user) {
|
|
await this.$apollo.mutate({ mutation: Unblock(), variables: { id: user.row.id } })
|
|
this.$apollo.queries.blockedUsers.refetch()
|
|
const { name } = user.row
|
|
this.$toast.success(this.$t('settings.blocked-users.unblocked', { name }))
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.ds-table-col {
|
|
vertical-align: middle;
|
|
}
|
|
</style>
|