Skip to content

Commit 75e7504

Browse files
committed
start working on calendar things
1 parent 90096b4 commit 75e7504

1 file changed

Lines changed: 10 additions & 49 deletions

File tree

Lines changed: 10 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,31 @@
1-
import { api } from '@rocket.chat/core-services';
1+
import { Presence } from '@rocket.chat/core-services';
22
import { UserStatus } from '@rocket.chat/core-typings';
33
import type { ICalendarEvent, IUser } from '@rocket.chat/core-typings';
44
import { Logger } from '@rocket.chat/logger';
5-
import { Users } from '@rocket.chat/models';
65

76
const logger = new Logger('Calendar');
87

98
export async function applyStatusChange({
109
eventId,
1110
uid,
12-
startTime,
1311
endTime,
14-
status,
1512
}: {
1613
eventId: ICalendarEvent['_id'];
1714
uid: IUser['_id'];
18-
startTime: Date;
1915
endTime?: Date;
20-
status?: UserStatus;
21-
shouldScheduleRemoval?: boolean;
2216
}): Promise<void> {
23-
const user = await Users.findOneById(uid, { projection: { roles: 1, username: 1, name: 1, statusDefault: 1 } });
24-
25-
if (!user || user.statusDefault === UserStatus.OFFLINE) {
26-
logger.debug({
27-
msg: 'Cannot apply status change for event, user is offline or does not exist',
28-
eventId,
29-
uid,
30-
});
31-
32-
return;
33-
}
34-
35-
const newStatus = status ?? UserStatus.BUSY;
36-
const previousStatus = user.statusDefault;
37-
3817
logger.debug({
39-
msg: 'Applying status change for event',
18+
msg: 'Applying status change for event via presence engine',
4019
eventId,
41-
user: { _id: uid, statusDefault: user?.statusDefault },
42-
startTime,
20+
uid,
4321
endTime,
44-
newStatus,
45-
previousStatus,
4622
});
4723

48-
let statusChanged = false;
49-
50-
if (newStatus === UserStatus.BUSY) {
51-
await Users.updateStatusAndStatusDefault(uid, newStatus, newStatus);
52-
statusChanged = true;
53-
} else if (user.statusDefault === UserStatus.BUSY) {
54-
await Users.updateStatusAndStatusDefault(uid, newStatus, newStatus);
55-
statusChanged = true;
56-
}
57-
58-
if (statusChanged) {
59-
await api.broadcast('presence.status', {
60-
user: {
61-
status: newStatus,
62-
_id: uid,
63-
roles: user.roles,
64-
username: user.username,
65-
name: user.name,
66-
},
67-
previousStatus,
68-
});
69-
}
24+
await Presence.setActiveState(uid, {
25+
statusDefault: UserStatus.BUSY,
26+
statusText: '',
27+
statusSource: 'external',
28+
statusEmoji: '📅',
29+
...(endTime && { statusExpiresAt: endTime }),
30+
});
7031
}

0 commit comments

Comments
 (0)