import { UserStatus } from '@rocket.chat/core-typings'; import { Meteor } from 'meteor/meteor'; import { Presence } from '@rocket.chat/core-services'; import type { ServerMethods } from '@rocket.chat/ui-contexts'; declare module '@rocket.chat/ui-contexts' { // eslint-disable-next-line @typescript-eslint/naming-convention interface ServerMethods { 'UserPresence:setDefaultStatus'(status: UserStatus): boolean | undefined; 'UserPresence:online'(): boolean | undefined; 'UserPresence:away'(): boolean | undefined; } } Meteor.methods({ 'UserPresence:setDefaultStatus'(status) { const { userId } = this; if (!userId) { return; } return Presence.setStatus(userId, status); }, 'UserPresence:online'() { const { userId, connection } = this; if (!userId || !connection) { return; } return Presence.setConnectionStatus(userId, UserStatus.ONLINE, connection.id); }, 'UserPresence:away'() { const { userId, connection } = this; if (!userId || !connection) { return; } return Presence.setConnectionStatus(userId, UserStatus.AWAY, connection.id); }, });