Skip to content

Commit ba7cad7

Browse files
committed
Add Analytics Payload
1 parent fa076e9 commit ba7cad7

3 files changed

Lines changed: 19 additions & 8 deletions

File tree

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
export interface IAnalyticsPayload {
2+
roomId: string;
3+
category: string;
4+
action: string;
5+
eventType: string;
6+
timestamp: string;
7+
properties?: Record<string, any>;
8+
tabId?: string;
9+
}
10+
111
/**
212
* Provides an accessor to push data for Analytics.
313
*/
@@ -6,9 +16,8 @@ export interface IAnalytics {
616
* Sends event data to server for Analytics
717
*
818
* @param roomId the roomId of the Room
9-
* @param event the event name
1019
* @param data the analytics data for the event
1120
* @return true
1221
*/
13-
sendEvent(roomId: string, event: string, data?: object): Promise<boolean>;
22+
sendEvent(roomId: string, data: IAnalyticsPayload): Promise<boolean>;
1423
}

src/server/accessors/Analytics.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { IAnalytics } from '../../definition/accessors';
1+
import { IAnalytics, IAnalyticsPayload } from '../../definition/accessors';
22

33
import { AnalyticsBridge } from '../bridges/AnalyticsBridge';
44

55
export class Analytics implements IAnalytics {
66
constructor(private analyticsBridge: AnalyticsBridge, private appId: string) { }
77

8-
public sendEvent(roomId: string, event: string, data?: object): Promise<boolean> {
9-
return this.analyticsBridge.doSendEvent(this.appId, roomId, event, data);
8+
public sendEvent(roomId: string, data: IAnalyticsPayload): Promise<boolean> {
9+
return this.analyticsBridge.doSendEvent(roomId, data, this.appId);
1010
}
1111
}

src/server/bridges/AnalyticsBridge.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1+
import { IAnalyticsPayload } from '../../definition/accessors';
2+
13
import { PermissionDeniedError } from '../errors/PermissionDeniedError';
24
import { AppPermissionManager } from '../managers/AppPermissionManager';
35
import { AppPermissions } from '../permissions/AppPermissions';
46
import { BaseBridge } from './BaseBridge';
57

68
export abstract class AnalyticsBridge extends BaseBridge {
7-
public async doSendEvent(appId: string, roomId: string, event: string, data?: object): Promise<boolean> {
9+
public async doSendEvent(roomId: string, data: IAnalyticsPayload, appId: string): Promise<boolean> {
810
if (this.hasAnalyticsPermission(appId)) {
9-
return this.sendEvent(appId, roomId, event, data);
11+
return this.sendEvent(roomId, data, appId);
1012
}
1113
}
1214

13-
protected abstract sendEvent(appId: string, roomId: string, event: string, data?: object): Promise<boolean>;
15+
protected abstract sendEvent(roomId: string, data: IAnalyticsPayload, appId: string): Promise<boolean>;
1416

1517
private hasAnalyticsPermission(appId: string): boolean {
1618
if (AppPermissionManager.hasPermission(appId, AppPermissions.analytics.default)) {

0 commit comments

Comments
 (0)