diff --git a/server/services/team/service.ts b/server/services/team/service.ts index d1d505d0a1c..e02fdc2b8b4 100644 --- a/server/services/team/service.ts +++ b/server/services/team/service.ts @@ -396,8 +396,8 @@ export class TeamService extends ServiceClass implements ITeamService { throw new Error('invalid-room'); } + const user = await this.Users.findOneById(uid); if (!canUpdateAnyRoom) { - const user = await this.Users.findOneById(uid); const canSeeRoom = await canAccessRoom(room, user); if (!canSeeRoom) { throw new Error('invalid-room'); @@ -409,6 +409,13 @@ export class TeamService extends ServiceClass implements ITeamService { } room.teamDefault = isDefault; this.RoomsModel.setTeamDefaultById(rid, isDefault); + + if (room.teamDefault) { + const teamMembers = await this.members(uid, room.teamId, true, undefined, undefined); + + teamMembers.records.map((m) => addUserToRoom(room._id, m.user, user)); + } + return { ...room, }; @@ -508,7 +515,7 @@ export class TeamService extends ServiceClass implements ITeamService { return this.TeamMembersModel.findByTeamIds(teamIds, options).toArray(); } - async members(uid: string, teamId: string, canSeeAll: boolean, { offset, count }: IPaginationOptions = { offset: 0, count: 50 }, query: FilterQuery): Promise> { + async members(uid: string, teamId: string, canSeeAll: boolean, { offset, count }: IPaginationOptions = { offset: 0, count: 50 }, query: FilterQuery = {}): Promise> { const isMember = await this.TeamMembersModel.findOneByUserIdAndTeamId(uid, teamId); if (!isMember && !canSeeAll) { return { diff --git a/tests/end-to-end/api/02-channels.js b/tests/end-to-end/api/02-channels.js index 3651971f15a..c39daffa495 100644 --- a/tests/end-to-end/api/02-channels.js +++ b/tests/end-to-end/api/02-channels.js @@ -1598,4 +1598,61 @@ describe('[Channels]', function() { .end(done); }); }); + + describe.skip('/channels.setAutojoin', () => { + // let testTeam; + let testChannel; + // let testUser1; + // let testUser2; + before(async () => { + const teamCreateRes = await request.post(api('teams.create')) + .set(credentials) + .send({ name: `team-${ Date.now() }` }); + + const { team } = teamCreateRes.body; + + const user1 = await createUser(); + const user2 = await createUser(); + + const channelCreateRes = await request.post(api('channels.create')) + .set(credentials) + .send({ + name: `team-channel-${ Date.now() }`, + extraData: { + teamId: team._id, + }, + }); + + const { channel } = channelCreateRes.body; + + // testTeam = team; + testChannel = channel; + // testUser1 = user1; + // testUser2 = user2; + + await request.post(api('teams.addMembers')) + .set(credentials) + .send({ + name: team.name, + members: [{ userId: user1._id }, { userId: user2._id }], + }); + }); + + it('should add all existing team members', async () => { + const resAutojoin = await request.post(api('channels.setAutojoin')) + .set(credentials) + .send({ roomName: testChannel.name, autojoin: true }) + .expect(200); + expect(resAutojoin.body).to.have.a.property('success', true); + + const channelInfoResponse = await request.get(api('channels.info')) + .set(credentials) + .query({ roomId: testChannel._id }); + const { channel } = channelInfoResponse.body; + + console.log('channel: ', channel); + + return expect(channel.usersCount).to.be.equals(3); + }); + }); });