updateTrackingConfig method
Implementation
@override
Future<TrackingConfigurationUpdateResult> updateTrackingConfig(
TrackingConfig config,
) async {
config.validate(context: 'Fake runtime TrackingConfig');
final track = _requireCurrent();
if (track.status != TrackStatus.active) {
throw StateError('A fake route must be active to update configuration.');
}
final updated = Track(
id: track.id,
userId: track.userId,
organizationId: track.organizationId,
routeId: track.routeId,
status: track.status,
startedAt: track.startedAt,
pausedAt: track.pausedAt,
resumedAt: track.resumedAt,
endedAt: track.endedAt,
totalDistanceMeters: track.totalDistanceMeters,
acceptedPointCount: track.acceptedPointCount,
rejectedPointCount: track.rejectedPointCount,
segmentCount: track.segmentCount,
nextSequence: track.nextSequence,
currentSegmentId: track.currentSegmentId,
lastPointAt: track.lastPointAt,
completionReason: track.completionReason,
config: config,
);
_tracks[track.id] = updated;
final now = _clock().toUtc();
final epoch = TrackingConfigurationEpoch(
id: 'fake-epoch-${track.id}-${track.nextSequence}',
trackId: track.id,
epochNumber: track.segmentCount + 1,
resolvedConfig: config,
presetDefinitionVersion: TrackingPolicyVersions.presetDefinition,
qualityPolicyVersion: TrackingPolicyVersions.qualityPolicy,
createdAt: now,
activationSequence: track.nextSequence,
activatedAt: now,
);
calls.add(FakeTrackingCall(
'updateTrackingConfig',
<String, Object?>{'trackId': track.id},
));
_publish();
return TrackingConfigurationUpdateResult(
trackId: track.id,
epoch: epoch,
resumedCapture: true,
);
}