Skip to content

Commit 76dd1a7

Browse files
committed
fix(locus): parse header and convert to ISO
1 parent 744bc29 commit 76dd1a7

File tree

2 files changed

+34
-18
lines changed
  • packages/@webex/plugin-meetings

2 files changed

+34
-18
lines changed

packages/@webex/plugin-meetings/src/meeting/index.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,13 +1689,27 @@ export default class Meeting extends StatelessWebexPlugin {
16891689
/**
16901690
* Setter - sets isoLocalClientMeetingJoinTime
16911691
* This will be set once on meeting join, and not updated again
1692-
* @param {string | undefined} time in ISO format
1692+
* this will always produce an ISO string
1693+
* If the iso string is invalid, it will fallback to the current system time
1694+
* @param {string | undefined} time
16931695
*/
16941696
set isoLocalClientMeetingJoinTime(time: string | undefined) {
1697+
const fallback = new Date().toISOString();
16951698
if (!time) {
1696-
this.#isoLocalClientMeetingJoinTime = new Date().toISOString();
1699+
this.#isoLocalClientMeetingJoinTime = fallback;
16971700
} else {
1698-
this.#isoLocalClientMeetingJoinTime = time;
1701+
const date = new Date(time);
1702+
1703+
// Check if the date is valid
1704+
if (Number.isNaN(date.getTime())) {
1705+
LoggerProxy.logger.info(
1706+
// @ts-ignore
1707+
`Meeting:index#isoLocalClientMeetingJoinTime --> Invalid date provided: ${time}. Falling back to system clock.`
1708+
);
1709+
this.#isoLocalClientMeetingJoinTime = fallback;
1710+
} else {
1711+
this.#isoLocalClientMeetingJoinTime = date.toISOString();
1712+
}
16991713
}
17001714
}
17011715

packages/@webex/plugin-meetings/test/unit/spec/meeting/index.js

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7527,22 +7527,24 @@ describe('plugin-meetings', () => {
75277527
});
75287528
});
75297529

7530-
describe('#setIsoLocalClientMeetingJoinTime', () => {
7531-
it('should set the isoLocalClientMeetingJoinTime when passed in', () => {
7532-
assert.equal(meeting.isoLocalClientMeetingJoinTime, isoLocalClientMeetingJoinTime);
7533-
meeting.isoLocalClientMeetingJoinTime = 'test';
7534-
assert.equal(meeting.isoLocalClientMeetingJoinTime, 'test');
7535-
meeting.isoLocalClientMeetingJoinTime = 'test2';
7536-
assert.equal(meeting.isoLocalClientMeetingJoinTime, 'test2');
7537-
});
7538-
7539-
it('should set the isoLocalClientMeetingJoin time once and only once when not passed in', () => {
7540-
assert.equal(meeting.isoLocalClientMeetingJoinTime, isoLocalClientMeetingJoinTime);
7530+
describe('#setIsoLocalClientMeetingJoinTime', () => {
7531+
it('should fallback to system clock ISO string when given an undefined value', () => {
7532+
const currentSystemTime = new Date().toISOString();
75417533
meeting.isoLocalClientMeetingJoinTime = undefined;
7542-
const time = meeting.isoLocalClientMeetingJoinTime;
7543-
assert.equal(meeting.isoLocalClientMeetingJoinTime, time);
7544-
meeting.isoLocalClientMeetingJoinTime = 'test2';
7545-
assert.equal(meeting.isoLocalClientMeetingJoinTime, 'test2');
7534+
assert.equal(meeting.isoLocalClientMeetingJoinTime, currentSystemTime);
7535+
});
7536+
7537+
it('should fallback to system clock ISO string when given an invalid value', () => {
7538+
const currentSystemTime = new Date().toISOString();
7539+
meeting.isoLocalClientMeetingJoinTime = 'invalid-date';
7540+
assert.equal(meeting.isoLocalClientMeetingJoinTime, currentSystemTime);
7541+
});
7542+
7543+
it('should set the isoLocalClientMeetingJoinTime correctly for a valid date string', () => {
7544+
const validDateString = 'Tue, 01 Apr 2025 13:00:36 GMT';
7545+
const expectedISOString = new Date(validDateString).toISOString();
7546+
meeting.isoLocalClientMeetingJoinTime = validDateString;
7547+
assert.equal(meeting.isoLocalClientMeetingJoinTime, expectedISOString);
75467548
});
75477549
});
75487550

0 commit comments

Comments
 (0)