From e0bfc95a006ba6cbdb3a1a77bc62b6a64d95482d Mon Sep 17 00:00:00 2001 From: Alex Gleason <alex@alexgleason.me> Date: Sun, 2 Aug 2020 12:20:27 -0500 Subject: [PATCH] Use tag names from TagPolicy, fixes #134 --- src/api/__mocks__/status.js | 2 +- src/api/__mocks__/users.js | 4 +-- .../components/ModerateUserDropdown.vue | 36 +++++++++---------- .../users/components/ModerationDropdown.vue | 36 +++++++++---------- .../users/components/MultipleUsersMenu.vue | 28 +++++++-------- src/views/users/show.vue | 12 +++---- test/views/users/index.test.js | 2 +- test/views/users/multipleUsersMenu.test.js | 16 ++++----- 8 files changed, 68 insertions(+), 68 deletions(-) diff --git a/src/api/__mocks__/status.js b/src/api/__mocks__/status.js index 0fa2ccf5..b24142d2 100644 --- a/src/api/__mocks__/status.js +++ b/src/api/__mocks__/status.js @@ -12,7 +12,7 @@ export async function fetchStatus(id, authHost, token) { id: '9n1bySks25olxWrku0', avatar: 'http://localhost:4000/images/avi.png', nickname: 'dolin', - tags: ['strip_media', 'sandbox', 'disable_any_subscription', 'force_nsfw'], + tags: ['mrf_tag:media-strip', 'mrf_tag:sandbox', 'mrf_tag:disable-any-subscription', 'mrf_tag:media-force-nsfw'], url: 'http://localhost:4000/users/dolin' }, content: 'pizza makes everything better', diff --git a/src/api/__mocks__/users.js b/src/api/__mocks__/users.js index 7d4172d6..1133c705 100644 --- a/src/api/__mocks__/users.js +++ b/src/api/__mocks__/users.js @@ -1,7 +1,7 @@ export let users = [ { active: true, deactivated: false, id: '2', nickname: 'allis', local: true, external: false, roles: { admin: true, moderator: false }, tags: [] }, - { active: true, deactivated: false, id: '10', nickname: 'bob', local: false, external: true, roles: { admin: false, moderator: false }, tags: ['sandbox'] }, - { active: false, deactivated: true, id: 'abc', nickname: 'john', local: true, external: false, roles: { admin: false, moderator: false }, tags: ['strip_media'] } + { active: true, deactivated: false, id: '10', nickname: 'bob', local: false, external: true, roles: { admin: false, moderator: false }, tags: ['mrf_tag:sandbox'] }, + { active: false, deactivated: true, id: 'abc', nickname: 'john', local: true, external: false, roles: { admin: false, moderator: false }, tags: ['mrf_tag:media-strip'] } ] const userProfile = { avatar: 'avatar.jpg', nickname: 'allis', id: '2', tags: [], roles: { admin: true, moderator: false }, local: true, external: false } diff --git a/src/views/reports/components/ModerateUserDropdown.vue b/src/views/reports/components/ModerateUserDropdown.vue index fdae9c18..9be3446e 100644 --- a/src/views/reports/components/ModerateUserDropdown.vue +++ b/src/views/reports/components/ModerateUserDropdown.vue @@ -16,42 +16,42 @@ </el-dropdown-item> <el-dropdown-item :divided="true" - :class="{ 'active-tag': tags.includes('force_nsfw') }" - @click.native="toggleTag(account, 'force_nsfw')"> + :class="{ 'active-tag': tags.includes('mrf_tag:media-force-nsfw') }" + @click.native="toggleTag(account, 'mrf_tag:media-force-nsfw')"> {{ $t('users.forceNsfw') }} - <i v-if="tags.includes('force_nsfw')" class="el-icon-check"/> + <i v-if="tags.includes('mrf_tag:media-force-nsfw')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item - :class="{ 'active-tag': tags.includes('strip_media') }" - @click.native="toggleTag(account, 'strip_media')"> + :class="{ 'active-tag': tags.includes('mrf_tag:media-strip') }" + @click.native="toggleTag(account, 'mrf_tag:media-strip')"> {{ $t('users.stripMedia') }} - <i v-if="tags.includes('strip_media')" class="el-icon-check"/> + <i v-if="tags.includes('mrf_tag:media-strip')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item - :class="{ 'active-tag': tags.includes('force_unlisted') }" - @click.native="toggleTag(account, 'force_unlisted')"> + :class="{ 'active-tag': tags.includes('mrf_tag:force-unlisted') }" + @click.native="toggleTag(account, 'mrf_tag:force-unlisted')"> {{ $t('users.forceUnlisted') }} - <i v-if="tags.includes('force_unlisted')" class="el-icon-check"/> + <i v-if="tags.includes('mrf_tag:force-unlisted')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item - :class="{ 'active-tag': tags.includes('sandbox') }" - @click.native="toggleTag(account, 'sandbox')"> + :class="{ 'active-tag': tags.includes('mrf_tag:sandbox') }" + @click.native="toggleTag(account, 'mrf_tag:sandbox')"> {{ $t('users.sandbox') }} - <i v-if="tags.includes('sandbox')" class="el-icon-check"/> + <i v-if="tags.includes('mrf_tag:sandbox')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item v-if="account.local" - :class="{ 'active-tag': tags.includes('disable_remote_subscription') }" - @click.native="toggleTag(account, 'disable_remote_subscription')"> + :class="{ 'active-tag': tags.includes('mrf_tag:disable-remote-subscription') }" + @click.native="toggleTag(account, 'mrf_tag:disable-remote-subscription')"> {{ $t('users.disableRemoteSubscription') }} - <i v-if="tags.includes('disable_remote_subscription')" class="el-icon-check"/> + <i v-if="tags.includes('mrf_tag:disable-remote-subscription')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item v-if="account.local" - :class="{ 'active-tag': tags.includes('disable_any_subscription') }" - @click.native="toggleTag(account, 'disable_any_subscription')"> + :class="{ 'active-tag': tags.includes('mrf_tag:disable-any-subscription') }" + @click.native="toggleTag(account, 'mrf_tag:disable-any-subscription')"> {{ $t('users.disableAnySubscription') }} - <i v-if="tags.includes('disable_any_subscription')" class="el-icon-check"/> + <i v-if="tags.includes('mrf_tag:disable-any-subscription')" class="el-icon-check"/> </el-dropdown-item> </el-dropdown-menu> </el-dropdown> diff --git a/src/views/users/components/ModerationDropdown.vue b/src/views/users/components/ModerationDropdown.vue index 6f9a5651..8b800c46 100644 --- a/src/views/users/components/ModerationDropdown.vue +++ b/src/views/users/components/ModerationDropdown.vue @@ -50,42 +50,42 @@ </el-dropdown-item> <el-dropdown-item :divided="showAdminAction(user)" - :class="{ 'active-tag': user.tags.includes('force_nsfw') }" - @click.native="toggleTag(user, 'force_nsfw')"> + :class="{ 'active-tag': user.tags.includes('mrf_tag:media-force-nsfw') }" + @click.native="toggleTag(user, 'mrf_tag:media-force-nsfw')"> {{ $t('users.forceNsfw') }} - <i v-if="user.tags.includes('force_nsfw')" class="el-icon-check"/> + <i v-if="user.tags.includes('mrf_tag:media-force-nsfw')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item - :class="{ 'active-tag': user.tags.includes('strip_media') }" - @click.native="toggleTag(user, 'strip_media')"> + :class="{ 'active-tag': user.tags.includes('mrf_tag:media-strip') }" + @click.native="toggleTag(user, 'mrf_tag:media-strip')"> {{ $t('users.stripMedia') }} - <i v-if="user.tags.includes('strip_media')" class="el-icon-check"/> + <i v-if="user.tags.includes('mrf_tag:media-strip')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item - :class="{ 'active-tag': user.tags.includes('force_unlisted') }" - @click.native="toggleTag(user, 'force_unlisted')"> + :class="{ 'active-tag': user.tags.includes('mrf_tag:force-unlisted') }" + @click.native="toggleTag(user, 'mrf_tag:force-unlisted')"> {{ $t('users.forceUnlisted') }} - <i v-if="user.tags.includes('force_unlisted')" class="el-icon-check"/> + <i v-if="user.tags.includes('mrf_tag:force-unlisted')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item - :class="{ 'active-tag': user.tags.includes('sandbox') }" - @click.native="toggleTag(user, 'sandbox')"> + :class="{ 'active-tag': user.tags.includes('mrf_tag:sandbox') }" + @click.native="toggleTag(user, 'mrf_tag:sandbox')"> {{ $t('users.sandbox') }} - <i v-if="user.tags.includes('sandbox')" class="el-icon-check"/> + <i v-if="user.tags.includes('mrf_tag:sandbox')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item v-if="user.local" - :class="{ 'active-tag': user.tags.includes('disable_remote_subscription') }" - @click.native="toggleTag(user, 'disable_remote_subscription')"> + :class="{ 'active-tag': user.tags.includes('mrf_tag:disable-remote-subscription') }" + @click.native="toggleTag(user, 'mrf_tag:disable-remote-subscription')"> {{ $t('users.disableRemoteSubscription') }} - <i v-if="user.tags.includes('disable_remote_subscription')" class="el-icon-check"/> + <i v-if="user.tags.includes('mrf_tag:disable-remote-subscription')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item v-if="user.local" - :class="{ 'active-tag': user.tags.includes('disable_any_subscription') }" - @click.native="toggleTag(user, 'disable_any_subscription')"> + :class="{ 'active-tag': user.tags.includes('mrf_tag:disable-any-subscription') }" + @click.native="toggleTag(user, 'mrf_tag:disable-any-subscription')"> {{ $t('users.disableAnySubscription') }} - <i v-if="user.tags.includes('disable_any_subscription')" class="el-icon-check"/> + <i v-if="user.tags.includes('mrf_tag:disable-any-subscription')" class="el-icon-check"/> </el-dropdown-item> <el-dropdown-item v-if="user.local" diff --git a/src/views/users/components/MultipleUsersMenu.vue b/src/views/users/components/MultipleUsersMenu.vue index 8af223fd..a192b8a8 100644 --- a/src/views/users/components/MultipleUsersMenu.vue +++ b/src/views/users/components/MultipleUsersMenu.vue @@ -56,10 +56,10 @@ <div class="tag-container"> <span class="tag-text">{{ $t('users.forceNsfw') }}</span> <el-button-group class="tag-button-group"> - <el-button size="mini" @click.native="addTagForMultipleUsers('force_nsfw')"> + <el-button size="mini" @click.native="addTagForMultipleUsers('mrf_tag:media-force-nsfw')"> {{ $t('users.apply') }} </el-button> - <el-button size="mini" @click.native="removeTagFromMultipleUsers('force_nsfw')"> + <el-button size="mini" @click.native="removeTagFromMultipleUsers('mrf_tag:media-force-nsfw')"> {{ $t('users.remove') }} </el-button> </el-button-group> @@ -69,10 +69,10 @@ <div class="tag-container"> <span class="tag-text">{{ $t('users.stripMedia') }}</span> <el-button-group class="tag-button-group"> - <el-button size="mini" @click.native="addTagForMultipleUsers('strip_media')"> + <el-button size="mini" @click.native="addTagForMultipleUsers('mrf_tag:media-strip')"> {{ $t('users.apply') }} </el-button> - <el-button size="mini" @click.native="removeTagFromMultipleUsers('strip_media')"> + <el-button size="mini" @click.native="removeTagFromMultipleUsers('mrf_tag:media-strip')"> {{ $t('users.remove') }} </el-button> </el-button-group> @@ -82,10 +82,10 @@ <div class="tag-container"> <span class="tag-text">{{ $t('users.forceUnlisted') }}</span> <el-button-group class="tag-button-group"> - <el-button size="mini" @click.native="addTagForMultipleUsers('force_unlisted')"> + <el-button size="mini" @click.native="addTagForMultipleUsers('mrf_tag:force-unlisted')"> {{ $t('users.apply') }} </el-button> - <el-button size="mini" @click.native="removeTagFromMultipleUsers('force_unlisted')"> + <el-button size="mini" @click.native="removeTagFromMultipleUsers('mrf_tag:force-unlisted')"> {{ $t('users.remove') }} </el-button> </el-button-group> @@ -95,10 +95,10 @@ <div class="tag-container"> <span class="tag-text">{{ $t('users.sandbox') }}</span> <el-button-group class="tag-button-group"> - <el-button size="mini" @click.native="addTagForMultipleUsers('sandbox')"> + <el-button size="mini" @click.native="addTagForMultipleUsers('mrf_tag:sandbox')"> {{ $t('users.apply') }} </el-button> - <el-button size="mini" @click.native="removeTagFromMultipleUsers('sandbox')"> + <el-button size="mini" @click.native="removeTagFromMultipleUsers('mrf_tag:sandbox')"> {{ $t('users.remove') }} </el-button> </el-button-group> @@ -108,10 +108,10 @@ <div class="tag-container"> <span class="tag-text">{{ $t('users.disableRemoteSubscriptionForMultiple') }}</span> <el-button-group class="tag-button-group"> - <el-button size="mini" @click.native="addTagForMultipleUsers('disable_remote_subscription')"> + <el-button size="mini" @click.native="addTagForMultipleUsers('mrf_tag:disable-remote-subscription')"> {{ $t('users.apply') }} </el-button> - <el-button size="mini" @click.native="removeTagFromMultipleUsers('disable_remote_subscription')"> + <el-button size="mini" @click.native="removeTagFromMultipleUsers('mrf_tag:disable-remote-subscription')"> {{ $t('users.remove') }} </el-button> </el-button-group> @@ -121,10 +121,10 @@ <div class="tag-container"> <span class="tag-text">{{ $t('users.disableAnySubscriptionForMultiple') }}</span> <el-button-group class="tag-button-group"> - <el-button size="mini" @click.native="addTagForMultipleUsers('disable_any_subscription')"> + <el-button size="mini" @click.native="addTagForMultipleUsers('mrf_tag:disable-any-subscription')"> {{ $t('users.apply') }} </el-button> - <el-button size="mini" @click.native="removeTagFromMultipleUsers('disable_any_subscription')"> + <el-button size="mini" @click.native="removeTagFromMultipleUsers('mrf_tag:disable-any-subscription')"> {{ $t('users.remove') }} </el-button> </el-button-group> @@ -198,7 +198,7 @@ export default { }, addTag: (tag) => () => { const filtered = this.selectedUsers.filter(user => - tag === 'disable_remote_subscription' || tag === 'disable_any_subscription' + tag === 'mrf_tag:disable-remote-subscription' || tag === 'mrf_tag:disable-any-subscription' ? this.isLocalUser(user) && !user.tags.includes(tag) : user.nickname && !user.tags.includes(tag)) const addTagFn = async(users) => await this.$store.dispatch('AddTag', { users, tag }) @@ -206,7 +206,7 @@ export default { }, removeTag: (tag) => async() => { const filtered = this.selectedUsers.filter(user => - tag === 'disable_remote_subscription' || tag === 'disable_any_subscription' + tag === 'mrf_tag:disable-remote-subscription' || tag === 'mrf_tag:disable-any-subscription' ? this.isLocalUser(user) && user.tags.includes(tag) : user.nickname && user.tags.includes(tag)) const removeTagFn = async(users) => await this.$store.dispatch('RemoveTag', { users, tag }) diff --git a/src/views/users/show.vue b/src/views/users/show.vue index 70b645a3..c77c710c 100644 --- a/src/views/users/show.vue +++ b/src/views/users/show.vue @@ -169,12 +169,12 @@ export default { }, humanizeTag(tag) { const mapTags = { - 'force_nsfw': 'Force NSFW', - 'strip_media': 'Strip Media', - 'force_unlisted': 'Force Unlisted', - 'sandbox': 'Sandbox', - 'disable_remote_subscription': 'Disable remote subscription', - 'disable_any_subscription': 'Disable any subscription' + 'mrf_tag:media-force-nsfw': 'Force NSFW', + 'mrf_tag:media-strip': 'Strip Media', + 'mrf_tag:force-unlisted': 'Force Unlisted', + 'mrf_tag:sandbox': 'Sandbox', + 'mrf_tag:disable-remote-subscription': 'Disable remote subscription', + 'mrf_tag:disable-any-subscription': 'Disable any subscription' } return mapTags[tag] }, diff --git a/test/views/users/index.test.js b/test/views/users/index.test.js index 847de253..6afd901b 100644 --- a/test/views/users/index.test.js +++ b/test/views/users/index.test.js @@ -159,7 +159,7 @@ describe('Users actions', () => { expect(store.state.users.fetchedUsers[1].deactivated).toBe(false) wrapper.find(htmlElement(2, 2)).trigger('click') - store.dispatch('DeleteUsers', { users: [{ active: true, deactivated: false, id: '10', nickname: 'bob', local: false, external: true, roles: { admin: false, moderator: false }, tags: ['sandbox'] }] }) + store.dispatch('DeleteUsers', { users: [{ active: true, deactivated: false, id: '10', nickname: 'bob', local: false, external: true, roles: { admin: false, moderator: false }, tags: ['mrf_tag:sandbox'] }] }) await flushPromises() expect(store.state.users.fetchedUsers[1].deactivated).toBe(true) diff --git a/test/views/users/multipleUsersMenu.test.js b/test/views/users/multipleUsersMenu.test.js index c956bed4..1408ea56 100644 --- a/test/views/users/multipleUsersMenu.test.js +++ b/test/views/users/multipleUsersMenu.test.js @@ -249,22 +249,22 @@ describe('Apply users actions to multiple users', () => { wrapper.find(`.el-dropdown-menu__item:nth-child(11) button:nth-child(1)`).trigger('click') expect(wrapper.vm.addTagForMultipleUsers).toHaveBeenCalled() - expect(wrapper.vm.addTagForMultipleUsers).toHaveBeenCalledWith('force_nsfw') + expect(wrapper.vm.addTagForMultipleUsers).toHaveBeenCalledWith('mrf_tag:media-force-nsfw') wrapper.find(`.el-dropdown-menu__item:nth-child(13) button:nth-child(1)`).trigger('click') expect(wrapper.vm.addTagForMultipleUsers).toHaveBeenCalled() - expect(wrapper.vm.addTagForMultipleUsers).toHaveBeenCalledWith('force_unlisted') + expect(wrapper.vm.addTagForMultipleUsers).toHaveBeenCalledWith('mrf_tag:force-unlisted') wrapper.find(`.el-dropdown-menu__item:nth-child(15 ) button:nth-child(1)`).trigger('click') expect(wrapper.vm.addTagForMultipleUsers).toHaveBeenCalled() - expect(wrapper.vm.addTagForMultipleUsers).toHaveBeenCalledWith('disable_remote_subscription') + expect(wrapper.vm.addTagForMultipleUsers).toHaveBeenCalledWith('mrf_tag:disable-remote-subscription') const addTag = wrapper.vm.mappers().addTag const user1 = store.state.users.fetchedUsers[0] const user2 = store.state.users.fetchedUsers[1] expect(user1.tags.length).toBe(0) expect(user2.tags.length).toBe(1) - addTag('strip_media')() + addTag('mrf_tag:media-strip')() const updatedUser1 = store.state.users.fetchedUsers[0] const updatedUser2 = store.state.users.fetchedUsers[1] @@ -289,22 +289,22 @@ describe('Apply users actions to multiple users', () => { wrapper.find(`.el-dropdown-menu__item:nth-child(12) button:nth-child(2)`).trigger('click') expect(wrapper.vm.removeTagFromMultipleUsers).toHaveBeenCalled() - expect(wrapper.vm.removeTagFromMultipleUsers).toHaveBeenCalledWith('strip_media') + expect(wrapper.vm.removeTagFromMultipleUsers).toHaveBeenCalledWith('mrf_tag:media-strip') wrapper.find(`.el-dropdown-menu__item:nth-child(14) button:nth-child(2)`).trigger('click') expect(wrapper.vm.removeTagFromMultipleUsers).toHaveBeenCalled() - expect(wrapper.vm.removeTagFromMultipleUsers).toHaveBeenCalledWith('sandbox') + expect(wrapper.vm.removeTagFromMultipleUsers).toHaveBeenCalledWith('mrf_tag:sandbox') wrapper.find(`.el-dropdown-menu__item:nth-child(16) button:nth-child(2)`).trigger('click') expect(wrapper.vm.removeTagFromMultipleUsers).toHaveBeenCalled() - expect(wrapper.vm.removeTagFromMultipleUsers).toHaveBeenCalledWith('disable_any_subscription') + expect(wrapper.vm.removeTagFromMultipleUsers).toHaveBeenCalledWith('mrf_tag:disable-any-subscription') const removeTag = wrapper.vm.mappers().removeTag const user1 = store.state.users.fetchedUsers[1] const user2 = store.state.users.fetchedUsers[2] expect(user1.tags.length).toBe(1) expect(user2.tags.length).toBe(1) - removeTag('strip_media')() + removeTag('mrf_tag:media-strip')() const updatedUser1 = store.state.users.fetchedUsers[1] const updatedUser2 = store.state.users.fetchedUsers[2] -- GitLab