diff --git a/Sources/FormbricksSDK/Manager/SurveyManager.swift b/Sources/FormbricksSDK/Manager/SurveyManager.swift index f5b34c4c..21e0bf34 100644 --- a/Sources/FormbricksSDK/Manager/SurveyManager.swift +++ b/Sources/FormbricksSDK/Manager/SurveyManager.swift @@ -46,6 +46,19 @@ final class SurveyManager { filteredSurveys = filterSurveysBasedOnDisplayType(surveys, displays: displays, responses: responses) filteredSurveys = filterSurveysBasedOnRecontactDays(filteredSurveys, defaultRecontactDays: environment.data.data.project.recontactDays) + + // If we don't have a user, we exclude surveys that have segments with filters + if userManager.userId == nil { + filteredSurveys = filteredSurveys.filter { survey in + // Include surveys with no segment + guard let segment = survey.segment else { + return true + } + + // Include surveys with segments but no filters + return segment.filters.isEmpty + } + } // If we have a user, we do more filtering if userManager.userId != nil { diff --git a/Sources/FormbricksSDK/Manager/UserManager.swift b/Sources/FormbricksSDK/Manager/UserManager.swift index 899b4db8..e523a7b3 100644 --- a/Sources/FormbricksSDK/Manager/UserManager.swift +++ b/Sources/FormbricksSDK/Manager/UserManager.swift @@ -139,6 +139,9 @@ final class UserManager: UserManagerSyncable { syncTimer = nil updateQueue?.cleanup() + // Re-filter surveys for logged out user + surveyManager?.filterSurveys() + if isUserIdDefined { Formbricks.logger?.debug("Successfully logged out user and reset the user state.") }