From acf353619fba24b35376e3021a83e8735ec137e6 Mon Sep 17 00:00:00 2001 From: HF Date: Sun, 31 Jan 2021 19:06:44 +0100 Subject: [PATCH] create a channel for every translated language --- src/components/ChannelDropDown.jsx | 2 -- src/core/ChatProvider.js | 36 ++++++++++++++++++++++++++++++ src/core/me.js | 2 +- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/components/ChannelDropDown.jsx b/src/components/ChannelDropDown.jsx index db43164..b0eeb81 100644 --- a/src/components/ChannelDropDown.jsx +++ b/src/components/ChannelDropDown.jsx @@ -89,14 +89,12 @@ const ChannelDropDown = ({ } // latest lastTs first sortChansNew.sort((c1, c2) => { - if (c1[3] === 0) return 0; if (c1[4] > c2[4]) return -1; if (c2[4] > c1[4]) return 1; return 0; }); // unread first sortChansNew.sort((c1, c2) => { - if (c1[3] === 0) return 0; if (c1[1] && !c2[1]) return -1; if (c2[1] && !c1[1]) return 1; return 0; diff --git a/src/core/ChatProvider.js b/src/core/ChatProvider.js index 300f7fb..1841e53 100644 --- a/src/core/ChatProvider.js +++ b/src/core/ChatProvider.js @@ -7,12 +7,14 @@ import RateLimiter from '../utils/RateLimiter'; import { Channel, RegUser, UserChannel } from '../data/models'; import ChatMessageBuffer from './ChatMessageBuffer'; import { cheapDetector } from './isProxy'; +import ttags from './ttag'; import { CHAT_CHANNELS, EVENT_USER_NAME, INFO_USER_NAME } from './constants'; export class ChatProvider { constructor() { this.defaultChannels = {}; + this.langChannels = {}; this.enChannelId = 0; this.intChannelId = 0; this.infoUserId = 1; @@ -71,6 +73,28 @@ export class ChatProvider { lastTs, ]; } + // find or create non-english lang channels + const langs = Object.key(ttags); + for (let i = 0; i < langs; i += 1) { + const name = langs[i]; + if (name === 'default') { + continue; + } + // eslint-disable-next-line no-await-in-loop + const channel = await Channel.findOrCreate({ + where: { name }, + defaults: { + name, + }, + }); + const { id, type, lastTs } = channel[0]; + this.langChannels[name] = { + id, + name, + type, + lastTs, + }; + } // find or create default users let name = INFO_USER_NAME; const infoUser = await RegUser.findOrCreate({ @@ -102,6 +126,18 @@ export class ChatProvider { this.eventUserId = eventUser[0].id; } + getDefaultChannels(lang) { + const { defaultChannels, langChannels } = this; + const channels = { ...defaultChannels }; + if (lang && lang !== 'default' && langChannels[lang]) { + const { + id, name, type, lastTs, + } = langChannels[lang]; + channels[id] = [name, type, lastTs]; + } + return channels; + } + static async addUserToChannel( userId, channelId, diff --git a/src/core/me.js b/src/core/me.js index 4195504..9446756 100644 --- a/src/core/me.js +++ b/src/core/me.js @@ -32,7 +32,7 @@ export default async function getMe(user, lang = 'default') { userdata.canvases = getLocalicedCanvases(lang); userdata.channels = { - ...chatProvider.defaultChannels, + ...chatProvider.getDefaultChannels(lang), ...userdata.channels, };