Skip to content

Commit 7fd949d

Browse files
authored
Use UTC timestamps (#868)
The timestamp() constructor uses now() + UTC.
1 parent 9c709b2 commit 7fd949d

File tree

7 files changed

+23
-23
lines changed

7 files changed

+23
-23
lines changed

lib/src/core/engine.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,7 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
726726
.info('onDisconnected state:${connectionState} reason:${reason.name}');
727727

728728
if (reconnectAttempts == 0) {
729-
reconnectStart = DateTime.now();
729+
reconnectStart = DateTime.timestamp();
730730
}
731731

732732
if (reconnectAttempts! >= _reconnectCount) {

lib/src/core/room.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import '../types/data_stream.dart';
4848
import '../types/other.dart';
4949
import '../types/rpc.dart';
5050
import '../types/transcription_segment.dart';
51-
import '../utils.dart';
51+
import '../utils.dart' show unpackStreamId;
5252
import 'engine.dart';
5353

5454
import '../track/web/_audio_api.dart'
@@ -853,8 +853,8 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
853853
text: segment.text,
854854
id: segment.id,
855855
firstReceivedTime:
856-
_transcriptionReceivedTimes[segment.id] ?? DateTime.now(),
857-
lastReceivedTime: DateTime.now(),
856+
_transcriptionReceivedTimes[segment.id] ?? DateTime.timestamp(),
857+
lastReceivedTime: DateTime.timestamp(),
858858
isFinal: segment.final_5,
859859
language: segment.language,
860860
);
@@ -863,7 +863,7 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
863863
for (var segment in segments) {
864864
segment.isFinal
865865
? _transcriptionReceivedTimes.remove(segment.id)
866-
: _transcriptionReceivedTimes[segment.id] = DateTime.now();
866+
: _transcriptionReceivedTimes[segment.id] = DateTime.timestamp();
867867
}
868868

869869
final transcription = TranscriptionEvent(
@@ -1301,7 +1301,7 @@ extension DataStreamRoomMethods on Room {
13011301
var streamController = DataStreamController<lk_models.DataStream_Chunk>(
13021302
info: info,
13031303
streamController: StreamController<lk_models.DataStream_Chunk>(),
1304-
startTime: DateTime.now().millisecondsSinceEpoch,
1304+
startTime: DateTime.timestamp().millisecondsSinceEpoch,
13051305
);
13061306

13071307
_byteStreamControllers[streamHeader.streamId] = streamController;
@@ -1334,7 +1334,7 @@ extension DataStreamRoomMethods on Room {
13341334
var streamController = DataStreamController<lk_models.DataStream_Chunk>(
13351335
info: info,
13361336
streamController: StreamController<lk_models.DataStream_Chunk>(),
1337-
startTime: DateTime.now().millisecondsSinceEpoch,
1337+
startTime: DateTime.timestamp().millisecondsSinceEpoch,
13381338
);
13391339

13401340
_textStreamControllers[streamHeader.streamId] = streamController;

lib/src/core/signal_client.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import '../support/disposable.dart';
3636
import '../support/platform.dart';
3737
import '../support/websocket.dart';
3838
import '../types/other.dart';
39-
import '../utils.dart';
39+
import '../utils.dart' show Utils, UriExt;
4040

4141
class SignalClient extends Disposable with EventsEmittable<SignalEvent> {
4242
ConnectionState _connectionState = ConnectionState.disconnected;
@@ -361,7 +361,7 @@ class SignalClient extends Disposable with EventsEmittable<SignalEvent> {
361361

362362
void _sendPing() {
363363
_sendRequest(lk_rtc.SignalRequest()
364-
..ping = Int64(DateTime.now().millisecondsSinceEpoch));
364+
..ping = Int64(DateTime.timestamp().millisecondsSinceEpoch));
365365
}
366366

367367
void _startPingInterval() {

lib/src/participant/local.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ import '../types/other.dart';
5353
import '../types/participant_permissions.dart';
5454
import '../types/rpc.dart';
5555
import '../types/video_dimensions.dart';
56-
import '../utils.dart';
56+
import '../utils.dart' show buildStreamId, mimeTypeToVideoCodecString, Utils, compareVersions, isSVCCodec;
5757
import 'participant.dart';
5858

5959
/// Represents the current participant in the room. Instance of [LocalParticipant] is automatically
@@ -1236,7 +1236,7 @@ extension DataStreamParticipantMethods on LocalParticipant {
12361236
final info = TextStreamInfo(
12371237
id: streamId,
12381238
mimeType: 'text/plain',
1239-
timestamp: DateTime.now().millisecondsSinceEpoch,
1239+
timestamp: DateTime.timestamp().millisecondsSinceEpoch,
12401240
topic: options?.topic ?? '',
12411241
size: options?.totalSize ?? 0,
12421242
);
@@ -1333,7 +1333,7 @@ extension DataStreamParticipantMethods on LocalParticipant {
13331333
name: options?.name ?? 'unknown',
13341334
id: streamId,
13351335
mimeType: options?.mimeType ?? 'application/octet-stream',
1336-
timestamp: DateTime.now().millisecondsSinceEpoch,
1336+
timestamp: DateTime.timestamp().millisecondsSinceEpoch,
13371337
topic: options?.topic ?? '',
13381338
size: options?.totalSize ?? 0,
13391339
attributes: options?.attributes ?? {},
@@ -1345,7 +1345,7 @@ extension DataStreamParticipantMethods on LocalParticipant {
13451345
streamId: streamId,
13461346
topic: options?.topic,
13471347
encryptionType: options?.encryptionType,
1348-
timestamp: Int64(DateTime.now().millisecondsSinceEpoch),
1348+
timestamp: Int64(info.timestamp),
13491349
byteHeader: lk_models.DataStream_ByteHeader(
13501350
name: info.name,
13511351
),

lib/src/participant/participant.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import '../support/disposable.dart';
2727
import '../types/other.dart';
2828
import '../types/participant_permissions.dart';
2929
import '../types/participant_state.dart';
30-
import '../utils.dart';
30+
import '../utils.dart' show mapDiff;
3131

3232
/// Represents a Participant in the room, notifies changes via delegates as
3333
/// well as ChangeNotifier/providers.
@@ -96,7 +96,7 @@ abstract class Participant<T extends TrackPublication>
9696
return DateTime.fromMillisecondsSinceEpoch(pi.joinedAt.toInt() * 1000,
9797
isUtc: true);
9898
}
99-
return DateTime.now();
99+
return DateTime.timestamp();
100100
}
101101

102102
/// if [Participant] is currently speaking.
@@ -161,7 +161,7 @@ abstract class Participant<T extends TrackPublication>
161161
}
162162
_isSpeaking = speaking;
163163
if (speaking) {
164-
lastSpokeAt = DateTime.now();
164+
lastSpokeAt = DateTime.timestamp();
165165
}
166166

167167
events.emit(SpeakingChangedEvent(

lib/src/support/region_url_provider.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class RegionUrlProvider {
3939
'region availability is only supported for LiveKit Cloud domains');
4040
}
4141
if (regionSettings == null ||
42-
DateTime.now().microsecondsSinceEpoch - lastUpdateAt >
42+
DateTime.timestamp().microsecondsSinceEpoch - lastUpdateAt >
4343
settingsCacheTime) {
4444
regionSettings = await fetchRegionSettings();
4545
}
@@ -79,7 +79,7 @@ class RegionUrlProvider {
7979
var regionSettings = lk_models.RegionSettings(
8080
regions: regions,
8181
);
82-
lastUpdateAt = DateTime.now().microsecondsSinceEpoch;
82+
lastUpdateAt = DateTime.timestamp().microsecondsSinceEpoch;
8383
return regionSettings;
8484
} else {
8585
throw ConnectException(
@@ -93,7 +93,7 @@ class RegionUrlProvider {
9393

9494
setServerReportedRegions(lk_models.RegionSettings regions) {
9595
regionSettings = regions;
96-
lastUpdateAt = DateTime.now().millisecondsSinceEpoch;
96+
lastUpdateAt = DateTime.timestamp().millisecondsSinceEpoch;
9797
}
9898

9999
String getCloudConfigUrl(Uri serverUrl) {

web/e2ee.sfi_guard.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ class SifGuard {
1212

1313
void recordSif() {
1414
consecutiveSifCount += 1;
15-
sifSequenceStartedAt ??= DateTime.now().millisecondsSinceEpoch;
16-
lastSifReceivedAt = DateTime.now().millisecondsSinceEpoch;
15+
sifSequenceStartedAt ??= DateTime.timestamp().millisecondsSinceEpoch;
16+
lastSifReceivedAt = DateTime.timestamp().millisecondsSinceEpoch;
1717
}
1818

1919
void recordUserFrame() {
@@ -26,7 +26,7 @@ class SifGuard {
2626
// reset if we received more user frames than SIFs
2727
userFramesSinceSif > consecutiveSifCount ||
2828
// also reset if we got a new user frame and the latest SIF frame hasn't been updated in a while
29-
DateTime.now().millisecondsSinceEpoch - lastSifReceivedAt >
29+
DateTime.timestamp().millisecondsSinceEpoch - lastSifReceivedAt >
3030
MAX_SIF_DURATION) {
3131
reset();
3232
}
@@ -35,7 +35,7 @@ class SifGuard {
3535
bool isSifAllowed() {
3636
return consecutiveSifCount < MAX_SIF_COUNT &&
3737
(sifSequenceStartedAt == null ||
38-
DateTime.now().millisecondsSinceEpoch - sifSequenceStartedAt! <
38+
DateTime.timestamp().millisecondsSinceEpoch - sifSequenceStartedAt! <
3939
MAX_SIF_DURATION);
4040
}
4141

0 commit comments

Comments
 (0)