Skip to content

Commit 9d8aed4

Browse files
authored
waas: use getLocalTime instead of Date.now() (#614)
1 parent a3e49b9 commit 9d8aed4

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

packages/waas/src/auth.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import {
1818
SignedIntent,
1919
SignMessageArgs,
2020
getTimeDrift,
21-
updateTimeDrift
21+
updateTimeDrift,
22+
getLocalTime
2223
} from './intents'
2324
import {
2425
FeeOptionsResponse,
@@ -609,6 +610,7 @@ export class SequenceWaaS {
609610
session.clear()
610611
await this.waas.completeSignOut()
611612
await this.deviceName.set(undefined)
613+
updateTimeDrift(undefined)
612614
}
613615
}
614616

@@ -672,9 +674,9 @@ export class SequenceWaaS {
672674
}
673675

674676
async waitForSessionValid(timeout: number = 600000, pollRate: number = 2000) {
675-
const start = Date.now()
677+
const start = getLocalTime()
676678

677-
while (Date.now() - start < timeout) {
679+
while (getLocalTime() - start < timeout) {
678680
if (await this.isSessionValid()) {
679681
return true
680682
}

packages/waas/src/intents/base.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ function isSessionStorageAvailable() {
1818
return typeof window === 'object' && typeof window.sessionStorage === 'object'
1919
}
2020

21+
export function getLocalTime() {
22+
return new Date().getTime()
23+
}
24+
2125
export function getTimeDrift() {
2226
if (isSessionStorageAvailable()) {
2327
const drift = window.sessionStorage.getItem(timeDriftKey)
@@ -28,16 +32,24 @@ export function getTimeDrift() {
2832
return timeDrift
2933
}
3034

31-
export function updateTimeDrift(serverTime: Date) {
32-
timeDrift = (Date.now() - serverTime.getTime()) / 1000
35+
export function updateTimeDrift(serverTime?: Date) {
36+
if (!serverTime) {
37+
timeDrift = undefined
38+
if (isSessionStorageAvailable()) {
39+
window.sessionStorage.removeItem(timeDriftKey)
40+
}
41+
return
42+
}
43+
44+
timeDrift = (getLocalTime() - serverTime.getTime()) / 1000
3345
if (isSessionStorageAvailable()) {
3446
window.sessionStorage.setItem(timeDriftKey, timeDrift.toString(10))
3547
}
3648
}
3749

3850
export function makeIntent<T>(name: IntentName, lifespan: number, data: T): Intent<T> {
3951
const drift = Math.abs(Math.floor(getTimeDrift() || 0))
40-
const issuedAt = Math.floor(Date.now() / 1000 - drift)
52+
const issuedAt = Math.floor(getLocalTime() / 1000 - drift)
4153
const expiresAt = issuedAt + lifespan + 2 * drift
4254
return {
4355
version: VERSION,

packages/waas/src/intents/utils.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
import { getLocalTime } from "./base"
2+
13
export function useLifespan(lifespan: number) {
2-
const issuedAt = Math.floor(Date.now() / 1000)
4+
const issuedAt = Math.floor(getLocalTime() / 1000)
35
return {
46
issuedAt,
57
expiresAt: issuedAt + lifespan

0 commit comments

Comments
 (0)