Skip to content

Commit c67643d

Browse files
authored
Merge branch 'develop' into chore/openapi-migrate-mailer-endpoints
2 parents 4ea406f + 2031ba8 commit c67643d

File tree

157 files changed

+2432
-1933
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

157 files changed

+2432
-1933
lines changed

.changeset/eighty-experts-sort.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@rocket.chat/ui-voip': patch
3+
'@rocket.chat/meteor': patch
4+
---
5+
6+
Fixes empty notifications sent when a voice call ends

.changeset/nasty-tomatoes-bake.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@rocket.chat/meteor': patch
3+
---
4+
5+
Fixes an issue where the outlook calendar action isn't being reactive based on the setting

.changeset/tidy-pillows-eat.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@rocket.chat/i18n': patch
3+
'@rocket.chat/meteor': patch
4+
---
5+
6+
Adds error feedback when clicking on a mentioned room you don't have access to

apps/meteor/app/api/server/v1/settings.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
TwitterOAuthConfiguration,
77
OAuthConfiguration,
88
} from '@rocket.chat/core-typings';
9-
import { isSettingAction, isSettingColor } from '@rocket.chat/core-typings';
9+
import { isActionSettingWithEndpoint, isSettingAction, isSettingColor } from '@rocket.chat/core-typings';
1010
import { LoginServiceConfiguration as LoginServiceConfigurationModel, Settings } from '@rocket.chat/models';
1111
import {
1212
ajv,
@@ -348,7 +348,12 @@ API.v1.post(
348348

349349
const { bodyParams } = this;
350350

351-
if (isSettingAction(setting) && isSettingsUpdatePropsActions(bodyParams) && bodyParams.execute) {
351+
if (
352+
isSettingAction(setting) &&
353+
isSettingsUpdatePropsActions(bodyParams) &&
354+
bodyParams.execute &&
355+
!isActionSettingWithEndpoint(setting.value)
356+
) {
352357
await Meteor.callAsync(setting.value);
353358
return API.v1.success();
354359
}

apps/meteor/app/lib/server/functions/sendMessage.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ import { afterSaveMessage } from '../lib/afterSaveMessage';
1313
import { notifyOnRoomChangedById } from '../lib/notifyListener';
1414
import { validateCustomMessageFields } from '../lib/validateCustomMessageFields';
1515

16-
type SendMessageOptions = {
16+
export type SendMessageOptions = {
1717
upsert?: boolean;
1818
previewUrls?: string[];
19+
skipNotifications?: boolean;
1920
};
2021

2122
// TODO: most of the types here are wrong, but I don't want to change them now
@@ -289,7 +290,7 @@ export const sendMessage = async function (user: any, message: any, room: any, o
289290
void Apps.self?.triggerEvent(messageEvent, message);
290291
}
291292

292-
await afterSaveMessage(message, room, user);
293+
await afterSaveMessage(message, room, user, { options });
293294

294295
void notifyOnRoomChangedById(message.rid);
295296

apps/meteor/app/lib/server/lib/afterSaveMessage.ts

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,28 @@ import type { Updater } from '@rocket.chat/models';
44
import { Rooms } from '@rocket.chat/models';
55

66
import { callbacks } from '../../../../server/lib/callbacks';
7-
8-
export async function afterSaveMessage(message: IMessage, room: IRoom, user: IUser, roomUpdater?: Updater<IRoom>): Promise<IMessage> {
7+
import type { SendMessageOptions } from '../functions/sendMessage';
8+
9+
export async function afterSaveMessage(
10+
message: IMessage,
11+
room: IRoom,
12+
user: IUser,
13+
{
14+
roomUpdater,
15+
options,
16+
}: {
17+
roomUpdater?: Updater<IRoom>;
18+
options?: SendMessageOptions;
19+
} = {},
20+
): Promise<IMessage> {
921
const updater = roomUpdater ?? Rooms.getUpdater();
10-
const data: IMessage = (await callbacks.run('afterSaveMessage', message, { room, user, roomUpdater: updater })) as unknown as IMessage;
22+
23+
const data: IMessage = (await callbacks.run('afterSaveMessage', message, {
24+
room,
25+
user,
26+
roomUpdater: updater,
27+
options,
28+
})) as unknown as IMessage;
1129

1230
if (!roomUpdater && updater.hasChanges()) {
1331
await Rooms.updateFromUpdater({ _id: room._id }, updater);
@@ -19,8 +37,21 @@ export async function afterSaveMessage(message: IMessage, room: IRoom, user: IUs
1937
return data;
2038
}
2139

22-
export function afterSaveMessageAsync(message: IMessage, room: IRoom, user: IUser, roomUpdater: Updater<IRoom> = Rooms.getUpdater()): void {
23-
callbacks.runAsync('afterSaveMessage', message, { room, user, roomUpdater });
40+
export function afterSaveMessageAsync(
41+
message: IMessage,
42+
room: IRoom,
43+
user: IUser,
44+
{
45+
roomUpdater: updater,
46+
options,
47+
}: {
48+
roomUpdater?: Updater<IRoom>;
49+
options?: SendMessageOptions;
50+
} = {},
51+
): void {
52+
const roomUpdater = updater ?? Rooms.getUpdater();
53+
54+
callbacks.runAsync('afterSaveMessage', message, { room, user, roomUpdater, options });
2455

2556
if (roomUpdater.hasChanges()) {
2657
void Rooms.updateFromUpdater({ _id: room._id }, roomUpdater);

apps/meteor/app/lib/server/lib/sendNotificationsOnMessage.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,13 @@ settings.watch('Troubleshoot_Disable_Notifications', (value) => {
417417

418418
callbacks.add(
419419
'afterSaveMessage',
420-
(message, { room }) => sendAllNotifications(message, room),
420+
(message, { room, options }) => {
421+
if (options?.skipNotifications) {
422+
return message;
423+
}
424+
425+
return sendAllNotifications(message, room);
426+
},
421427
callbacks.priority.LOW,
422428
'sendNotificationsOnMessage',
423429
);

apps/meteor/app/threads/server/hooks/aftersavemessage.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Messages } from '@rocket.chat/models';
44
import { Meteor } from 'meteor/meteor';
55

66
import { callbacks } from '../../../../server/lib/callbacks';
7+
import type { SendMessageOptions } from '../../../lib/server/functions/sendMessage';
78
import { notifyOnMessageChange } from '../../../lib/server/lib/notifyListener';
89
import { updateThreadUsersSubscriptions, getMentions } from '../../../lib/server/lib/notifyUsersOnMessage';
910
import { sendMessageNotifications } from '../../../lib/server/lib/sendNotificationsOnMessage';
@@ -39,7 +40,7 @@ const notification = async (message: IMessage, room: IRoom, replies: string[]) =
3940
return message;
4041
};
4142

42-
export async function processThreads(message: IMessage, room: IRoom) {
43+
export async function processThreads(message: IMessage, room: IRoom, options?: SendMessageOptions) {
4344
if (!message.tmid) {
4445
return message;
4546
}
@@ -61,7 +62,9 @@ export async function processThreads(message: IMessage, room: IRoom) {
6162

6263
await notifyUsersOnReply(message, replies);
6364
await metaData(message, parentMessage, replies);
64-
await notification(message, room, replies);
65+
if (!options?.skipNotifications) {
66+
await notification(message, room, replies);
67+
}
6568
void notifyOnMessageChange({
6669
id: message.tmid,
6770
});
@@ -77,8 +80,8 @@ Meteor.startup(() => {
7780
}
7881
callbacks.add(
7982
'afterSaveMessage',
80-
async (message, { room }) => {
81-
return processThreads(message, room);
83+
async (message, { room, options }) => {
84+
return processThreads(message, room, options);
8285
},
8386
callbacks.priority.LOW,
8487
'threads-after-save-message',

apps/meteor/client/components/ImageGallery/ImageGallery.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { IUpload } from '@rocket.chat/core-typings';
22
import { css } from '@rocket.chat/css-in-js';
3-
import { Box, ButtonGroup, IconButton, Palette, PaletteStyleTag, Throbber, padding } from '@rocket.chat/fuselage';
3+
import { Box, ButtonGroup, IconButton, Palette, PaletteStyleTag, Throbber, spacing } from '@rocket.chat/fuselage';
44
import { useRef, useState } from 'react';
55
import { FocusScope } from 'react-aria';
66
import { createPortal } from 'react-dom';
@@ -33,7 +33,7 @@ const swiperStyle = css`
3333
}
3434
3535
.swiper-slide {
36-
padding: ${padding('x144')} ${padding('x60')} ${padding('x96')};
36+
padding: ${spacing('x144')} ${spacing('x60')} ${spacing('x96')};
3737
}
3838
3939
.rcx-swiper-prev-button,

apps/meteor/client/components/UserInfo/UserInfo.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
} from '@rocket.chat/ui-client';
1515
import type { TranslationKey } from '@rocket.chat/ui-contexts';
1616
import type { ReactElement, ReactNode } from 'react';
17-
import { memo } from 'react';
17+
import { memo, useId } from 'react';
1818
import { useTranslation } from 'react-i18next';
1919

2020
import { useTimeAgo } from '../../hooks/useTimeAgo';
@@ -84,6 +84,8 @@ const UserInfo = ({
8484
const userDisplayName = useUserDisplayName({ name, username });
8585
const userCustomFields = useUserCustomFields(customFields);
8686

87+
const usernameId = useId();
88+
8789
return (
8890
<ContextualbarScrollableContent p={24} {...props}>
8991
<InfoPanel>
@@ -128,9 +130,13 @@ const UserInfo = ({
128130
)}
129131

130132
{username && username !== name && (
131-
<InfoPanelField>
132-
<InfoPanelLabel>{t('Username')}</InfoPanelLabel>
133-
<InfoPanelText data-qa='UserInfoUserName'>{username}</InfoPanelText>
133+
<InfoPanelField is='dl'>
134+
<InfoPanelLabel is='dt' id={usernameId}>
135+
{t('Username')}
136+
</InfoPanelLabel>
137+
<InfoPanelText is='dd' aria-labelledby={usernameId}>
138+
{username}
139+
</InfoPanelText>
134140
</InfoPanelField>
135141
)}
136142

0 commit comments

Comments
 (0)