[IMPROVE] Add team members to channel when set as auto join (#22056)

Co-authored-by: Diego Sampaio <chinello@gmail.com>
pull/22070/head
Gabriel Thomé 4 years ago committed by GitHub
parent 709a2dce02
commit 6c3b103ff2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      server/services/team/service.ts
  2. 57
      tests/end-to-end/api/02-channels.js

@ -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<IUser>): Promise<IRecordsWithTotal<ITeamMemberInfo>> {
async members(uid: string, teamId: string, canSeeAll: boolean, { offset, count }: IPaginationOptions = { offset: 0, count: 50 }, query: FilterQuery<IUser> = {}): Promise<IRecordsWithTotal<ITeamMemberInfo>> {
const isMember = await this.TeamMembersModel.findOneByUserIdAndTeamId(uid, teamId);
if (!isMember && !canSeeAll) {
return {

@ -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);
});
});
});

Loading…
Cancel
Save