Skip to content

Commit ecf59a7

Browse files
remove use of created types
1 parent 3c5c1e0 commit ecf59a7

File tree

12 files changed

+61
-103
lines changed

12 files changed

+61
-103
lines changed

apps/meteor/app/statistics/server/lib/SAUMonitor.ts

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ISession, ISessionDevice, IUser, LoginSessionPayload, LogoutSessionPayload } from '@rocket.chat/core-typings';
1+
import type { ISession, ISessionDevice, IUser } from '@rocket.chat/core-typings';
22
import { cronJobs } from '@rocket.chat/cron';
33
import { Logger } from '@rocket.chat/logger';
44
import { Sessions, Users, aggregates } from '@rocket.chat/models';
@@ -31,6 +31,16 @@ const getUserRoles = mem(
3131

3232
const isProdEnv = process.env.NODE_ENV === 'production';
3333

34+
type HandleSessionArgs = {
35+
userId: string;
36+
instanceId: string;
37+
userAgent: string;
38+
loginToken?: string;
39+
connectionId: string;
40+
clientAddress: string;
41+
host: string;
42+
};
43+
3444
/**
3545
* Server Session Monitor for SAU(Simultaneously Active Users) based on Meteor server sessions
3646
*/
@@ -110,24 +120,21 @@ export class SAUMonitorClass {
110120
return;
111121
}
112122

113-
sauEvents.on(
114-
'sau.accounts.login',
115-
async ({ userId, instanceId, userAgent, loginToken, connectionId, clientAddress, host }: LoginSessionPayload) => {
116-
if (!this.isRunning()) {
117-
return;
118-
}
123+
sauEvents.on('sau.accounts.login', async ({ userId, instanceId, userAgent, loginToken, connectionId, clientAddress, host }) => {
124+
if (!this.isRunning()) {
125+
return;
126+
}
119127

120-
const roles = await getUserRoles(userId);
128+
const roles = await getUserRoles(userId);
121129

122-
const mostImportantRole = getMostImportantRole(roles);
130+
const mostImportantRole = getMostImportantRole(roles);
123131

124-
const loginAt = new Date();
125-
const params = { roles, mostImportantRole, loginAt, ...getDateObj() };
126-
await this._handleSession({ userId, instanceId, userAgent, loginToken, connectionId, clientAddress, host }, params);
127-
},
128-
);
132+
const loginAt = new Date();
133+
const params = { roles, mostImportantRole, loginAt, ...getDateObj() };
134+
await this._handleSession({ userId, instanceId, userAgent, loginToken, connectionId, clientAddress, host }, params);
135+
});
129136

130-
sauEvents.on('sau.accounts.logout', async ({ userId, sessionId }: LogoutSessionPayload) => {
137+
sauEvents.on('sau.accounts.logout', async ({ userId, sessionId }) => {
131138
if (!this.isRunning()) {
132139
return;
133140
}
@@ -158,12 +165,12 @@ export class SAUMonitorClass {
158165
}
159166

160167
private async _handleSession(
161-
{ userId, instanceId, userAgent, loginToken, connectionId, clientAddress, host }: LoginSessionPayload,
168+
{ userId, instanceId, userAgent, loginToken, connectionId, clientAddress, host }: HandleSessionArgs,
162169
params: Pick<ISession, 'mostImportantRole' | 'loginAt' | 'day' | 'month' | 'year' | 'roles'>,
163170
): Promise<void> {
164171
const data: Omit<ISession, '_id' | '_updatedAt' | 'createdAt' | 'searchTerm'> = {
165172
userId,
166-
loginToken,
173+
...(loginToken && { loginToken }),
167174
ip: clientAddress,
168175
host,
169176
sessionId: connectionId,
Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
import type {
2-
LoginSessionPayload,
3-
LogoutSessionPayload,
4-
SocketConnectedPayload,
5-
SocketDisconnectedPayload,
6-
DeviceLoginPayload,
7-
} from '@rocket.chat/core-typings';
81
import { InstanceStatus } from '@rocket.chat/instance-status';
92
import { Accounts } from 'meteor/accounts-base';
103
import { Meteor } from 'meteor/meteor';
@@ -28,59 +21,38 @@ Accounts.onLogin((info: ILoginAttempt) => {
2821
const { resume } = methodArguments.find((arg) => 'resume' in arg) ?? {};
2922
const loginToken = resume ? Accounts._hashLoginToken(resume) : '';
3023
const instanceId = InstanceStatus.id();
31-
const userId = info.user._id;
32-
const connectionId = info.connection.id;
3324
const clientAddress = getClientAddress(info.connection);
3425
const userAgent = getHeader(httpHeaders, 'user-agent');
3526
const host = getHeader(httpHeaders, 'host');
3627

37-
const loginEventObject: LoginSessionPayload = {
38-
userId,
28+
sauEvents.emit('sau.accounts.login', {
29+
userId: info.user._id,
3930
instanceId,
4031
userAgent,
4132
loginToken,
42-
connectionId,
33+
connectionId: info.connection.id,
4334
clientAddress,
4435
host,
45-
};
46-
sauEvents.emit('sau.accounts.login', loginEventObject);
36+
});
4737

48-
const deviceLoginEventObject: DeviceLoginPayload = {
49-
userId,
50-
userAgent,
51-
loginToken,
52-
clientAddress,
53-
};
54-
deviceManagementEvents.emit('device-login', deviceLoginEventObject);
38+
deviceManagementEvents.emit('device-login', { userId: info.user._id, userAgent, loginToken, clientAddress });
5539
});
5640

5741
Accounts.onLogout((info) => {
5842
if (!info.user) {
5943
return;
6044
}
6145

62-
const logoutEventObject: LogoutSessionPayload = {
63-
userId: info.user._id,
64-
sessionId: info.connection.id,
65-
};
66-
67-
sauEvents.emit('sau.accounts.logout', logoutEventObject);
46+
sauEvents.emit('sau.accounts.logout', { userId: info.user._id, sessionId: info.connection.id });
6847
});
6948

7049
Meteor.onConnection((connection) => {
7150
connection.onClose(async () => {
72-
const socketDisconnectedEventObject: SocketDisconnectedPayload = {
73-
connectionId: connection.id,
74-
instanceId: InstanceStatus.id(),
75-
};
76-
sauEvents.emit('sau.socket.disconnected', socketDisconnectedEventObject);
51+
sauEvents.emit('sau.socket.disconnected', { connectionId: connection.id, instanceId: InstanceStatus.id() });
7752
});
7853
});
7954

8055
Meteor.onConnection((connection) => {
81-
const socketConnectedEventObject: SocketConnectedPayload = {
82-
// Implement SocketConnectedPayload type in case of using the sau.socket.connected hook
83-
...connection,
84-
};
85-
sauEvents.emit('sau.socket.connected', socketConnectedEventObject);
56+
// in case of implementing a listener of this event, define the parameters type in services/sauMonitor/events.ts
57+
sauEvents.emit('sau.socket.connected', { instanceId: InstanceStatus.id(), connectionId: connection.id });
8658
});
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import type { DeviceLoginPayload } from '@rocket.chat/core-typings';
21
import { Emitter } from '@rocket.chat/emitter';
32

43
export const deviceManagementEvents = new Emitter<{
5-
'device-login': DeviceLoginPayload;
4+
'device-login': { userId: string; userAgent: string; loginToken: string; clientAddress: string };
65
}>();

apps/meteor/server/services/device-management/service.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ export class DeviceManagementService extends ServiceClassInternal implements IDe
1212
super();
1313

1414
this.onEvent('accounts.login', async ({ userId, connection }) => {
15-
const clientAddress = getClientAddress(connection);
16-
const userAgent = getHeader(connection.httpHeaders, 'user-agent');
1715
// TODO need to add loginToken to data
18-
deviceManagementEvents.emit('device-login', { userId, userAgent, clientAddress });
16+
deviceManagementEvents.emit('device-login', {
17+
userId,
18+
userAgent: getHeader(connection.httpHeaders, 'user-agent'),
19+
clientAddress: getClientAddress(connection),
20+
});
1921
});
2022
}
2123
}
Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
import type {
2-
LoginSessionPayload,
3-
LogoutSessionPayload,
4-
SocketConnectedPayload,
5-
SocketDisconnectedPayload,
6-
} from '@rocket.chat/core-typings';
71
import { Emitter } from '@rocket.chat/emitter';
82

93
export const sauEvents = new Emitter<{
10-
'sau.accounts.login': LoginSessionPayload;
11-
'sau.accounts.logout': LogoutSessionPayload;
12-
'sau.socket.connected': SocketConnectedPayload;
13-
'sau.socket.disconnected': SocketDisconnectedPayload;
4+
'sau.accounts.login': {
5+
userId: string;
6+
instanceId: string;
7+
connectionId: string;
8+
loginToken: string;
9+
clientAddress: string;
10+
userAgent: string;
11+
host: string;
12+
};
13+
'sau.accounts.logout': { userId: string; sessionId: string };
14+
'sau.socket.connected': { instanceId: string; connectionId: string };
15+
'sau.socket.disconnected': { instanceId: string; connectionId: string };
1416
}>();

apps/meteor/server/services/sauMonitor/service.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,15 @@ export class SAUMonitorService extends ServiceClassInternal implements ISAUMonit
2020
const userAgent = getHeader(connection.httpHeaders, 'user-agent');
2121
const host = getHeader(connection.httpHeaders, 'host');
2222

23-
sauEvents.emit('sau.accounts.login', { userId, instanceId, connectionId: connection.id, loginToken: connection.loginToken, clientAddress, userAgent, host });
23+
sauEvents.emit('sau.accounts.login', {
24+
userId,
25+
instanceId,
26+
connectionId: connection.id,
27+
loginToken: connection.loginToken,
28+
clientAddress,
29+
userAgent,
30+
host,
31+
});
2432
});
2533

2634
this.onEvent('accounts.logout', async ({ userId, connection }) => {
@@ -33,7 +41,7 @@ export class SAUMonitorService extends ServiceClassInternal implements ISAUMonit
3341

3442
this.onEvent('socket.connected', async (data) => {
3543
// console.log('socket.connected', data);
36-
sauEvents.emit('sau.socket.connected', data);
44+
sauEvents.emit('sau.socket.connected', { instanceId: InstanceStatus.id(), connectionId: data.id });
3745
});
3846
}
3947
}

packages/core-typings/src/DeviceLoginPayload.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

packages/core-typings/src/index.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,4 @@ export * from './Abac';
133133
export * from './ServerAudit/IAuditServerAbacAction';
134134
export * from './ServerAudit/IAuditUserChangedEvent';
135135

136-
export * from './DeviceLoginPayload';
137-
138-
export * from './sau/LoginSessionPayload';
139-
export * from './sau/LogoutSessionPayload';
140-
export * from './sau/SocketDisconnectedPayload';
141-
export * from './sau/SocketConnectedPayload';
142-
143136
export { schemas } from './Ajv';

packages/core-typings/src/sau/LoginSessionPayload.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.

packages/core-typings/src/sau/LogoutSessionPayload.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)