diff --git a/packages/@webex/internal-plugin-metrics/src/call-diagnostic/call-diagnostic-metrics.ts b/packages/@webex/internal-plugin-metrics/src/call-diagnostic/call-diagnostic-metrics.ts index 2a64fc5fe92..c0d68682892 100644 --- a/packages/@webex/internal-plugin-metrics/src/call-diagnostic/call-diagnostic-metrics.ts +++ b/packages/@webex/internal-plugin-metrics/src/call-diagnostic/call-diagnostic-metrics.ts @@ -40,6 +40,7 @@ import { ClientEventPayloadError, ClientSubServiceType, BrowserLaunchMethodType, + MeetingJoinPhase, } from '../metrics.types'; import CallDiagnosticEventsBatcher from './call-diagnostic-metrics-batcher'; import PreLoginMetricsBatcher from '../prelogin-metrics-batcher'; @@ -95,6 +96,7 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin { private logger: any; // to avoid adding @ts-ignore everywhere private hasLoggedBrowserSerial: boolean; private device: any; + private joinMeetingPhase: MeetingJoinPhase = 'pre-join'; // the default validator before piping an event to the batcher // this function can be overridden by the user @@ -118,6 +120,22 @@ export default class CallDiagnosticMetrics extends StatelessWebexPlugin { this.preLoginMetricsBatcher = new PreLoginMetricsBatcher({}, {parent: this.webex}); } + /** + * Getter - Returns current meetingJoinPhase value + * @returns {string} + */ + get meetingJoinPhase() { + return this.joinMeetingPhase; + } + + /** + * Setter - sets meetingJoinPhase value + * @param {string} correlationId + */ + set meetingJoinPhase(joinMeetingPhase: MeetingJoinPhase) { + this.joinMeetingPhase = joinMeetingPhase; + } + /** * Returns the login type of the current user * @returns one of 'login-ci','unverified-guest', null diff --git a/packages/@webex/internal-plugin-metrics/src/metrics.types.ts b/packages/@webex/internal-plugin-metrics/src/metrics.types.ts index 9130029d62b..365f4eec350 100644 --- a/packages/@webex/internal-plugin-metrics/src/metrics.types.ts +++ b/packages/@webex/internal-plugin-metrics/src/metrics.types.ts @@ -285,3 +285,5 @@ export interface IMetricsAttributes { meetingId?: string; callId?: string; } + +export type MeetingJoinPhase = RawEvent['event']['meetingJoinPhase']; diff --git a/packages/@webex/internal-plugin-metrics/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts b/packages/@webex/internal-plugin-metrics/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts index bbbe37ecbf9..2c261dfe035 100644 --- a/packages/@webex/internal-plugin-metrics/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts +++ b/packages/@webex/internal-plugin-metrics/test/unit/spec/call-diagnostic/call-diagnostic-metrics.ts @@ -699,6 +699,22 @@ describe('internal-plugin-metrics', () => { }); }); + describe('#meetingJoinPhase', () => { + it('should have a default value', () => { + const res = cd.meetingJoinPhase; + + assert.equal(res, 'pre-join'); + }); + + it('should have a getter and setter', () => { + cd.meetingJoinPhase = 'join'; + assert.equal(cd.meetingJoinPhase, 'join'); + + cd.meetingJoinPhase = 'in-meeting'; + assert.equal(cd.meetingJoinPhase, 'in-meeting'); + }); + }); + it('should prepare diagnostic event successfully', () => { const options = {meetingId: fakeMeeting.id}; const getOriginStub = sinon.stub(cd, 'getOrigin').returns({origin: 'fake-origin'});