Skip to content

Commit 0c2b411

Browse files
authored
fix: targeted surveys shouldn't be shown to anon users (#14)
* bumps version * fix: targeted surveys * fix: targeted surveys * fix: adds test * fix: adds test
1 parent 094fd9f commit 0c2b411

File tree

4 files changed

+925
-839
lines changed

4 files changed

+925
-839
lines changed

packages/react-native/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@formbricks/react-native",
3-
"version": "2.1.2",
3+
"version": "2.2.0",
44
"license": "MIT",
55
"description": "Formbricks React Native SDK allows you to connect your app to Formbricks, display surveys and trigger events.",
66
"homepage": "https://formbricks.com",

packages/react-native/src/lib/common/tests/utils.test.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,40 @@ describe("utils.ts", () => {
158158
expect(result[0].id).toBe(mockSurveyId1);
159159
});
160160

161+
test("filters out surveys that have a segment with filters if userId is not set", () => {
162+
environment.data.surveys = [
163+
{
164+
...baseSurvey,
165+
id: mockSurveyId1,
166+
segment: {
167+
id: mockSegmentId1,
168+
filters: [{ type: "string", key: "name", value: "John" }],
169+
},
170+
} as TSurvey,
171+
];
172+
173+
const result = filterSurveys(environment, user);
174+
expect(result).toHaveLength(0);
175+
});
176+
177+
test("includes surveys without segment filters for anonymous users", () => {
178+
environment.data.surveys = [
179+
{
180+
...baseSurvey,
181+
id: mockSurveyId1,
182+
segment: undefined, // No segment at all
183+
} as TSurvey,
184+
{
185+
...baseSurvey,
186+
id: mockSurveyId2,
187+
segment: { id: mockSegmentId1 }, // Segment but no filters
188+
} as TSurvey,
189+
];
190+
191+
const result = filterSurveys(environment, user);
192+
expect(result).toHaveLength(2);
193+
});
194+
161195
test("skips surveys that already displayed if displayOnce is used", () => {
162196
environment.data.surveys = [
163197
{

packages/react-native/src/lib/common/utils.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,11 @@ export const filterSurveys = (
111111
});
112112

113113
if (!userId) {
114-
return filteredSurveys;
114+
// exclude surveys that have a segment with filters
115+
return filteredSurveys.filter((survey) => {
116+
const segmentFiltersLength = survey.segment?.filters?.length ?? 0;
117+
return segmentFiltersLength === 0;
118+
});
115119
}
116120

117121
if (!segments.length) {

0 commit comments

Comments
 (0)