diff --git a/.changeset/angry-apes-double.md b/.changeset/angry-apes-double.md new file mode 100644 index 0000000000000..458faef378b9c --- /dev/null +++ b/.changeset/angry-apes-double.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/models': patch +'@rocket.chat/meteor': patch +--- + +Enable room search by Cyrillic characters in channel names (e.g. "тест"). diff --git a/apps/meteor/tests/end-to-end/api/rooms.ts b/apps/meteor/tests/end-to-end/api/rooms.ts index a1c29b1d2121d..a4818aa3f71bc 100644 --- a/apps/meteor/tests/end-to-end/api/rooms.ts +++ b/apps/meteor/tests/end-to-end/api/rooms.ts @@ -2120,6 +2120,18 @@ describe('[Rooms]', () => { }); describe('[/rooms.autocomplete.channelAndPrivate]', () => { + let testChannel: IRoom; + + before(async () => { + await updateSetting('UI_Allow_room_names_with_special_chars', true); + testChannel = (await createRoom({ type: 'c', name: 'тест' })).body.channel; + }); + + after(async () => { + await updateSetting('UI_Allow_room_names_with_special_chars', true); + await deleteRoom({ type: 'c', roomId: testChannel._id }); + }); + it('should return an error when the required parameter "selector" is not provided', (done) => { void request .get(api('rooms.autocomplete.channelAndPrivate')) @@ -2146,6 +2158,21 @@ describe('[Rooms]', () => { }) .end(done); }); + it('should return the rooms with cyrillic characters in channel name', (done) => { + void request + .get(api('rooms.autocomplete.channelAndPrivate')) + .query({ selector: '{ "name": "тест" }' }) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('items').and.to.be.an('array'); + expect(res.body.items).to.have.lengthOf(1); + expect(res.body.items[0].fname).to.be.equal('тест'); + }) + .end(done); + }); }); describe('[/rooms.autocomplete.channelAndPrivate.withPagination]', () => { diff --git a/packages/models/src/models/Rooms.ts b/packages/models/src/models/Rooms.ts index 382a67335a664..d236dd0bcf5b8 100644 --- a/packages/models/src/models/Rooms.ts +++ b/packages/models/src/models/Rooms.ts @@ -301,7 +301,7 @@ export class RoomsRaw extends BaseRaw implements IRoomsModel { t: { $in: ['c', 'p'], }, - name: nameRegex, + $and: [{ $or: [{ name: nameRegex }, { fname: nameRegex }] }, { federated: { $ne: true } }, { archived: { $ne: true } }], $or: [ { teamId: { @@ -318,7 +318,6 @@ export class RoomsRaw extends BaseRaw implements IRoomsModel { }, ], prid: { $exists: false }, - $and: [{ federated: { $ne: true } }, { archived: { $ne: true } }], }; return this.find(query, options);