Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/src/core/engine.dart
Original file line number Diff line number Diff line change
Expand Up @@ -726,7 +726,7 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
.info('onDisconnected state:${connectionState} reason:${reason.name}');

if (reconnectAttempts == 0) {
reconnectStart = DateTime.now();
reconnectStart = DateTime.timestamp();
}

if (reconnectAttempts! >= _reconnectCount) {
Expand Down
12 changes: 6 additions & 6 deletions lib/src/core/room.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ import '../types/data_stream.dart';
import '../types/other.dart';
import '../types/rpc.dart';
import '../types/transcription_segment.dart';
import '../utils.dart';
import '../utils.dart' show unpackStreamId;
import 'engine.dart';

import '../track/web/_audio_api.dart'
Expand Down Expand Up @@ -853,8 +853,8 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
text: segment.text,
id: segment.id,
firstReceivedTime:
_transcriptionReceivedTimes[segment.id] ?? DateTime.now(),
lastReceivedTime: DateTime.now(),
_transcriptionReceivedTimes[segment.id] ?? DateTime.timestamp(),
lastReceivedTime: DateTime.timestamp(),
isFinal: segment.final_5,
language: segment.language,
);
Expand All @@ -863,7 +863,7 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
for (var segment in segments) {
segment.isFinal
? _transcriptionReceivedTimes.remove(segment.id)
: _transcriptionReceivedTimes[segment.id] = DateTime.now();
: _transcriptionReceivedTimes[segment.id] = DateTime.timestamp();
}

final transcription = TranscriptionEvent(
Expand Down Expand Up @@ -1301,7 +1301,7 @@ extension DataStreamRoomMethods on Room {
var streamController = DataStreamController<lk_models.DataStream_Chunk>(
info: info,
streamController: StreamController<lk_models.DataStream_Chunk>(),
startTime: DateTime.now().millisecondsSinceEpoch,
startTime: DateTime.timestamp().millisecondsSinceEpoch,
);

_byteStreamControllers[streamHeader.streamId] = streamController;
Expand Down Expand Up @@ -1334,7 +1334,7 @@ extension DataStreamRoomMethods on Room {
var streamController = DataStreamController<lk_models.DataStream_Chunk>(
info: info,
streamController: StreamController<lk_models.DataStream_Chunk>(),
startTime: DateTime.now().millisecondsSinceEpoch,
startTime: DateTime.timestamp().millisecondsSinceEpoch,
);

_textStreamControllers[streamHeader.streamId] = streamController;
Expand Down
4 changes: 2 additions & 2 deletions lib/src/core/signal_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import '../support/disposable.dart';
import '../support/platform.dart';
import '../support/websocket.dart';
import '../types/other.dart';
import '../utils.dart';
import '../utils.dart' show Utils, UriExt;

class SignalClient extends Disposable with EventsEmittable<SignalEvent> {
ConnectionState _connectionState = ConnectionState.disconnected;
Expand Down Expand Up @@ -361,7 +361,7 @@ class SignalClient extends Disposable with EventsEmittable<SignalEvent> {

void _sendPing() {
_sendRequest(lk_rtc.SignalRequest()
..ping = Int64(DateTime.now().millisecondsSinceEpoch));
..ping = Int64(DateTime.timestamp().millisecondsSinceEpoch));
}

void _startPingInterval() {
Expand Down
8 changes: 4 additions & 4 deletions lib/src/participant/local.dart
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ import '../types/other.dart';
import '../types/participant_permissions.dart';
import '../types/rpc.dart';
import '../types/video_dimensions.dart';
import '../utils.dart';
import '../utils.dart' show buildStreamId, mimeTypeToVideoCodecString, Utils, compareVersions, isSVCCodec;
import 'participant.dart';

/// Represents the current participant in the room. Instance of [LocalParticipant] is automatically
Expand Down Expand Up @@ -1236,7 +1236,7 @@ extension DataStreamParticipantMethods on LocalParticipant {
final info = TextStreamInfo(
id: streamId,
mimeType: 'text/plain',
timestamp: DateTime.now().millisecondsSinceEpoch,
timestamp: DateTime.timestamp().millisecondsSinceEpoch,
topic: options?.topic ?? '',
size: options?.totalSize ?? 0,
);
Expand Down Expand Up @@ -1333,7 +1333,7 @@ extension DataStreamParticipantMethods on LocalParticipant {
name: options?.name ?? 'unknown',
id: streamId,
mimeType: options?.mimeType ?? 'application/octet-stream',
timestamp: DateTime.now().millisecondsSinceEpoch,
timestamp: DateTime.timestamp().millisecondsSinceEpoch,
topic: options?.topic ?? '',
size: options?.totalSize ?? 0,
attributes: options?.attributes ?? {},
Expand All @@ -1345,7 +1345,7 @@ extension DataStreamParticipantMethods on LocalParticipant {
streamId: streamId,
topic: options?.topic,
encryptionType: options?.encryptionType,
timestamp: Int64(DateTime.now().millisecondsSinceEpoch),
timestamp: Int64(info.timestamp),
Copy link

Copilot AI Sep 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change improves maintainability by reusing the timestamp from info instead of generating a new timestamp with DateTime.timestamp().millisecondsSinceEpoch. This ensures consistency between the timestamp stored in info and the one used in the protocol buffer.

Copilot uses AI. Check for mistakes.
byteHeader: lk_models.DataStream_ByteHeader(
name: info.name,
),
Expand Down
6 changes: 3 additions & 3 deletions lib/src/participant/participant.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import '../support/disposable.dart';
import '../types/other.dart';
import '../types/participant_permissions.dart';
import '../types/participant_state.dart';
import '../utils.dart';
import '../utils.dart' show mapDiff;

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

/// if [Participant] is currently speaking.
Expand Down Expand Up @@ -161,7 +161,7 @@ abstract class Participant<T extends TrackPublication>
}
_isSpeaking = speaking;
if (speaking) {
lastSpokeAt = DateTime.now();
lastSpokeAt = DateTime.timestamp();
}

events.emit(SpeakingChangedEvent(
Expand Down
6 changes: 3 additions & 3 deletions lib/src/support/region_url_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class RegionUrlProvider {
'region availability is only supported for LiveKit Cloud domains');
}
if (regionSettings == null ||
DateTime.now().microsecondsSinceEpoch - lastUpdateAt >
DateTime.timestamp().microsecondsSinceEpoch - lastUpdateAt >
settingsCacheTime) {
regionSettings = await fetchRegionSettings();
}
Expand Down Expand Up @@ -79,7 +79,7 @@ class RegionUrlProvider {
var regionSettings = lk_models.RegionSettings(
regions: regions,
);
lastUpdateAt = DateTime.now().microsecondsSinceEpoch;
lastUpdateAt = DateTime.timestamp().microsecondsSinceEpoch;
return regionSettings;
} else {
throw ConnectException(
Expand All @@ -93,7 +93,7 @@ class RegionUrlProvider {

setServerReportedRegions(lk_models.RegionSettings regions) {
regionSettings = regions;
lastUpdateAt = DateTime.now().millisecondsSinceEpoch;
lastUpdateAt = DateTime.timestamp().millisecondsSinceEpoch;
}

String getCloudConfigUrl(Uri serverUrl) {
Expand Down
8 changes: 4 additions & 4 deletions web/e2ee.sfi_guard.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ class SifGuard {

void recordSif() {
consecutiveSifCount += 1;
sifSequenceStartedAt ??= DateTime.now().millisecondsSinceEpoch;
lastSifReceivedAt = DateTime.now().millisecondsSinceEpoch;
sifSequenceStartedAt ??= DateTime.timestamp().millisecondsSinceEpoch;
lastSifReceivedAt = DateTime.timestamp().millisecondsSinceEpoch;
}

void recordUserFrame() {
Expand All @@ -26,7 +26,7 @@ class SifGuard {
// reset if we received more user frames than SIFs
userFramesSinceSif > consecutiveSifCount ||
// also reset if we got a new user frame and the latest SIF frame hasn't been updated in a while
DateTime.now().millisecondsSinceEpoch - lastSifReceivedAt >
DateTime.timestamp().millisecondsSinceEpoch - lastSifReceivedAt >
MAX_SIF_DURATION) {
reset();
}
Expand All @@ -35,7 +35,7 @@ class SifGuard {
bool isSifAllowed() {
return consecutiveSifCount < MAX_SIF_COUNT &&
(sifSequenceStartedAt == null ||
DateTime.now().millisecondsSinceEpoch - sifSequenceStartedAt! <
DateTime.timestamp().millisecondsSinceEpoch - sifSequenceStartedAt! <
MAX_SIF_DURATION);
}

Expand Down
Loading