Skip to content

Commit

Permalink
Add acknowledgements
Browse files Browse the repository at this point in the history
  • Loading branch information
neketka committed Apr 30, 2024
1 parent 59e48d0 commit 5ae38cd
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 21 deletions.
4 changes: 4 additions & 0 deletions server/src/achievement/achievement.gateway.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ export class AchievementGateway {
for (const ach of achs) {
await this.achievementService.emitUpdateAchievementData(ach, false, user);
}

return achs.length;
}

/**
Expand Down Expand Up @@ -107,5 +109,7 @@ export class AchievementGateway {
false,
);
}

return achievement.id;
}
}
11 changes: 9 additions & 2 deletions server/src/challenge/challenge.gateway.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ export class ChallengeGateway {
for (const chal of challenges) {
await this.challengeService.emitUpdateChallengeData(chal, false, user);
}

return challenges.length;
}

// Disabled for now to prevent any cheating
Expand Down Expand Up @@ -102,7 +104,10 @@ export class ChallengeGateway {
user,
'Challenge could not be completed',
);
return false;
}

return true;
}

@SubscribeMessage('updateChallengeData')
Expand All @@ -111,7 +116,7 @@ export class ChallengeGateway {
@CallingUser() user: User,
@MessageBody() data: UpdateChallengeDataDto,
) {
const challenge = await this.challengeService.getChallengeById(
let challenge = await this.challengeService.getChallengeById(
data.challenge.id,
);

Expand All @@ -130,7 +135,7 @@ export class ChallengeGateway {
await this.challengeService.emitUpdateChallengeData(challenge, true);
await this.eventService.emitUpdateEventData(ev, false);
} else {
const challenge = await this.challengeService.upsertChallengeFromDto(
challenge = await this.challengeService.upsertChallengeFromDto(
ability,
data.challenge,
);
Expand All @@ -152,5 +157,7 @@ export class ChallengeGateway {
await this.eventService.emitUpdateEventData(ev, false);
}
}

return challenge.id;
}
}
22 changes: 16 additions & 6 deletions server/src/event/event.gateway.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ export class EventGateway {
for (const ev of evs) {
await this.eventService.emitUpdateEventData(ev, false, user);
}

return evs.length;
}

@SubscribeMessage('requestFilteredEventIds')
Expand All @@ -76,6 +78,8 @@ export class EventGateway {
await this.eventService.emitUpdateEventData(ev, false, user);
}
}

return evs.length;
}

@SubscribeMessage('requestRecommendedEvents')
Expand All @@ -87,6 +91,8 @@ export class EventGateway {
for (const ev of evs) {
await this.eventService.emitUpdateEventData(ev, false, user);
}

return evs.length;
}

@SubscribeMessage('requestEventLeaderData')
Expand All @@ -113,6 +119,8 @@ export class EventGateway {
ev,
user,
);

return Math.min(data.count, 1024);
}

@SubscribeMessage('requestEventTrackerData')
Expand All @@ -127,6 +135,8 @@ export class EventGateway {
for (const tracker of trackers) {
await this.eventService.emitUpdateEventTracker(tracker, user);
}

return trackers.length;
}

@SubscribeMessage('useEventTrackerHint')
Expand All @@ -137,9 +147,10 @@ export class EventGateway {
const tracker = await this.eventService.useEventTrackerHint(user);
if (tracker) {
await this.eventService.emitUpdateEventTracker(tracker, user);
return;
return true;
}
await this.clientService.emitErrorData(user, 'Failed to track used hint!');
return false;
}

@SubscribeMessage('updateEventData')
Expand All @@ -148,7 +159,7 @@ export class EventGateway {
@CallingUser() user: User,
@MessageBody() data: UpdateEventDataDto,
) {
const ev = await this.eventService.getEventById(data.event.id);
let ev = await this.eventService.getEventById(data.event.id);

if (data.deleted) {
if (!ev || !(await this.eventService.removeEvent(ability, ev.id))) {
Expand All @@ -157,10 +168,7 @@ export class EventGateway {
}
await this.eventService.emitUpdateEventData(ev, true);
} else {
const ev = await this.eventService.upsertEventFromDto(
ability,
data.event,
);
ev = await this.eventService.upsertEventFromDto(ability, data.event);

if (!ev) {
await this.clientService.emitErrorData(user, 'Failed to upsert event!');
Expand All @@ -175,5 +183,7 @@ export class EventGateway {
await this.orgService.emitUpdateOrganizationData(org, false);
await this.eventService.emitUpdateEventData(ev, false);
}

return ev.id;
}
}
19 changes: 15 additions & 4 deletions server/src/group/group.gateway.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export class GroupGateway {
) {
const group = await this.groupService.getGroupForUser(user);
await this.groupService.emitUpdateGroupData(group, false, user);
return true;
}

@SubscribeMessage('joinGroup')
Expand All @@ -48,6 +49,7 @@ export class GroupGateway {
) {
const oldGroup = await this.groupService.joinGroup(user, data.groupId);
await this.groupService.updateGroupMembers(user, oldGroup);
return true;
}

@SubscribeMessage('leaveGroup')
Expand All @@ -57,6 +59,7 @@ export class GroupGateway {
) {
const oldGroup = await this.groupService.leaveGroup(user);
await this.groupService.updateGroupMembers(user, oldGroup);
return true;
}

/**
Expand All @@ -70,9 +73,14 @@ export class GroupGateway {
@CallingUser() user: User,
@MessageBody() data: SetCurrentEventDto,
) {
await this.groupService.setCurrentEvent(user, data.eventId);
const group = await this.groupService.getGroupForUser(user);
await this.groupService.emitUpdateGroupData(group, false, user);
const success = await this.groupService.setCurrentEvent(user, data.eventId);

if (success) {
const group = await this.groupService.getGroupForUser(user);
await this.groupService.emitUpdateGroupData(group, false, user);
}

return success;
}

@SubscribeMessage('updateGroupData')
Expand All @@ -87,7 +95,7 @@ export class GroupGateway {
user,
'This group does not exist!',
);
return;
return false;
}

if (data.deleted) {
Expand All @@ -100,6 +108,8 @@ export class GroupGateway {
this.clientService.subscribe(user, group.id);
await this.groupService.emitUpdateGroupData(group, false);
}

return true;
}

@SubscribeMessage('sendGroupInvite')
Expand All @@ -109,5 +119,6 @@ export class GroupGateway {
) {
const group = await this.groupService.getGroupForUser(user);
await this.groupService.emitGroupInvite(group, data.targetUsername, user);
return true;
}
}
12 changes: 7 additions & 5 deletions server/src/organization/organization.gateway.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ export class OrganizationGateway {
for (const org of orgs) {
await this.orgService.emitUpdateOrganizationData(org, false, user);
}

return orgs.length;
}

/**
Expand All @@ -61,12 +63,10 @@ export class OrganizationGateway {
@CallingUser() user: User,
@MessageBody() data: UpdateOrganizationDataDto,
) {
let org = await this.orgService.getOrganizationById(data.organization.id);
if (data.deleted) {
const org = await this.orgService.getOrganizationById(
data.organization.id,
);

if (
!org ||
!(await this.orgService.removeOrganization(
ability,
data.organization.id,
Expand All @@ -80,7 +80,7 @@ export class OrganizationGateway {
}
await this.orgService.emitUpdateOrganizationData(org, true);
} else {
const org = await this.orgService.upsertOrganizationFromDto(
org = await this.orgService.upsertOrganizationFromDto(
ability,
data.organization,
);
Expand All @@ -96,5 +96,7 @@ export class OrganizationGateway {
this.clientService.subscribe(user, org.id);
await this.orgService.emitUpdateOrganizationData(org, false);
}

return org.id;
}
}
5 changes: 3 additions & 2 deletions server/src/organization/organization.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ export class OrganizationService {
}

async getOrganizationById(id: string) {
return await this.prisma.organization.findFirstOrThrow({ where: { id } });
return await this.prisma.organization.findFirst({ where: { id } });
}

async getOrganizationByCode(accessCode: string) {
Expand Down Expand Up @@ -364,7 +364,7 @@ export class OrganizationService {
where: { accessCode: code },
});

if (!org) return;
if (!org) return false;

await this.prisma.organization.update({
where: { id: org.id },
Expand All @@ -375,5 +375,6 @@ export class OrganizationService {
where: { id: user.id },
data: { memberOf: { connect: { id: org.id } } },
});
return true;
}
}
24 changes: 22 additions & 2 deletions server/src/user/user.gateway.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ export class UserGateway {
await this.userService.emitUpdateUserData(us, false, false, user),
),
);

return users.length;
}

@SubscribeMessage('requestUserData')
Expand All @@ -103,10 +105,13 @@ export class UserGateway {
user,
'Error requesting user by id',
);
return false;
}
} else {
await this.userService.emitUpdateUserData(user, false, false, user);
}

return true;
}

@SubscribeMessage('updateUserData')
Expand All @@ -125,6 +130,7 @@ export class UserGateway {
const user = await this.userService.updateUser(ability, data.user);
await this.userService.emitUpdateUserData(user, false, true);
}
return true;
}

@SubscribeMessage('setAuthToDevice')
Expand All @@ -133,6 +139,7 @@ export class UserGateway {
@MessageBody() data: SetAuthToDeviceDto,
) {
await this.userService.setAuthType(user, AuthType.DEVICE, data.deviceId);
return true;
}

@SubscribeMessage('setAuthToOAuth')
Expand All @@ -145,17 +152,20 @@ export class UserGateway {
this.providerToAuthType(data.provider),
data.authId,
);
return true;
}

@SubscribeMessage('banUser')
async banUser(@CallingUser() user: User, @MessageBody() data: BanUserDto) {
if (user.administrator) {
const user = await this.userService.byId(data.userId);
if (!!user) {
if (user) {
const us = await this.userService.banUser(user, data.isBanned);
await this.userService.emitUpdateUserData(us, false, false);
return true;
}
}
return false;
}

@SubscribeMessage('addManager')
Expand All @@ -167,6 +177,7 @@ export class UserGateway {
const org = await this.orgService.getOrganizationById(data.organizationId);

if (
!org ||
!(await this.orgService.addManager(
ability,
data.email,
Expand All @@ -180,19 +191,27 @@ export class UserGateway {
const manager = await this.userService.byEmail(data.email);
await this.clientService.subscribe(manager, org.id);
await this.orgService.emitUpdateOrganizationData(org, false);
return manager.id;
}

@SubscribeMessage('joinOrganization')
async joinOrganization(
@CallingUser() user: User,
@MessageBody() data: JoinOrganizationDto,
) {
await this.orgService.joinOrganization(user, data.accessCode);
const success = await this.orgService.joinOrganization(
user,
data.accessCode,
);

if (!success) return false;

const org = await this.orgService.getOrganizationByCode(data.accessCode);
await this.orgService.emitUpdateOrganizationData(org, false);

await this.userService.emitUpdateUserData(user, false, false);

return true;
}

@SubscribeMessage('closeAccount')
Expand All @@ -205,5 +224,6 @@ export class UserGateway {
await this.userService.setAuthType(user, AuthType.NONE, user.authToken);
await this.userService.deleteUser(ability, user);
await this.groupService.emitUpdateGroupData(group, false);
return true;
}
}

0 comments on commit 5ae38cd

Please sign in to comment.