From 68a09a82fae34a7d072f0183f93e33fc1001f491 Mon Sep 17 00:00:00 2001 From: Dave Koo Date: Tue, 13 Oct 2020 13:22:18 -0700 Subject: [PATCH 1/7] 1689 - missing user name for status messages --- app/containers/message/Content.js | 21 ++++++++++++++++++--- app/containers/message/Message.js | 2 +- app/containers/message/User.js | 23 +++++++++++++++++++++-- app/containers/message/utils.js | 26 ++++++++++++++++++++++---- 4 files changed, 62 insertions(+), 10 deletions(-) diff --git a/app/containers/message/Content.js b/app/containers/message/Content.js index 563c9ee984..b4c0bbf152 100644 --- a/app/containers/message/Content.js +++ b/app/containers/message/Content.js @@ -6,7 +6,8 @@ import equal from 'deep-equal'; import I18n from '../../i18n'; import styles from './styles'; import Markdown from '../markdown'; -import { getInfoMessage } from './utils'; +import User from './User'; +import { getInfoMessage, SYSTEM_MESSAGE_TYPES_WITH_AUTHOR_NAME } from './utils'; import { themes } from '../../constants/colors'; import MessageContext from './Context'; import Encrypted from './Encrypted'; @@ -15,13 +16,27 @@ import { E2E_MESSAGE_TYPE } from '../../lib/encryption/constants'; const Content = React.memo((props) => { if (props.isInfo) { const infoMessage = getInfoMessage({ ...props }); - return ( + + const renderMessageContent = ( {infoMessage} + > + {infoMessage} + + ); + + const renderMessageContentWithAuthorName = ( + + {renderMessageContent} ); + + if (SYSTEM_MESSAGE_TYPES_WITH_AUTHOR_NAME.includes(props.type)) { + return renderMessageContentWithAuthorName; + } + + return renderMessageContent; } const isPreview = props.tmid && !props.isThreadRoom; diff --git a/app/containers/message/Message.js b/app/containers/message/Message.js index ef356c231f..31e85b8924 100644 --- a/app/containers/message/Message.js +++ b/app/containers/message/Message.js @@ -68,7 +68,7 @@ const Message = React.memo((props) => { return ( {thread} - + { if (isHeader || hasError) { const navParam = { @@ -48,6 +53,19 @@ const User = React.memo(({ const aliasUsername = alias ? ( @{username}) : null; const time = moment(ts).format(timeFormat); + if (SYSTEM_MESSAGE_TYPES_WITH_AUTHOR_NAME.includes(type)) { + return ( + navToRoomInfo(navParam)} + disabled={author._id === user.id} + style={[styles.usernameInfoMessage, { color: themes[theme].titleText }]} + > + {alias || username} + {aliasUsername} + + ); + } + return ( { @@ -60,9 +78,9 @@ export const getInfoMessage = ({ if (type === 'rm') { return I18n.t('Message_removed'); } else if (type === 'uj') { - return I18n.t('Has_joined_the_channel'); + return I18n.t('Has_joined_the_channel').toLowerCase(); } else if (type === 'ut') { - return I18n.t('Has_joined_the_conversation'); + return I18n.t('Has_joined_the_conversation').toLowerCase(); } else if (type === 'r') { return I18n.t('Room_name_changed', { name: msg, userBy: username }); } else if (type === 'message_pinned') { @@ -70,7 +88,7 @@ export const getInfoMessage = ({ } else if (type === 'jitsi_call_started') { return I18n.t('Started_call', { userBy: username }); } else if (type === 'ul') { - return I18n.t('Has_left_the_channel'); + return I18n.t('Has_left_the_channel').toLowerCase(); } else if (type === 'ru') { return I18n.t('User_removed_by', { userRemoved: msg, userBy: username }); } else if (type === 'au') { @@ -92,7 +110,7 @@ export const getInfoMessage = ({ } else if (type === 'room_changed_privacy') { return I18n.t('Room_changed_privacy', { type: msg, userBy: username }); } else if (type === 'message_snippeted') { - return I18n.t('Created_snippet'); + return I18n.t('Created_snippet').toLowerCase(); } return ''; }; From dc0c3ce47d56e3c637d37ffff8df9ea9168ea4a6 Mon Sep 17 00:00:00 2001 From: Dave Koo Date: Wed, 14 Oct 2020 13:32:04 -0700 Subject: [PATCH 2/7] 1689 - missing user name for status messages. Fixed broken e2e test "should pin message". --- e2e/tests/room/02-room.spec.js | 36 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/e2e/tests/room/02-room.spec.js b/e2e/tests/room/02-room.spec.js index 224c8c9fb6..de6340fc0b 100644 --- a/e2e/tests/room/02-room.spec.js +++ b/e2e/tests/room/02-room.spec.js @@ -135,23 +135,23 @@ describe('Room screen', () => { await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); await element(by.label('Permalink')).tap(); - + // TODO: test clipboard }); - + it('should copy message', async() => { await element(by.label(`${ data.random }message`)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); await element(by.id('action-sheet-handle')).swipe('up', 'fast', 0.5); await element(by.label('Copy')).tap(); - + // TODO: test clipboard }); - + it('should star message', async() => { await starMessage('message') - + await sleep(1000) //https://github.com/RocketChat/Rocket.Chat.ReactNative/issues/2324 await element(by.label(`${ data.random }message`)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); @@ -160,7 +160,7 @@ describe('Room screen', () => { await waitFor(element(by.label('Unstar'))).toBeVisible().withTimeout(2000); await element(by.id('action-sheet-backdrop')).tap(); }); - + it('should react to message', async() => { await element(by.label(`${ data.random }message`)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); @@ -183,7 +183,7 @@ describe('Room screen', () => { await element(by.id('message-actions-emoji-+1')).tap(); await waitFor(element(by.id('message-reaction-:+1:'))).toBeVisible().withTimeout(60000); }); - + it('should show reaction picker on add reaction button pressed and have frequently used emoji', async() => { await element(by.id('message-add-reaction')).tap(); await waitFor(element(by.id('reaction-picker'))).toExist().withTimeout(2000); @@ -197,12 +197,12 @@ describe('Room screen', () => { it('should ask for review', async() => { await dismissReviewNag() //TODO: Create a proper test for this elsewhere. }) - + it('should remove reaction', async() => { await element(by.id('message-reaction-:grinning:')).tap(); await waitFor(element(by.id('message-reaction-:grinning:'))).toBeNotVisible().withTimeout(60000); }); - + it('should edit message', async() => { await mockMessage('edit'); await element(by.label(`${ data.random }edit`)).atIndex(0).longPress(); @@ -214,7 +214,7 @@ describe('Room screen', () => { await element(by.id('messagebox-send-message')).tap(); await waitFor(element(by.label(`${ data.random }edited (edited)`)).atIndex(0)).toExist().withTimeout(60000); }); - + it('should quote message', async() => { await mockMessage('quote'); await element(by.label(`${ data.random }quote`)).atIndex(0).longPress(); @@ -224,16 +224,16 @@ describe('Room screen', () => { await element(by.label('Quote')).tap(); await element(by.id('messagebox-input')).typeText(`${ data.random }quoted`); await element(by.id('messagebox-send-message')).tap(); - + // TODO: test if quote was sent }); - + it('should pin message', async() => { await mockMessage('pin') await pinMessage('pin') - + await waitFor(element(by.label(`${ data.random }pin`)).atIndex(0)).toBeVisible().withTimeout(2000); - await waitFor(element(by.label('Message pinned')).atIndex(0)).toBeVisible().withTimeout(2000); + await waitFor(element(by.label(`${ data.users.regular.username } Message pinned`)).atIndex(0)).toBeVisible().withTimeout(2000); await element(by.label(`${ data.random }pin`)).atIndex(0).longPress(); await waitFor(element(by.id('action-sheet'))).toExist().withTimeout(1000); await expect(element(by.id('action-sheet-handle'))).toBeVisible(); @@ -298,10 +298,10 @@ describe('Room screen', () => { }); it('should navigate to thread from thread name', async() => { - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); - await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); + await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ mainRoom }`)))).toBeVisible().withTimeout(2000); + await waitFor(element(by.id('room-view-header-actions').and(by.label(`${ data.random }thread`)))).toBeNotVisible().withTimeout(2000); await sleep(500) //TODO: Find a better way to wait for the animation to finish and the messagebox-input to be available and usable :( - + await mockMessage('dummymessagebetweenthethread'); await element(by.label(thread)).atIndex(0).longPress(); await expect(element(by.id('action-sheet'))).toExist(); @@ -343,4 +343,4 @@ describe('Room screen', () => { // await expect(element(by.id('rooms-list-view'))).toExist(); // }); }); -}); \ No newline at end of file +}); From 39d23f50b5587cdcce7378ccd97170c77876db33 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Tue, 1 Dec 2020 15:31:22 -0300 Subject: [PATCH 3/7] Minor tweak --- app/containers/message/Content.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/app/containers/message/Content.js b/app/containers/message/Content.js index e1c6290183..c963fed5c4 100644 --- a/app/containers/message/Content.js +++ b/app/containers/message/Content.js @@ -26,14 +26,12 @@ const Content = React.memo((props) => { ); - const renderMessageContentWithAuthorName = ( - - {renderMessageContent} - - ); - if (SYSTEM_MESSAGE_TYPES_WITH_AUTHOR_NAME.includes(props.type)) { - return renderMessageContentWithAuthorName; + return ( + + {renderMessageContent} + + ); } return renderMessageContent; From f98cdb9b6aa7f279c8eb5ef21b237c99fa58bc1f Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Tue, 1 Dec 2020 15:35:39 -0300 Subject: [PATCH 4/7] Remove center style --- app/containers/message/Message.js | 2 +- app/containers/message/styles.js | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/containers/message/Message.js b/app/containers/message/Message.js index 0c7075ead4..bb59dbee0b 100644 --- a/app/containers/message/Message.js +++ b/app/containers/message/Message.js @@ -68,7 +68,7 @@ const Message = React.memo((props) => { return ( {thread} - + Date: Tue, 1 Dec 2020 15:43:47 -0300 Subject: [PATCH 5/7] Small refactor on User --- app/containers/message/User.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/containers/message/User.js b/app/containers/message/User.js index 98b21cb55d..cd4559b429 100644 --- a/app/containers/message/User.js +++ b/app/containers/message/User.js @@ -52,16 +52,24 @@ const User = React.memo(({ const username = (useRealName && author.name) || author.username; const aliasUsername = alias ? ( @{username}) : null; const time = moment(ts).format(timeFormat); + const onUserPress = () => navToRoomInfo(navParam); + const isDisabled = author._id === user.id; + + const textContent = ( + <> + {alias || username} + {aliasUsername} + + ); if (SYSTEM_MESSAGE_TYPES_WITH_AUTHOR_NAME.includes(type)) { return ( navToRoomInfo(navParam)} - disabled={author._id === user.id} style={[styles.usernameInfoMessage, { color: themes[theme].titleText }]} + onPress={onUserPress} + disabled={isDisabled} > - {alias || username} - {aliasUsername} + {textContent} ); } @@ -70,12 +78,11 @@ const User = React.memo(({ navToRoomInfo(navParam)} - disabled={author._id === user.id} + onPress={onUserPress} + disabled={isDisabled} > - {alias || username} - {aliasUsername} + {textContent} {time} From f65345dbcdcd7954e0ce64640b4553982240d705 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Tue, 1 Dec 2020 15:48:36 -0300 Subject: [PATCH 6/7] Remove toLowerCase --- app/containers/message/utils.js | 8 ++++---- app/i18n/locales/en.js | 8 ++++---- app/i18n/locales/es-ES.js | 8 ++++---- app/i18n/locales/fr.js | 8 ++++---- app/i18n/locales/nl.js | 8 ++++---- app/i18n/locales/pt-BR.js | 8 ++++---- app/i18n/locales/pt-PT.js | 8 ++++---- app/i18n/locales/ru.js | 8 ++++---- 8 files changed, 32 insertions(+), 32 deletions(-) diff --git a/app/containers/message/utils.js b/app/containers/message/utils.js index 9e9d4e4675..325d3d764c 100644 --- a/app/containers/message/utils.js +++ b/app/containers/message/utils.js @@ -65,9 +65,9 @@ export const getInfoMessage = ({ if (type === 'rm') { return I18n.t('Message_removed'); } else if (type === 'uj') { - return I18n.t('Has_joined_the_channel').toLowerCase(); + return I18n.t('Has_joined_the_channel'); } else if (type === 'ut') { - return I18n.t('Has_joined_the_conversation').toLowerCase(); + return I18n.t('Has_joined_the_conversation'); } else if (type === 'r') { return I18n.t('Room_name_changed', { name: msg, userBy: username }); } else if (type === 'message_pinned') { @@ -75,7 +75,7 @@ export const getInfoMessage = ({ } else if (type === 'jitsi_call_started') { return I18n.t('Started_call', { userBy: username }); } else if (type === 'ul') { - return I18n.t('Has_left_the_channel').toLowerCase(); + return I18n.t('Has_left_the_channel'); } else if (type === 'ru') { return I18n.t('User_removed_by', { userRemoved: msg, userBy: username }); } else if (type === 'au') { @@ -99,7 +99,7 @@ export const getInfoMessage = ({ } else if (type === 'room_changed_avatar') { return I18n.t('Room_changed_avatar', { userBy: username }); } else if (type === 'message_snippeted') { - return I18n.t('Created_snippet').toLowerCase(); + return I18n.t('Created_snippet'); } return ''; }; diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js index 6feb764f13..cbc2260986 100644 --- a/app/i18n/locales/en.js +++ b/app/i18n/locales/en.js @@ -167,7 +167,7 @@ export default { Create_Channel: 'Create Channel', Create_Direct_Messages: 'Create Direct Messages', Create_Discussion: 'Create Discussion', - Created_snippet: 'Created a snippet', + Created_snippet: 'created a snippet', Create_a_new_workspace: 'Create a new workspace', Create: 'Create', Custom_Status: 'Custom Status', @@ -247,9 +247,9 @@ export default { Group_by_favorites: 'Group favorites', Group_by_type: 'Group by type', Hide: 'Hide', - Has_joined_the_channel: 'Has joined the channel', - Has_joined_the_conversation: 'Has joined the conversation', - Has_left_the_channel: 'Has left the channel', + Has_joined_the_channel: 'has joined the channel', + Has_joined_the_conversation: 'has joined the conversation', + Has_left_the_channel: 'has left the channel', Hide_System_Messages: 'Hide System Messages', Hide_type_messages: 'Hide "{{type}}" messages', How_It_Works: 'How It Works', diff --git a/app/i18n/locales/es-ES.js b/app/i18n/locales/es-ES.js index 340a705a50..2f20da3baf 100644 --- a/app/i18n/locales/es-ES.js +++ b/app/i18n/locales/es-ES.js @@ -146,7 +146,7 @@ export default { Whats_the_password_for_your_certificate: '¿Cuál es la contraseña de tu cerficiado?', Create_account: 'Crear una cuenta', Create_Channel: 'Crear Sala', - Created_snippet: 'Crear snippet', + Created_snippet: 'crear snippet', Create_a_new_workspace: 'Crear un Workspace', Create: 'Crear', Dark: 'Óscuro', @@ -192,9 +192,9 @@ export default { Group_by_favorites: 'Agrupar por favoritos', Group_by_type: 'Agrupar por tipo', Hide: 'Ocultar', - Has_joined_the_channel: 'Se ha unido al canal', - Has_joined_the_conversation: 'Se ha unido a la conversación', - Has_left_the_channel: 'Ha dejado el canal', + Has_joined_the_channel: 'se ha unido al canal', + Has_joined_the_conversation: 'se ha unido a la conversación', + Has_left_the_channel: 'ha dejado el canal', In_App_And_Desktop: 'In-app and Desktop', In_App_and_Desktop_Alert_info: 'Muestra un banner en la parte superior de la pantalla cuando la aplicación está abierta y muestra una notificación en el escritorio', Invisible: 'Invisible', diff --git a/app/i18n/locales/fr.js b/app/i18n/locales/fr.js index b76559ada1..f20872228e 100644 --- a/app/i18n/locales/fr.js +++ b/app/i18n/locales/fr.js @@ -163,7 +163,7 @@ export default { Create_Channel: 'Créer un canal', Create_Direct_Messages: 'Créer un message direct', Create_Discussion: 'Créer une Discussion', - Created_snippet: 'Créé un extrait', + Created_snippet: 'créé un extrait', Create_a_new_workspace: 'Créer un nouvel espace de travail', Create: 'Créer', Custom_Status: 'Statut Personnalisé', @@ -225,9 +225,9 @@ export default { Group_by_favorites: 'Grouper par favoris', Group_by_type: 'Grouper par type', Hide: 'Cacher', - Has_joined_the_channel: 'A rejoint le canal', - Has_joined_the_conversation: 'A rejoint la conversation', - Has_left_the_channel: 'A quitté la chaîne', + Has_joined_the_channel: 'a rejoint le canal', + Has_joined_the_conversation: 'a rejoint la conversation', + Has_left_the_channel: 'a quitté la chaîne', Hide_System_Messages: 'Masquer les messages système', Hide_type_messages: 'Masquer les messages "{{type}}"', Message_HideType_uj: 'L\'utilisateur a rejoint', diff --git a/app/i18n/locales/nl.js b/app/i18n/locales/nl.js index 892c3b354f..40a366b47c 100644 --- a/app/i18n/locales/nl.js +++ b/app/i18n/locales/nl.js @@ -148,7 +148,7 @@ export default { Whats_the_password_for_your_certificate: 'Wat is het wachtwoord voor je certificate?', Create_account: 'Maak een account', Create_Channel: 'Maak een kanaal', - Created_snippet: 'Snippet gemaakt', + Created_snippet: 'snippet gemaakt', Create_a_new_workspace: 'Een nieuwe workspace maken', Create: 'Maken', Dark: 'Donker', @@ -197,9 +197,9 @@ export default { Group_by_favorites: 'Sorteer op favorieten', Group_by_type: 'Sorteer op type', Hide: 'Verberg', - Has_joined_the_channel: 'Is bij het kanaal gekomen', - Has_joined_the_conversation: 'Neemt deel aan het gesprek', - Has_left_the_channel: 'Heeft het kanaal verlaten', + Has_joined_the_channel: 'is bij het kanaal gekomen', + Has_joined_the_conversation: 'neemt deel aan het gesprek', + Has_left_the_channel: 'heeft het kanaal verlaten', In_App_And_Desktop: 'In-app en Desktop', In_App_and_Desktop_Alert_info: 'Laat een banner bovenaan het scherm zien als de app open is en geeft een notificatie op de desktop', Invisible: 'Onzichtbaar', diff --git a/app/i18n/locales/pt-BR.js b/app/i18n/locales/pt-BR.js index 3625120787..e9625e9643 100644 --- a/app/i18n/locales/pt-BR.js +++ b/app/i18n/locales/pt-BR.js @@ -167,7 +167,7 @@ export default { Create_Channel: 'Criar Canal', Create_Direct_Messages: 'Criar Mensagens Diretas', Create_Discussion: 'Criar Discussão', - Created_snippet: 'Criou um snippet', + Created_snippet: 'criou um snippet', Create_a_new_workspace: 'Criar nova área de trabalho', Create: 'Criar', Dark: 'Escuro', @@ -241,9 +241,9 @@ export default { Generate_New_Link: 'Gerar novo convite', Group_by_favorites: 'Agrupar favoritos', Group_by_type: 'Agrupar por tipo', - Has_joined_the_channel: 'Entrou no canal', - Has_joined_the_conversation: 'Entrou na conversa', - Has_left_the_channel: 'Saiu da conversa', + Has_joined_the_channel: 'entrou no canal', + Has_joined_the_conversation: 'entrou na conversa', + Has_left_the_channel: 'saiu da conversa', Hide_System_Messages: 'Esconder mensagens do sistema', Hide_type_messages: 'Esconder mensagens de "{{type}}"', Message_HideType_uj: 'Utilizador Entrou', diff --git a/app/i18n/locales/pt-PT.js b/app/i18n/locales/pt-PT.js index b63fcb0959..7e9896ccfa 100644 --- a/app/i18n/locales/pt-PT.js +++ b/app/i18n/locales/pt-PT.js @@ -130,7 +130,7 @@ export default { Permalink: 'Link permanente', Create_account: 'Criar uma conta', Create_Channel: 'Criar Canal', - Created_snippet: 'Criado um extracto', + Created_snippet: 'criado um extracto', Create_a_new_workspace: 'Criar um novo espaço de trabalho', Create: 'Criar', Delete_Room_Warning: 'Apagar uma sala irá remover todas as mensagens contidas nela. Isto não pode ser desfeito.', @@ -163,9 +163,9 @@ export default { Forgot_Password: 'Esquecer Palavra-passe', Group_by_favorites: 'Agrupar por favoritos', Group_by_type: 'Agrupar por tipo', - Has_joined_the_channel: 'Entrou no canal', - Has_joined_the_conversation: 'Entrou na conversa', - Has_left_the_channel: 'Saiu do canal', + Has_joined_the_channel: 'entrou no canal', + Has_joined_the_conversation: 'entrou na conversa', + Has_left_the_channel: 'saiu do canal', Invisible: 'Invisível', Invite: 'Convidar', is_a_valid_RocketChat_instance: 'é uma instância válida do Rocket.Chat', diff --git a/app/i18n/locales/ru.js b/app/i18n/locales/ru.js index 317007a39c..6b82d19687 100644 --- a/app/i18n/locales/ru.js +++ b/app/i18n/locales/ru.js @@ -167,7 +167,7 @@ export default { Create_Channel: 'Создать канал', Create_Direct_Messages: 'Создать личное сообщение', Create_Discussion: 'Создать обсуждение', - Created_snippet: 'Создать сниппет', + Created_snippet: 'создать сниппет', Create_a_new_workspace: 'Новое рабочее пространство', Create: 'Создать', Custom_Status: 'Персонализированный Статус', @@ -247,9 +247,9 @@ export default { Group_by_favorites: 'По избранным', Group_by_type: 'По типу', Hide: 'Скрыть', - Has_joined_the_channel: 'Присоединился к каналу', - Has_joined_the_conversation: 'Присоединился к беседе', - Has_left_the_channel: 'Покинул канал', + Has_joined_the_channel: 'присоединился к каналу', + Has_joined_the_conversation: 'присоединился к беседе', + Has_left_the_channel: 'покинул канал', Hide_System_Messages: 'Скрыть Системные Сообщения', Hide_type_messages: 'Скрыть "{{type}}" сообщения', How_It_Works: 'Как Это Работает', From 182bbd11a160bd22f1eeecc2add5c9c0e5cdbe92 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Tue, 1 Dec 2020 15:50:04 -0300 Subject: [PATCH 7/7] Update tests --- .../__snapshots__/Storyshots.test.js.snap | 585 ++++++++---------- 1 file changed, 261 insertions(+), 324 deletions(-) diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index c2fc967436..f247b28deb 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -17387,14 +17387,9 @@ exports[`Storyshots Message list message 1`] = ` - - Message removed + + + diego.mello + + + + Message removed + @@ -42139,14 +42082,9 @@ exports[`Storyshots Message list message 1`] = ` > - - Has joined the channel + + + diego.mello + + + + has joined the channel + @@ -42306,14 +42267,9 @@ exports[`Storyshots Message list message 1`] = ` > - - Message pinned + + + diego.mello + + + + Message pinned + @@ -42640,14 +42614,9 @@ exports[`Storyshots Message list message 1`] = ` > - - Has left the channel + + + diego.mello + + + + has left the channel + @@ -42807,14 +42799,9 @@ exports[`Storyshots Message list message 1`] = ` >