Skip to content

Commit 5d3e826

Browse files
authored
fix: Use correct flag version in evaluation events. (#166)
There is an associated change to the sdk-test harness to ensure we don't encounter this again.
1 parent 4534fb8 commit 5d3e826

File tree

6 files changed

+18
-7
lines changed

6 files changed

+18
-7
lines changed

apps/flutter_client_contract_test_service/pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ packages:
398398
path: "../../packages/flutter_client_sdk"
399399
relative: true
400400
source: path
401-
version: "4.6.0"
401+
version: "4.7.0"
402402
lints:
403403
dependency: "direct dev"
404404
description:

packages/common/lib/src/ld_evaluation_result.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ final class LDEvaluationResult {
99
/// Incremented by LaunchDarkly each time the flag's state changes.
1010
final int version;
1111

12+
/// The version of the flag. Changes when modifications are made to the flag.
13+
final int? flagVersion;
14+
1215
/// True if a client SDK should track events for this flag.
1316
final bool trackEvents;
1417

@@ -24,15 +27,17 @@ final class LDEvaluationResult {
2427

2528
const LDEvaluationResult(
2629
{required this.version,
30+
this.flagVersion,
2731
required this.detail,
2832
this.trackEvents = false,
2933
this.trackReason = false,
3034
this.debugEventsUntilDate});
3135

3236
@override
3337
String toString() {
34-
return 'LDEvaluationResult{version: $version, trackEvents: $trackEvents, '
35-
'trackReason: $trackReason, debugEventsUntilDate: $debugEventsUntilDate,'
38+
return 'LDEvaluationResult{version: $version, flagVersion: $flagVersion,'
39+
' trackEvents: $trackEvents, trackReason: $trackReason,'
40+
' debugEventsUntilDate: $debugEventsUntilDate,'
3641
' detail: $detail}';
3742
}
3843

@@ -41,6 +46,7 @@ final class LDEvaluationResult {
4146
identical(this, other) ||
4247
other is LDEvaluationResult &&
4348
version == other.version &&
49+
flagVersion == other.flagVersion &&
4450
trackEvents == other.trackEvents &&
4551
trackReason == other.trackReason &&
4652
debugEventsUntilDate == other.debugEventsUntilDate &&
@@ -49,6 +55,7 @@ final class LDEvaluationResult {
4955
@override
5056
int get hashCode =>
5157
version.hashCode ^
58+
flagVersion.hashCode ^
5259
trackEvents.hashCode ^
5360
trackReason.hashCode ^
5461
debugEventsUntilDate.hashCode ^

packages/common/lib/src/serialization/ld_evaluation_result_serialization.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import '../../launchdarkly_dart_common.dart';
33
final class LDEvaluationResultSerialization {
44
static LDEvaluationResult fromJson(Map<String, dynamic> json) {
55
final version = json['version'] as num;
6+
final flagVersion = json['flagVersion'] as num?;
67
final trackEvents = (json['trackEvents'] ?? false) as bool;
78
final trackReason = (json['trackReason'] ?? false) as bool;
89
final debugEventsUntilDateRaw = json['debugEventsUntilDate'] as num?;
@@ -19,6 +20,7 @@ final class LDEvaluationResultSerialization {
1920

2021
return LDEvaluationResult(
2122
version: version.toInt(),
23+
flagVersion: flagVersion?.toInt(),
2224
detail: LDEvaluationDetail(value, variationIndex, reason),
2325
trackEvents: trackEvents,
2426
trackReason: trackReason,

packages/common/test/ld_evaluation_result_test.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,14 @@ void main() {
6161

6262
test('it produces the expected string', () {
6363
final a = LDEvaluationResult(
64-
version: 1,
64+
version: 11,
65+
flagVersion: 1,
6566
detail: LDEvaluationDetail<LDValue>(
6667
LDValue.ofString('toast'), null, LDEvaluationReason.targetMatch()));
6768

6869
expect(
6970
a.toString(),
70-
'LDEvaluationResult{version: 1, trackEvents: false, trackReason: false,'
71+
'LDEvaluationResult{version: 11, flagVersion: 1, trackEvents: false, trackReason: false,'
7172
' debugEventsUntilDate: null, detail: LDEvaluationDetail{value:'
7273
' LDValue{_value: toast}, variationIndex: null, reason:'
7374
' LDEvaluationReason{kind: TARGET_MATCH, ruleIndex: null,'

packages/common_client/lib/src/ld_common_client.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ final class LDCommonClient {
551551
? DateTime.fromMillisecondsSinceEpoch(
552552
evalResult!.flag!.debugEventsUntilDate!)
553553
: null,
554-
version: evalResult?.version));
554+
version: evalResult?.flag?.flagVersion ?? evalResult?.version));
555555

556556
return detail;
557557
}

packages/common_client/test/ld_dart_client_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ final class TestDataSource implements DataSource {
3535
_eventController.sink.add(DataEvent(
3636
'put',
3737
'{"flagA":{'
38-
'"version":1,'
38+
'"version":11,'
39+
'"flagVersion":1,'
3940
'"value":"datasource",'
4041
'"variation":0,'
4142
'"reason":{"kind":"OFF"}'

0 commit comments

Comments
 (0)