Skip to content

Commit a75e860

Browse files
committed
Fix virtual segments bleeding to the client
1 parent 06bc628 commit a75e860

2 files changed

Lines changed: 8 additions & 3 deletions

File tree

src/Flagsmith.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,8 +370,12 @@ traits: $traits,
370370

371371
$segments = [];
372372
foreach ($evaluationResult->segments as $resultSegment) {
373+
if (($resultSegment->metadata['flagsmith_id'] ?? null) === null) {
374+
continue; // Not a real segment, e.g. an identity override virtual segment
375+
}
376+
373377
$segment = new Segment();
374-
$segment->id = (int) $resultSegment->key;
378+
$segment->id = $resultSegment->metadata['flagsmith_id'];
375379
$segment->name = $resultSegment->name;
376380
$segments[] = $segment;
377381
}

tests/FlagsmithClientTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,12 +306,13 @@ public function testGetIdentitySegmentsNoTraits()
306306
public function testGetIdentitySegmentsWithValidTrait()
307307
{
308308
foreach (ClientFixtures::localEvalFlagsmith() as $flagsmith) {
309-
$identifier = 'identifier';
310-
$traits = (object)['foo' => 'bar'];
309+
$identifier = 'overridden-id'; // Creates a virtual segment for the identity override
310+
$traits = (object)['foo' => 'bar']; // Matches the segment
311311

312312
$segments = $flagsmith->getIdentitySegments($identifier, $traits);
313313
$this->assertEquals(count($segments), 1);
314314
$this->assertEquals($segments[0]->getName(), 'Test segment');
315+
$this->assertSame(1, $segments[0]->id);
315316
}
316317
}
317318

0 commit comments

Comments
 (0)