matrix-react-sdk
Version:
SDK for matrix.org using React
91 lines (90 loc) • 3.11 kB
TypeScript
interface IEvent {
key: string;
count: number;
sum?: number;
dur?: number;
segmentation?: Record<string, unknown>;
timestamp?: number;
hour?: unknown;
dow?: unknown;
}
interface IJoinRoomEvent extends IEvent {
key: "join_room";
dur: number;
segmentation: {
room_id: string;
num_users: number;
is_encrypted: boolean;
is_public: boolean;
type: "room_directory" | "slash_command" | "link" | "invite";
};
}
export default class CountlyAnalytics {
private baseUrl;
private appKey;
private userKey;
private anonymous;
private appPlatform;
private appVersion;
private initTime;
private firstPage;
private heartbeatIntervalId;
private activityIntervalId;
private trackTime;
private lastBeat;
private storedDuration;
private lastView;
private lastViewTime;
private lastViewStoredDuration;
private sessionStarted;
private heartbeatEnabled;
private inactivityCounter;
private pendingEvents;
private static internalInstance;
static get instance(): CountlyAnalytics;
get disabled(): boolean;
canEnable(): boolean;
private changeUserKey;
enable(anonymous?: boolean): Promise<void>;
disable(): Promise<void>;
reportFeedback(rating: 1 | 2 | 3 | 4 | 5, comment: string): void;
trackPageChange(generationTimeMs?: number): void;
private trackPageView;
static getTimestamp(): number;
private lastMsTs;
private getMsTimestamp;
recordError(err: Error | string, fatal?: boolean): Promise<void>;
private trackErrors;
private heartbeat;
private request;
private getTimeParams;
private queue;
private getOrientation;
private reportOrientation;
private startTime;
private stopTime;
private getMetrics;
private beginSession;
private reportViewDuration;
private endSession;
private onVisibilityChange;
private onUserActivity;
private trackSessions;
trackBeginInvite(roomId: string): void;
trackSendInvite(startTime: number, roomId: string, qty: number): void;
trackRoomCreate(startTime: number, roomId: string): Promise<void>;
trackRoomJoin(startTime: number, roomId: string, type: IJoinRoomEvent["segmentation"]["type"]): void;
trackSendMessage(startTime: number, sendPromise: Promise<{
event_id: string;
}>, roomId: string, isEdit: boolean, isReply: boolean, content: {
format?: string;
msgtype: string;
}): Promise<void>;
trackStartCall(roomId: string, isVideo?: boolean, isJitsi?: boolean): void;
trackJoinCall(roomId: string, isVideo?: boolean, isJitsi?: boolean): void;
trackRoomDirectoryBegin(): void;
trackRoomDirectory(startTime: number): void;
trackRoomDirectorySearch(numResults: number, query: string): void;
track<E extends IEvent>(key: E["key"], segments?: Omit<E["segmentation"], "room_id" | "num_users" | "is_encrypted" | "is_public">, roomId?: string, args?: Partial<Pick<E, "dur" | "sum" | "timestamp">>, anonymous?: boolean): Promise<void>;
}
export {};