From 28bf024990e7338f7562fcfe0df2cf144ff7186f Mon Sep 17 00:00:00 2001 From: Mateus Etto Date: Wed, 15 May 2019 19:07:17 +0900 Subject: [PATCH] Move translateMessage to libs --- website/server/libs/chat/group-chat.js | 83 ++++++++++++++++++++++++++ website/server/models/group.js | 83 +------------------------- 2 files changed, 85 insertions(+), 81 deletions(-) diff --git a/website/server/libs/chat/group-chat.js b/website/server/libs/chat/group-chat.js index 72edb4d52d..92123b6cf2 100644 --- a/website/server/libs/chat/group-chat.js +++ b/website/server/libs/chat/group-chat.js @@ -1,6 +1,10 @@ import { chatModel as Chat } from '../../models/message'; +import shared from '../../../common'; +import _ from 'lodash'; import { MAX_CHAT_COUNT, MAX_SUBBED_GROUP_CHAT_COUNT } from '../../models/group'; +const questScrolls = shared.content.quests; + // @TODO: Don't use this method when the group can be saved. export async function getGroupChat (group) { const maxChatCount = group.isSubscribed() ? MAX_SUBBED_GROUP_CHAT_COUNT : MAX_CHAT_COUNT; @@ -22,3 +26,82 @@ export async function getGroupChat (group) { return previous; }, []); } + +export function translateMessage (lang, info) { + let msg; + let foundText = ''; + let spells = shared.content.spells; + let quests = shared.content.quests; + + switch (info.type) { + case 'quest_start': + msg = `\`${shared.i18n.t('chatQuestStarted', {questName: questScrolls[info.quest].text(lang)}, lang)}\``; + break; + + case 'boss_damage': + msg = `\`${shared.i18n.t('chatBossDamage', {username: info.user, bossName: questScrolls[info.quest].boss.name(lang), userDamage: info.userDamage, bossDamage: info.bossDamage}, lang)}\``; + break; + + case 'boss_dont_attack': + msg = `\`${shared.i18n.t('chatBossDontAttack', {username: info.user, bossName: questScrolls[info.quest].boss.name(lang), userDamage: info.userDamage}, lang)}\``; + break; + + case 'boss_rage': + msg = `\`${questScrolls[info.quest].boss.rage.effect(lang)}\``; + break; + + case 'boss_defeated': + msg = `\`${shared.i18n.t('chatBossDefeated', {bossName: questScrolls[info.quest].boss.name(lang)}, lang)}\``; + break; + + case 'user_found_items': + foundText = _.reduce(info.items, (m, v, k) => { + m.push(`${v} ${questScrolls[info.quest].collect[k].text(lang)}`); + return m; + }, []).join(', '); + msg = `\`${shared.i18n.t('chatFindItems', {username: info.user, items: foundText}, lang)}\``; + break; + + case 'all_items_found': + msg = `\`${shared.i18n.t('chatItemQuestFinish', lang)}\``; + break; + + case 'spell_cast_party': + msg = `\`${shared.i18n.t('chatCastSpellParty', {username: info.user, spell: spells[info.class][info.spell].text(lang)}, lang)}\``; + break; + + case 'spell_cast_user': + msg = `\`${shared.i18n.t('chatCastSpellUser', {username: info.user, spell: spells[info.class][info.spell].text(lang), target: info.target}, lang)}\``; + break; + + case 'quest_cancel': + msg = `\`${shared.i18n.t('chatQuestCancelled', {username: info.user, questName: questScrolls[info.quest].text(lang)}, lang)}\``; + break; + + case 'quest_abort': + msg = `\`${shared.i18n.t('chatQuestAborted', {username: info.user, questName: questScrolls[info.quest].text(lang)}, lang)}\``; + break; + + case 'tavern_quest_completed': + msg = `\`${quests[info.quest].completionChat(lang)}\``; + break; + + case 'tavern_boss_rage_tired': + msg = `\`${shared.i18n.t('tavernBossTired', {rageName: quests[info.quest].boss.rage.title(lang), bossName: quests[info.quest].boss.name(lang)}, lang)}\``; + break; + + case 'tavern_boss_rage': + msg = `\`${quests[info.quest].boss.rage[info.scene](lang)}\``; + break; + + case 'tavern_boss_desperation': + msg = `\`${quests[info.quest].boss.desperation.text(lang)}\``; + break; + + case 'claim_task': + msg = `${shared.i18n.t('userIsClamingTask', {username: info.user, task: info.task}, lang)}`; + break; + } + + return msg; +} diff --git a/website/server/models/group.js b/website/server/models/group.js index 73791b3f9f..9b846d9af7 100644 --- a/website/server/models/group.js +++ b/website/server/models/group.js @@ -37,7 +37,7 @@ import { } from './subscriptionPlan'; import amazonPayments from '../libs/payments/amazon'; import stripePayments from '../libs/payments/stripe'; -import { getGroupChat } from '../libs/chat/group-chat'; +import { getGroupChat, translateMessage } from '../libs/chat/group-chat'; import { model as UserNotification } from './userNotification'; const questScrolls = shared.content.quests; @@ -333,85 +333,6 @@ schema.statics.getGroups = async function getGroups (options = {}) { return groupsArray; }; -function _translateMessage (lang, info) { - let msg; - let foundText = ''; - let spells = shared.content.spells; - let quests = shared.content.quests; - - switch (info.type) { - case 'quest_start': - msg = `\`${shared.i18n.t('chatQuestStarted', {questName: questScrolls[info.quest].text(lang)}, lang)}\``; - break; - - case 'boss_damage': - msg = `\`${shared.i18n.t('chatBossDamage', {username: info.user, bossName: questScrolls[info.quest].boss.name(lang), userDamage: info.userDamage, bossDamage: info.bossDamage}, lang)}\``; - break; - - case 'boss_dont_attack': - msg = `\`${shared.i18n.t('chatBossDontAttack', {username: info.user, bossName: questScrolls[info.quest].boss.name(lang), userDamage: info.userDamage}, lang)}\``; - break; - - case 'boss_rage': - msg = `\`${questScrolls[info.quest].boss.rage.effect(lang)}\``; - break; - - case 'boss_defeated': - msg = `\`${shared.i18n.t('chatBossDefeated', {bossName: questScrolls[info.quest].boss.name(lang)}, lang)}\``; - break; - - case 'user_found_items': - foundText = _.reduce(info.items, (m, v, k) => { - m.push(`${v} ${questScrolls[info.quest].collect[k].text(lang)}`); - return m; - }, []).join(', '); - msg = `\`${shared.i18n.t('chatFindItems', {username: info.user, items: foundText}, lang)}\``; - break; - - case 'all_items_found': - msg = `\`${shared.i18n.t('chatItemQuestFinish', lang)}\``; - break; - - case 'spell_cast_party': - msg = `\`${shared.i18n.t('chatCastSpellParty', {username: info.user, spell: spells[info.class][info.spell].text(lang)}, lang)}\``; - break; - - case 'spell_cast_user': - msg = `\`${shared.i18n.t('chatCastSpellUser', {username: info.user, spell: spells[info.class][info.spell].text(lang), target: info.target}, lang)}\``; - break; - - case 'quest_cancel': - msg = `\`${shared.i18n.t('chatQuestCancelled', {username: info.user, questName: questScrolls[info.quest].text(lang)}, lang)}\``; - break; - - case 'quest_abort': - msg = `\`${shared.i18n.t('chatQuestAborted', {username: info.user, questName: questScrolls[info.quest].text(lang)}, lang)}\``; - break; - - case 'tavern_quest_completed': - msg = `\`${quests[info.quest].completionChat(lang)}\``; - break; - - case 'tavern_boss_rage_tired': - msg = `\`${shared.i18n.t('tavernBossTired', {rageName: quests[info.quest].boss.rage.title(lang), bossName: quests[info.quest].boss.name(lang)}, lang)}\``; - break; - - case 'tavern_boss_rage': - msg = `\`${quests[info.quest].boss.rage[info.scene](lang)}\``; - break; - - case 'tavern_boss_desperation': - msg = `\`${quests[info.quest].boss.desperation.text(lang)}\``; - break; - - case 'claim_task': - msg = `${shared.i18n.t('userIsClamingTask', {username: info.user, task: info.task}, lang)}`; - break; - } - - return msg; -} - // When converting to json remove chat messages with more than 1 flag and remove all flags info // unless the user is an admin or said chat is posted by that user // Not putting into toJSON because there we can't access user @@ -536,7 +457,7 @@ schema.methods.translateSystemMessages = function translateSystemMessages (user) this.chat.forEach((chat, i, chatArray) => { if (!_.isEmpty(chat.info)) { - chatArray[i].text = _translateMessage(lang, chat.info); + chatArray[i].text = translateMessage(lang, chat.info); } }); };