From f1c1ba8efa85b996c54d484f915f249ca819e262 Mon Sep 17 00:00:00 2001 From: Keith Holliday Date: Thu, 9 Aug 2018 15:24:44 -0500 Subject: [PATCH 01/10] Minor responsive updates to the spell bar (#10580) --- website/client/components/tasks/spells.vue | 66 +++++++++++++--------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/website/client/components/tasks/spells.vue b/website/client/components/tasks/spells.vue index 29ee98c3ff..a899bb6e18 100644 --- a/website/client/components/tasks/spells.vue +++ b/website/client/components/tasks/spells.vue @@ -9,36 +9,50 @@ div(v-if='user.stats.lvl > 10') .col-4.mana .img(:class='`shop_${spell.key} shop-sprite item-img`') - drawer( - :title="$t('skillsTitle')", - v-if='user.stats.class && !user.preferences.disableClasses', - v-mousePosition="30", - @mouseMoved="mouseMoved($event)", - :openStatus='openStatus', - @toggled='drawerToggled' - ) - div(slot="drawer-slider") - .container.spell-container - .row - .col-3( - @click='castStart(skill)', - v-for='(skill, key) in spells[user.stats.class]', - v-if='user.stats.lvl >= skill.lvl', - v-b-popover.hover.auto='skill.notes()') - .spell.col-12.row - .col-8.details - a(:class='{"disabled": spellDisabled(key)}') - div.img(:class='`shop_${skill.key} shop-sprite item-img`') - span.title {{skill.text()}} - .col-4.mana - .mana-text - .svg-icon(v-html="icons.mana") - div {{skill.mana}} + .drawer-wrapper.d-flex.justify-content-center + drawer( + :title="$t('skillsTitle')", + v-if='user.stats.class && !user.preferences.disableClasses', + v-mousePosition="30", + @mouseMoved="mouseMoved($event)", + :openStatus='openStatus', + @toggled='drawerToggled' + ) + div(slot="drawer-slider") + .container.spell-container + .row + .col-12.col-md-3( + @click='castStart(skill)', + v-for='(skill, key) in spells[user.stats.class]', + v-if='user.stats.lvl >= skill.lvl', + v-b-popover.hover.auto='skill.notes()') + .spell.col-12.row + .col-8.details + a(:class='{"disabled": spellDisabled(key)}') + div.img(:class='`shop_${skill.key} shop-sprite item-img`') + span.title {{skill.text()}} + .col-4.mana + .mana-text + .svg-icon(v-html="icons.mana") + div {{skill.mana}} diff --git a/website/server/controllers/api-v3/chat.js b/website/server/controllers/api-v3/chat.js index b475269fa6..f1b2b7a9cd 100644 --- a/website/server/controllers/api-v3/chat.js +++ b/website/server/controllers/api-v3/chat.js @@ -12,7 +12,6 @@ import { getUserInfo, getGroupUrl, sendTxn } from '../../libs/email'; import slack from '../../libs/slack'; import pusher from '../../libs/pusher'; import { getAuthorEmailFromMessage } from '../../libs/chat'; -import { userIsMuted, muteUserForLife } from '../../libs/chat/mute'; import { chatReporterFactory } from '../../libs/chatReporting/chatReporterFactory'; import nconf from 'nconf'; import bannedWords from '../../libs/bannedWords'; @@ -125,7 +124,6 @@ api.postChat = { if (textContainsBannedSlur(req.body.message)) { let message = req.body.message; user.flags.chatRevoked = true; - muteUserForLife(user); await user.save(); // Email the mods @@ -162,7 +160,7 @@ api.postChat = { if (!group) throw new NotFound(res.t('groupNotFound')); - if (group.privacy !== 'private' && userIsMuted(user)) { + if (group.privacy !== 'private' && user.flags.chatRevoked) { throw new NotAuthorized(res.t('chatPrivilegesRevoked')); } diff --git a/website/server/controllers/api-v3/hall.js b/website/server/controllers/api-v3/hall.js index 8ac4862ce5..d009d536b6 100644 --- a/website/server/controllers/api-v3/hall.js +++ b/website/server/controllers/api-v3/hall.js @@ -143,7 +143,7 @@ api.getHeroes = { // Note, while the following routes are called getHero / updateHero // they can be used by admins to get/update any user -const heroAdminFields = 'contributor balance profile.name purchased items auth flags.chatRevoked flags.chatRevokedEndDate'; +const heroAdminFields = 'contributor balance profile.name purchased items auth flags.chatRevoked'; /** * @api {get} /api/v3/hall/heroes/:heroId Get any user ("hero") given the UUID @@ -275,7 +275,6 @@ api.updateHero = { } if (updateData.flags && _.isBoolean(updateData.flags.chatRevoked)) hero.flags.chatRevoked = updateData.flags.chatRevoked; - if (updateData.flags && updateData.flags.chatRevokedEndDate) hero.flags.chatRevokedEndDate = updateData.flags.chatRevokedEndDate; let savedHero = await hero.save(); let heroJSON = savedHero.toJSON(); diff --git a/website/server/libs/chat/mute.js b/website/server/libs/chat/mute.js deleted file mode 100644 index 1ec368d6d0..0000000000 --- a/website/server/libs/chat/mute.js +++ /dev/null @@ -1,19 +0,0 @@ -import moment from 'moment'; - -function userIsMuted (user) { - if (!user.flags.chatRevoked) return false; - - // User is muted indefinitely - if (!user.flags.chatRevokedEndDate) return true; - - return moment(user.flags.chatRevokedEndDate).isAfter(moment()); -} - -function muteUserForLife (user) { - user.flags.chatRevokedEndDate = moment().add(1000, 'years').toDate(); -} - -module.exports = { - userIsMuted, - muteUserForLife, -}; diff --git a/website/server/models/user/schema.js b/website/server/models/user/schema.js index 510f5e6afe..81d7386d5c 100644 --- a/website/server/models/user/schema.js +++ b/website/server/models/user/schema.js @@ -223,7 +223,6 @@ let schema = new Schema({ return {}; }}, chatRevoked: Boolean, - chatRevokedEndDate: Date, // Used to track the status of recapture emails sent to each user, // can be 0 - no email sent - 1, 2, 3 or 4 - 4 means no more email will be sent to the user recaptureEmailsPhase: {type: Number, default: 0},