diff --git a/apps/web/app/(app)/workspaces/[workspaceId]/surveys/[surveyId]/(analysis)/summary/lib/surveySummary.test.ts b/apps/web/app/(app)/workspaces/[workspaceId]/surveys/[surveyId]/(analysis)/summary/lib/surveySummary.test.ts index 2e2319e48f3e..ce4c229ed459 100644 --- a/apps/web/app/(app)/workspaces/[workspaceId]/surveys/[surveyId]/(analysis)/summary/lib/surveySummary.test.ts +++ b/apps/web/app/(app)/workspaces/[workspaceId]/surveys/[surveyId]/(analysis)/summary/lib/surveySummary.test.ts @@ -96,7 +96,6 @@ const mockBaseSurvey: TSurvey = { surveyClosedMessage: null, pin: null, createdBy: "user_123", - isSingleResponsePerEmailEnabled: false, isVerifyEmailEnabled: false, workspaceOverwrites: null, showLanguageSwitch: false, diff --git a/apps/web/app/api/(internal)/pipeline/lib/__mocks__/survey-follow-up.mock.ts b/apps/web/app/api/(internal)/pipeline/lib/__mocks__/survey-follow-up.mock.ts index e800dfdc656a..57f5ee31b65e 100644 --- a/apps/web/app/api/(internal)/pipeline/lib/__mocks__/survey-follow-up.mock.ts +++ b/apps/web/app/api/(internal)/pipeline/lib/__mocks__/survey-follow-up.mock.ts @@ -152,7 +152,6 @@ export const mockSurvey: TSurvey = { displayPercentage: null, autoComplete: null, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, isBackButtonHidden: false, recaptcha: null, workspaceOverwrites: null, diff --git a/apps/web/app/api/v1/client/[workspaceId]/environment/lib/environmentState.test.ts b/apps/web/app/api/v1/client/[workspaceId]/environment/lib/environmentState.test.ts index edb9b309eadf..303f1f7f8906 100644 --- a/apps/web/app/api/v1/client/[workspaceId]/environment/lib/environmentState.test.ts +++ b/apps/web/app/api/v1/client/[workspaceId]/environment/lib/environmentState.test.ts @@ -111,7 +111,6 @@ const mockSurveys: TSurvey[] = [ endings: [], followUps: [], isBackButtonHidden: false, - isSingleResponsePerEmailEnabled: false, isVerifyEmailEnabled: false, workspaceOverwrites: null, showLanguageSwitch: false, diff --git a/apps/web/app/api/v2/client/[workspaceId]/responses/lib/utils.test.ts b/apps/web/app/api/v2/client/[workspaceId]/responses/lib/utils.test.ts index 4ea0f392e7d5..74e0dd47e728 100644 --- a/apps/web/app/api/v2/client/[workspaceId]/responses/lib/utils.test.ts +++ b/apps/web/app/api/v2/client/[workspaceId]/responses/lib/utils.test.ts @@ -95,7 +95,6 @@ const mockSurvey: TSurvey = { endings: [], followUps: [], isBackButtonHidden: false, - isSingleResponsePerEmailEnabled: false, isVerifyEmailEnabled: false, workspaceOverwrites: null, showLanguageSwitch: false, diff --git a/apps/web/app/api/v3/surveys/patch.test.ts b/apps/web/app/api/v3/surveys/patch.test.ts index 088ab496f89b..d773f534fafe 100644 --- a/apps/web/app/api/v3/surveys/patch.test.ts +++ b/apps/web/app/api/v3/surveys/patch.test.ts @@ -147,7 +147,6 @@ const currentSurvey = { singleUse: null, isVerifyEmailEnabled: false, recaptcha: null, - isSingleResponsePerEmailEnabled: false, isBackButtonHidden: false, isAutoProgressingEnabled: false, isCaptureIpEnabled: false, diff --git a/apps/web/app/lib/templates.ts b/apps/web/app/lib/templates.ts index 11e56c0962d4..c1f273e97161 100644 --- a/apps/web/app/lib/templates.ts +++ b/apps/web/app/lib/templates.ts @@ -4991,7 +4991,6 @@ export const previewSurvey = (workspaceName: string, t: TFunction): TSurvey => { displayPercentage: null, autoComplete: 50, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, workspaceOverwrites: null, surveyClosedMessage: null, singleUse: { diff --git a/apps/web/i18n.lock b/apps/web/i18n.lock index 5856e624172d..885e3e81efa8 100644 --- a/apps/web/i18n.lock +++ b/apps/web/i18n.lock @@ -647,7 +647,6 @@ checksums: s/please_try_again_with_the_original_link: ff903c908d199ae654436972dc0576f9 s/preview_survey_questions: 2cbdd526f6652d5ee0337e23477d3396 s/question_preview: 9d8fbc0150fc10ba851beba2d4f4d9f3 - s/response_already_received: 8e7b1a7d6e01a1939bca95285af77a69 s/response_submitted: d5df62e1db6012bd1283126a8dd7bad6 s/scheduled: 0ec63111fd5efe2ac240912105c5f518 s/survey_already_answered_heading: 4783c9c36ad0d4f8eec5dfeb14a04545 @@ -3260,8 +3259,6 @@ checksums: workspace/surveys/edit/please_set_a_survey_trigger: 0358142df37dd1724f629008a1db453a workspace/surveys/edit/please_specify: e1faa6cd085144f7339c7e74dc6fb366 workspace/surveys/edit/present_your_survey_in_multiple_languages: 37f28b0a092d68322fedbc2e0c221ef3 - workspace/surveys/edit/prevent_double_submission: afc502baa2da81d9c9618da1c3b5a57a - workspace/surveys/edit/prevent_double_submission_description: ef7d2aa22d43bdc6ccebb076c6aa9ce5 workspace/surveys/edit/progress_saved: d7bfc189571f08bbb4d0240cb9363ffa workspace/surveys/edit/protect_survey_with_pin: 16d1925b6a5770f7423772d6d9a8291a workspace/surveys/edit/protect_survey_with_pin_description: 0e55d19b6f3578b1024e03606172a5d2 diff --git a/apps/web/lib/responses.test.ts b/apps/web/lib/responses.test.ts index 6b9bc4e7e5af..ee6967524b5f 100644 --- a/apps/web/lib/responses.test.ts +++ b/apps/web/lib/responses.test.ts @@ -253,7 +253,6 @@ describe("Response Processing", () => { showLanguageSwitch: false, isBackButtonHidden: false, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, displayPercentage: 100, styling: null, workspaceOverwrites: null, diff --git a/apps/web/lib/survey/__mock__/survey.mock.ts b/apps/web/lib/survey/__mock__/survey.mock.ts index 2762ed07c4e1..f145bf3a2619 100644 --- a/apps/web/lib/survey/__mock__/survey.mock.ts +++ b/apps/web/lib/survey/__mock__/survey.mock.ts @@ -218,7 +218,6 @@ const baseSurveyProperties = { enabled: false, }, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, attributeFilters: [], ...commonMockProperties, }; diff --git a/apps/web/lib/survey/service.ts b/apps/web/lib/survey/service.ts index 5aea96ea78cb..f9e1dc45ae0f 100644 --- a/apps/web/lib/survey/service.ts +++ b/apps/web/lib/survey/service.ts @@ -64,7 +64,6 @@ export const selectSurvey = { closeOn: true, archivedAt: true, isVerifyEmailEnabled: true, - isSingleResponsePerEmailEnabled: true, isBackButtonHidden: true, isAutoProgressingEnabled: true, isCaptureIpEnabled: true, diff --git a/apps/web/locales/de-DE.json b/apps/web/locales/de-DE.json index 35a273d98c06..fa888f59a614 100644 --- a/apps/web/locales/de-DE.json +++ b/apps/web/locales/de-DE.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Bitte versuche es erneut mit dem Original-Link", "preview_survey_questions": "Umfragefragen ansehen.", "question_preview": "Fragenvorschau", - "response_already_received": "Wir haben bereits eine Antwort für diese E-Mail-Adresse erhalten.", "response_submitted": "Es existiert bereits eine Antwort, die mit dieser Umfrage und diesem Kontakt verknüpft ist", "scheduled": "Diese Umfrage ist geplant und wird bald live gehen.", "survey_already_answered_heading": "Die Umfrage wurde bereits beantwortet.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Bitte lege einen Umfrage-Trigger fest", "please_specify": "Bitte angeben", "present_your_survey_in_multiple_languages": "Präsentiere deine Umfrage in mehreren Sprachen", - "prevent_double_submission": "Doppeltes Anbschicken verhindern", - "prevent_double_submission_description": "Nur eine Antwort pro E-Mail-Adresse zulassen (beta)", "progress_saved": "Fortschritt gespeichert", "protect_survey_with_pin": "Umfrage mit PIN schützen", "protect_survey_with_pin_description": "Nur Nutzer mit der PIN können auf die Umfrage zugreifen.", diff --git a/apps/web/locales/en-US.json b/apps/web/locales/en-US.json index edb6213b982e..1f2ffb6f0b36 100644 --- a/apps/web/locales/en-US.json +++ b/apps/web/locales/en-US.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Please try again with the original link", "preview_survey_questions": "Preview survey questions.", "question_preview": "Question Preview", - "response_already_received": "We already received a response for this email address.", "response_submitted": "A response linked to this survey and contact already exists", "scheduled": "This survey is scheduled to go live soon.", "survey_already_answered_heading": "The survey has already been answered.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Please set a survey trigger", "please_specify": "Please specify", "present_your_survey_in_multiple_languages": "Present your survey in multiple languages", - "prevent_double_submission": "Prevent double submission", - "prevent_double_submission_description": "Only allow 1 response per email address", "progress_saved": "Progress saved", "protect_survey_with_pin": "Protect survey with a PIN", "protect_survey_with_pin_description": "Only users who have the PIN can access the survey.", diff --git a/apps/web/locales/es-ES.json b/apps/web/locales/es-ES.json index 987c2416c52d..07fd8f27e695 100644 --- a/apps/web/locales/es-ES.json +++ b/apps/web/locales/es-ES.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Por favor, inténtalo de nuevo con el enlace original", "preview_survey_questions": "Vista previa de las preguntas de la encuesta.", "question_preview": "Vista previa de la pregunta", - "response_already_received": "Ya hemos recibido una respuesta para esta dirección de correo electrónico.", "response_submitted": "Ya existe una respuesta vinculada a esta encuesta y contacto", "scheduled": "Esta encuesta está programada para publicarse pronto.", "survey_already_answered_heading": "La encuesta ya ha sido respondida.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Establece un disparador de encuesta", "please_specify": "Por favor, especifica", "present_your_survey_in_multiple_languages": "Presenta tu encuesta en varios idiomas", - "prevent_double_submission": "Evitar envío duplicado", - "prevent_double_submission_description": "Permitir solo 1 respuesta por dirección de correo electrónico", "progress_saved": "Progreso guardado", "protect_survey_with_pin": "Proteger encuesta con un PIN", "protect_survey_with_pin_description": "Solo los usuarios que tengan el PIN pueden acceder a la encuesta.", diff --git a/apps/web/locales/fr-FR.json b/apps/web/locales/fr-FR.json index 1a88f2cfcf64..cd6e41dee7c3 100644 --- a/apps/web/locales/fr-FR.json +++ b/apps/web/locales/fr-FR.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Veuillez réessayer avec le lien d'origine.", "preview_survey_questions": "Aperçu des questions de l'enquête.", "question_preview": "Aperçu de la question", - "response_already_received": "Nous avons déjà reçu une réponse pour cette adresse e-mail.", "response_submitted": "Une réponse liée à cette enquête et à ce contact existe déjà", "scheduled": "Cette enquête est planifiée pour être mise en ligne prochainement.", "survey_already_answered_heading": "L'enquête a déjà été répondue.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Veuillez définir un déclencheur d'enquête.", "please_specify": "Veuillez préciser", "present_your_survey_in_multiple_languages": "Présente ton questionnaire dans plusieurs langues", - "prevent_double_submission": "Empêcher la double soumission", - "prevent_double_submission_description": "Autoriser uniquement 1 réponse par adresse e-mail", "progress_saved": "Progression enregistrée", "protect_survey_with_pin": "Protéger l'enquête par un code PIN", "protect_survey_with_pin_description": "Seules les personnes ayant le code PIN peuvent accéder à l'enquête.", diff --git a/apps/web/locales/hu-HU.json b/apps/web/locales/hu-HU.json index 935a4cf49892..187c25564ef6 100644 --- a/apps/web/locales/hu-HU.json +++ b/apps/web/locales/hu-HU.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Próbálja meg újra az eredeti hivatkozással", "preview_survey_questions": "Kérdőív kérdéseinek előnézete.", "question_preview": "Kérdés előnézete", - "response_already_received": "Már kaptunk választ erről az e-mail-címről.", "response_submitted": "Ehhez a kérdőívhez és partnerhez kapcsolódó válasz már létezik", "scheduled": "Ez a kérdőív ütemezve lett, hogy hamarosan megjelenjen.", "survey_already_answered_heading": "A kérdőív már meg lett válaszolva.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Állítson be kérdőív-aktiválót", "please_specify": "Adja meg", "present_your_survey_in_multiple_languages": "A kérdőív bemutatása több nyelven", - "prevent_double_submission": "Kettős beküldés megakadályozása", - "prevent_double_submission_description": "E-mail-címenként csak 1 válasz engedélyezése", "progress_saved": "Folyamat elmentve", "protect_survey_with_pin": "Kérdőív megvédése PIN-kóddal", "protect_survey_with_pin_description": "Csak a PIN-kóddal rendelkező felhasználók férhetnek hozzá a kérdőívhez.", diff --git a/apps/web/locales/ja-JP.json b/apps/web/locales/ja-JP.json index 02960dec3bb6..81561f36efe0 100644 --- a/apps/web/locales/ja-JP.json +++ b/apps/web/locales/ja-JP.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "元のリンクでもう一度お試しください", "preview_survey_questions": "フォームの質問をプレビュー。", "question_preview": "質問プレビュー", - "response_already_received": "このメールアドレスの回答はすでに受け付けています。", "response_submitted": "このフォームと連絡先にリンクされた回答がすでに存在します", "scheduled": "このアンケートはまもなく公開予定です。", "survey_already_answered_heading": "このフォームはすでに回答されています。", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "フォームのトリガーを設定してください", "please_specify": "具体的に指定してください", "present_your_survey_in_multiple_languages": "アンケートを複数の言語で表示", - "prevent_double_submission": "二重送信を防ぐ", - "prevent_double_submission_description": "メールアドレスごとに1つの回答のみを許可する", "progress_saved": "進捗を保存しました", "protect_survey_with_pin": "PINでフォームを保護", "protect_survey_with_pin_description": "PINを持つユーザーのみがフォームにアクセスできます。", diff --git a/apps/web/locales/nl-NL.json b/apps/web/locales/nl-NL.json index bd7b51a63c0e..80a84b9ac184 100644 --- a/apps/web/locales/nl-NL.json +++ b/apps/web/locales/nl-NL.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Probeer het opnieuw met de originele link", "preview_survey_questions": "Bekijk enquêtevragen.", "question_preview": "Vraagvoorbeeld", - "response_already_received": "We hebben al een reactie ontvangen op dit e-mailadres.", "response_submitted": "Er bestaat al een reactie gekoppeld aan deze enquête en contact", "scheduled": "Deze enquête is gepland om binnenkort live te gaan.", "survey_already_answered_heading": "De enquête is al beantwoord.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Stel een enquêtetrigger in", "please_specify": "Gelieve te specificeren", "present_your_survey_in_multiple_languages": "Toon je enquête in meerdere talen", - "prevent_double_submission": "Voorkom dubbele indiening", - "prevent_double_submission_description": "Er is slechts 1 reactie per e-mailadres toegestaan", "progress_saved": "Voortgang opgeslagen", "protect_survey_with_pin": "Beveilig onderzoek met een pincode", "protect_survey_with_pin_description": "Alleen gebruikers die de pincode hebben, hebben toegang tot de enquête.", diff --git a/apps/web/locales/pt-BR.json b/apps/web/locales/pt-BR.json index 3805c036e4db..1ece3165b4c3 100644 --- a/apps/web/locales/pt-BR.json +++ b/apps/web/locales/pt-BR.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Por favor, tente novamente com o link original", "preview_survey_questions": "Visualizar perguntas da pesquisa.", "question_preview": "Prévia da Pergunta", - "response_already_received": "Já recebemos uma resposta para este endereço de email.", "response_submitted": "Já existe uma resposta vinculada a esta pesquisa e contato", "scheduled": "Esta pesquisa está programada para entrar no ar em breve.", "survey_already_answered_heading": "A pesquisa já foi respondida.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Por favor, configure um gatilho para a pesquisa", "please_specify": "Por favor, especifique", "present_your_survey_in_multiple_languages": "Apresente sua pesquisa em vários idiomas", - "prevent_double_submission": "Evitar envio duplicado", - "prevent_double_submission_description": "Permitir apenas 1 resposta por endereço de email", "progress_saved": "Progresso salvo", "protect_survey_with_pin": "Proteger pesquisa com um PIN", "protect_survey_with_pin_description": "Somente usuários que têm o PIN podem acessar a pesquisa.", diff --git a/apps/web/locales/pt-PT.json b/apps/web/locales/pt-PT.json index df299ba38843..ab9de5a62110 100644 --- a/apps/web/locales/pt-PT.json +++ b/apps/web/locales/pt-PT.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Por favor, tente novamente com o link original", "preview_survey_questions": "Pré-visualizar perguntas do inquérito.", "question_preview": "Pré-visualização da Pergunta", - "response_already_received": "Já recebemos uma resposta para este endereço de email.", "response_submitted": "Já existe uma resposta associada a este inquérito e contacto", "scheduled": "Este inquérito está agendado para ser publicado em breve.", "survey_already_answered_heading": "O inquérito já foi respondido.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Por favor, defina um desencadeador de inquérito", "please_specify": "Por favor, especifique", "present_your_survey_in_multiple_languages": "Apresenta o teu inquérito em vários idiomas", - "prevent_double_submission": "Impedir submissão dupla", - "prevent_double_submission_description": "Permitir apenas 1 resposta por endereço de email", "progress_saved": "Progresso guardado", "protect_survey_with_pin": "Proteger inquérito com um PIN", "protect_survey_with_pin_description": "Apenas utilizadores com o PIN podem aceder ao inquérito.", diff --git a/apps/web/locales/ro-RO.json b/apps/web/locales/ro-RO.json index 1a393a24dc75..a9a0c964a2a6 100644 --- a/apps/web/locales/ro-RO.json +++ b/apps/web/locales/ro-RO.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Vă rugăm să încercați din nou cu linkul original", "preview_survey_questions": "Previzualizare întrebări chestionar", "question_preview": "Previzualizare Întrebare", - "response_already_received": "Am primit deja un răspuns pentru această adresă de email.", "response_submitted": "Un răspuns legat de acest chestionar și contact există deja", "scheduled": "Acest sondaj este programat să devină activ în curând.", "survey_already_answered_heading": "Sondajul a fost deja completat.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Vă rugăm să setați un declanșator sondaj", "please_specify": "Vă rugăm să specificați", "present_your_survey_in_multiple_languages": "Prezintă chestionarul tău în mai multe limbi", - "prevent_double_submission": "Prevenire trimitere dublă", - "prevent_double_submission_description": "Permite doar 1 răspuns per adresă de email.", "progress_saved": "Progres salvat", "protect_survey_with_pin": "Protejați sondajul cu un PIN", "protect_survey_with_pin_description": "Doar utilizatorii care cunosc PIN-ul pot accesa sondajul.", diff --git a/apps/web/locales/ru-RU.json b/apps/web/locales/ru-RU.json index fca3291da41c..914dca57243b 100644 --- a/apps/web/locales/ru-RU.json +++ b/apps/web/locales/ru-RU.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Пожалуйста, попробуйте снова, используя оригинальную ссылку", "preview_survey_questions": "Просмотреть вопросы опроса.", "question_preview": "Предпросмотр вопроса", - "response_already_received": "Мы уже получили ответ для этого адреса электронной почты.", "response_submitted": "Ответ, связанный с этим опросом и контактом, уже существует", "scheduled": "Этот опрос скоро будет запущен.", "survey_already_answered_heading": "Опрос уже был пройден.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Пожалуйста, установите триггер опроса", "please_specify": "Пожалуйста, уточните", "present_your_survey_in_multiple_languages": "Представьте свой опрос на нескольких языках", - "prevent_double_submission": "Предотвратить повторную отправку", - "prevent_double_submission_description": "Разрешить только 1 ответ на один адрес электронной почты", "progress_saved": "Прогресс сохранён", "protect_survey_with_pin": "Защитить опрос с помощью PIN-кода", "protect_survey_with_pin_description": "Только пользователи, у которых есть PIN-код, могут получить доступ к опросу.", diff --git a/apps/web/locales/sv-SE.json b/apps/web/locales/sv-SE.json index d7d77524be3d..518110351a18 100644 --- a/apps/web/locales/sv-SE.json +++ b/apps/web/locales/sv-SE.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Vänligen försök igen med den ursprungliga länken", "preview_survey_questions": "Förhandsgranska enkätfrågor.", "question_preview": "Frågeförhandsgranskning", - "response_already_received": "Vi har redan fått ett svar för denna e-postadress.", "response_submitted": "Ett svar kopplat till denna enkät och kontakt finns redan", "scheduled": "Den här undersökningen är schemalagd att publiceras snart.", "survey_already_answered_heading": "Enkäten har redan besvarats.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Vänligen ställ in en enkätutlösare", "please_specify": "Vänligen specificera", "present_your_survey_in_multiple_languages": "Presentera din enkät på flera språk", - "prevent_double_submission": "Förhindra dubbelinskickning", - "prevent_double_submission_description": "Tillåt endast 1 svar per e-postadress", "progress_saved": "Framsteg sparade", "protect_survey_with_pin": "Skydda enkäten med en PIN", "protect_survey_with_pin_description": "Endast användare som har PIN-koden kan komma åt enkäten.", diff --git a/apps/web/locales/tr-TR.json b/apps/web/locales/tr-TR.json index 0b542fe6b5f1..08e5635fe97a 100644 --- a/apps/web/locales/tr-TR.json +++ b/apps/web/locales/tr-TR.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "Lütfen orijinal bağlantıyla tekrar deneyin", "preview_survey_questions": "Survey sorularını önizleyin.", "question_preview": "Soru Önizlemesi", - "response_already_received": "Bu email adresi için zaten bir yanıt aldık.", "response_submitted": "Bu survey ve kişiye bağlı bir yanıt zaten mevcut", "scheduled": "Bu survey yakında yayına girecek şekilde zamanlandı.", "survey_already_answered_heading": "Survey zaten yanıtlandı.", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "Lütfen bir anket tetikleyicisi ayarla", "please_specify": "Lütfen belirtin", "present_your_survey_in_multiple_languages": "Anketinizi birden fazla dilde sunun", - "prevent_double_submission": "Çift gönderimi engelle", - "prevent_double_submission_description": "E-posta adresi başına yalnızca 1 yanıt kabul et", "progress_saved": "İlerleme kaydedildi", "protect_survey_with_pin": "Anketi PIN ile koru", "protect_survey_with_pin_description": "Ankete yalnızca PIN'e sahip kullanıcılar erişebilir.", diff --git a/apps/web/locales/zh-Hans-CN.json b/apps/web/locales/zh-Hans-CN.json index f10e8c6f4431..6a5bf6b6db88 100644 --- a/apps/web/locales/zh-Hans-CN.json +++ b/apps/web/locales/zh-Hans-CN.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "请 尝试 使用 原始 链接", "preview_survey_questions": "预览 问卷调查 问题。", "question_preview": "问题 预览", - "response_already_received": "我们 已经 收到 这个 邮件 地址 的 回复。", "response_submitted": "与 此 调查 和 联系人 关联 的 响应 已 存在", "scheduled": "此调查已安排,即将上线。", "survey_already_answered_heading": "调查 已经 被 回答", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "请 设置 一个 调查 触发", "please_specify": "请 指定", "present_your_survey_in_multiple_languages": "以多种语言展示您的调查问卷", - "prevent_double_submission": "防止 重复 提交", - "prevent_double_submission_description": "只允许每个 email 地址提供 1 个回复", "progress_saved": "进度已保存", "protect_survey_with_pin": "使用 PIN 保护 调查", "protect_survey_with_pin_description": "只有 拥有 PIN 的 用户 可以 访问 调查。", diff --git a/apps/web/locales/zh-Hant-TW.json b/apps/web/locales/zh-Hant-TW.json index d388ae8b1662..3a950d1575c0 100644 --- a/apps/web/locales/zh-Hant-TW.json +++ b/apps/web/locales/zh-Hant-TW.json @@ -690,7 +690,6 @@ "please_try_again_with_the_original_link": "請使用原始連結再試一次", "preview_survey_questions": "預覽問卷問題。", "question_preview": "問題預覽", - "response_already_received": "我們已收到此電子郵件地址的回應。", "response_submitted": "與此問卷和聯絡人相關的回應已經存在", "scheduled": "此問卷已排程,即將上線。", "survey_already_answered_heading": "問卷已回答。", @@ -3377,8 +3376,6 @@ "please_set_a_survey_trigger": "請設定問卷觸發器", "please_specify": "請指定", "present_your_survey_in_multiple_languages": "以多種語言呈現你的問卷", - "prevent_double_submission": "防止重複提交", - "prevent_double_submission_description": "每個電子郵件地址僅允許 1 個回應", "progress_saved": "進度已儲存", "protect_survey_with_pin": "使用 PIN 碼保護問卷", "protect_survey_with_pin_description": "只有擁有 PIN 碼的使用者才能存取問卷。", diff --git a/apps/web/modules/api/v2/management/surveys/types/surveys.ts b/apps/web/modules/api/v2/management/surveys/types/surveys.ts index 31af7b0ec854..fc537425d1d1 100644 --- a/apps/web/modules/api/v2/management/surveys/types/surveys.ts +++ b/apps/web/modules/api/v2/management/surveys/types/surveys.ts @@ -43,7 +43,6 @@ export const ZSurveyInput = ZSurveyWithoutQuestionType.pick({ closeOn: true, singleUse: true, isVerifyEmailEnabled: true, - isSingleResponsePerEmailEnabled: true, inlineTriggers: true, displayPercentage: true, welcomeCard: true, diff --git a/apps/web/modules/core/rate-limit/rate-limit-configs.test.ts b/apps/web/modules/core/rate-limit/rate-limit-configs.test.ts index 704cc705dc40..41ce037bad00 100644 --- a/apps/web/modules/core/rate-limit/rate-limit-configs.test.ts +++ b/apps/web/modules/core/rate-limit/rate-limit-configs.test.ts @@ -95,7 +95,6 @@ describe("rateLimitConfigs", () => { "accountDeletion", "surveyFollowUp", "sendLinkSurveyEmail", - "isSurveyResponsePresent", "validateSurveyPin", "licenseRecheck", "unsplash", diff --git a/apps/web/modules/core/rate-limit/rate-limit-configs.ts b/apps/web/modules/core/rate-limit/rate-limit-configs.ts index b5e573ff553a..916f2df0e3eb 100644 --- a/apps/web/modules/core/rate-limit/rate-limit-configs.ts +++ b/apps/web/modules/core/rate-limit/rate-limit-configs.ts @@ -42,11 +42,6 @@ export const rateLimitConfigs = { allowedPerInterval: 10, namespace: "action:send-link-survey-email", }, // 10 per hour - isSurveyResponsePresent: { - interval: 60, - allowedPerInterval: 10, - namespace: "action:survey-response-present", - }, // 10 per minute — prevents email-enumeration oracle validateSurveyPin: { interval: 60, allowedPerInterval: 10, diff --git a/apps/web/modules/ee/contacts/segments/components/segment-activity-utils.test.ts b/apps/web/modules/ee/contacts/segments/components/segment-activity-utils.test.ts index 145feed01950..06f24480c008 100644 --- a/apps/web/modules/ee/contacts/segments/components/segment-activity-utils.test.ts +++ b/apps/web/modules/ee/contacts/segments/components/segment-activity-utils.test.ts @@ -49,7 +49,6 @@ const createSurvey = (overrides: Partial): TSurvey => languages: [], showLanguageSwitch: false, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, isBackButtonHidden: false, recaptcha: null, variables: [], diff --git a/apps/web/modules/ee/quotas/lib/evaluation-service.test.ts b/apps/web/modules/ee/quotas/lib/evaluation-service.test.ts index 543b900c9588..0bba967c6c74 100644 --- a/apps/web/modules/ee/quotas/lib/evaluation-service.test.ts +++ b/apps/web/modules/ee/quotas/lib/evaluation-service.test.ts @@ -114,7 +114,6 @@ describe("Quota Evaluation Service", () => { createdBy: null, followUps: [], isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, surveyClosedMessage: null, singleUse: null, pin: null, diff --git a/apps/web/modules/email/fixtures/embed-survey-preview-email-fixture.ts b/apps/web/modules/email/fixtures/embed-survey-preview-email-fixture.ts index 445e3c161828..6cb9b6e2466d 100644 --- a/apps/web/modules/email/fixtures/embed-survey-preview-email-fixture.ts +++ b/apps/web/modules/email/fixtures/embed-survey-preview-email-fixture.ts @@ -106,7 +106,6 @@ const createPreviewSurvey = (element: TSurveyElement): TSurvey => isAutoProgressingEnabled: false, isCaptureIpEnabled: false, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, }) as unknown as TSurvey; const createPreviewElementByType = (type: TSurveyElementTypeEnum): TSurveyElement => { diff --git a/apps/web/modules/survey/editor/components/response-options-card.tsx b/apps/web/modules/survey/editor/components/response-options-card.tsx index 6a1130ac5316..41100d2ba827 100644 --- a/apps/web/modules/survey/editor/components/response-options-card.tsx +++ b/apps/web/modules/survey/editor/components/response-options-card.tsx @@ -52,9 +52,6 @@ export const ResponseOptionsCard = ({ const [surveyClosedMessageToggle, setSurveyClosedMessageToggle] = useState(false); const [verifyEmailToggle, setVerifyEmailToggle] = useState(localSurvey.isVerifyEmailEnabled); const [recaptchaToggle, setRecaptchaToggle] = useState(localSurvey.recaptcha?.enabled ?? false); - const [singleResponsePerEmailToggle, setSingleResponsePerEmailToggle] = useState( - localSurvey.isSingleResponsePerEmailEnabled - ); const [captureIpToggle, setCaptureIpToggle] = useState(localSurvey.isCaptureIpEnabled); const [surveyClosedMessage, setSurveyClosedMessage] = useState({ @@ -127,14 +124,6 @@ export const ResponseOptionsCard = ({ setLocalSurvey({ ...localSurvey, isVerifyEmailEnabled: !localSurvey.isVerifyEmailEnabled }); }; - const handleSingleResponsePerEmailToggle = () => { - setSingleResponsePerEmailToggle(!singleResponsePerEmailToggle); - setLocalSurvey({ - ...localSurvey, - isSingleResponsePerEmailEnabled: !localSurvey.isSingleResponsePerEmailEnabled, - }); - }; - const handleClosedSurveyMessageChange = ({ heading, subheading, @@ -522,17 +511,7 @@ export const ResponseOptionsCard = ({ onToggle={handleVerifyEmailToogle} title={t("workspace.surveys.edit.verify_email_before_submission")} description={t("workspace.surveys.edit.verify_email_before_submission_description")} - childBorder={true}> -
- -
- + /> {/* Protect Survey with Pin */} ({ languages: [], displayPercentage: null, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, singleUse: null, pin: null, workspaceOverwrites: null, diff --git a/apps/web/modules/survey/editor/lib/check-external-urls-permission.test.ts b/apps/web/modules/survey/editor/lib/check-external-urls-permission.test.ts index 24e8ef2c92d9..cf0a16beef48 100644 --- a/apps/web/modules/survey/editor/lib/check-external-urls-permission.test.ts +++ b/apps/web/modules/survey/editor/lib/check-external-urls-permission.test.ts @@ -41,7 +41,6 @@ describe("checkExternalUrlsPermission", () => { singleUse: null, isVerifyEmailEnabled: false, recaptcha: null, - isSingleResponsePerEmailEnabled: false, isBackButtonHidden: false, pin: null, displayPercentage: null, diff --git a/apps/web/modules/survey/editor/lib/survey.test.ts b/apps/web/modules/survey/editor/lib/survey.test.ts index 77404a7638fc..a46850351252 100644 --- a/apps/web/modules/survey/editor/lib/survey.test.ts +++ b/apps/web/modules/survey/editor/lib/survey.test.ts @@ -54,7 +54,6 @@ describe("Survey Editor Library Tests", () => { singleUse: null, isVerifyEmailEnabled: false, recaptcha: null, - isSingleResponsePerEmailEnabled: false, isBackButtonHidden: false, isCaptureIpEnabled: false, pin: null, diff --git a/apps/web/modules/survey/lib/survey.ts b/apps/web/modules/survey/lib/survey.ts index 05b0f7b77b6d..e49172b3e4bb 100644 --- a/apps/web/modules/survey/lib/survey.ts +++ b/apps/web/modules/survey/lib/survey.ts @@ -32,7 +32,6 @@ export const selectSurvey = { publishOn: true, closeOn: true, isVerifyEmailEnabled: true, - isSingleResponsePerEmailEnabled: true, isCaptureIpEnabled: true, redirectUrl: true, workspaceOverwrites: true, diff --git a/apps/web/modules/survey/link/actions.ts b/apps/web/modules/survey/link/actions.ts index ac685732e074..46aa33eb235f 100644 --- a/apps/web/modules/survey/link/actions.ts +++ b/apps/web/modules/survey/link/actions.ts @@ -9,7 +9,7 @@ import { applyIPRateLimit } from "@/modules/core/rate-limit/helpers"; import { rateLimitConfigs } from "@/modules/core/rate-limit/rate-limit-configs"; import { getOrganizationLogoUrl } from "@/modules/ee/whitelabel/email-customization/lib/organization"; import { sendLinkSurveyToVerifiedEmail } from "@/modules/email"; -import { getSurveyWithMetadata, isSurveyResponsePresent } from "@/modules/survey/link/lib/data"; +import { getSurveyWithMetadata } from "@/modules/survey/link/lib/data"; import { createLinkSurveyPinToken } from "@/modules/survey/link/lib/pin-token"; export const sendLinkSurveyEmailAction = actionClient @@ -56,25 +56,3 @@ export const validateSurveyPinAction = actionClient return { survey, pinAuthToken: createLinkSurveyPinToken(survey.id) }; }); - -const ZIsSurveyResponsePresentAction = z.object({ - surveyId: z.cuid2(), - email: z.email(), -}); - -export const isSurveyResponsePresentAction = actionClient - .inputSchema(ZIsSurveyResponsePresentAction) - .action(async ({ parsedInput }) => { - await applyIPRateLimit(rateLimitConfigs.actions.isSurveyResponsePresent); - - const survey = await getSurveyWithMetadata(parsedInput.surveyId); - if (!survey) { - throw new ResourceNotFoundError("Survey", parsedInput.surveyId); - } - - if (!survey.isSingleResponsePerEmailEnabled) { - throw new InvalidInputError("SINGLE_RESPONSE_PER_EMAIL_NOT_ENABLED"); - } - - return await isSurveyResponsePresent(parsedInput.surveyId, parsedInput.email)(); - }); diff --git a/apps/web/modules/survey/link/components/verify-email.tsx b/apps/web/modules/survey/link/components/verify-email.tsx index 8b0b466e6840..3747f07a49ac 100644 --- a/apps/web/modules/survey/link/components/verify-email.tsx +++ b/apps/web/modules/survey/link/components/verify-email.tsx @@ -16,7 +16,7 @@ import { getLocalizedValue } from "@/lib/i18n/utils"; import { getFormattedErrorMessage } from "@/lib/utils/helper"; import { replaceHeadlineRecall } from "@/lib/utils/recall"; import { getElementsFromBlocks } from "@/modules/survey/lib/client-utils"; -import { isSurveyResponsePresentAction, sendLinkSurveyEmailAction } from "@/modules/survey/link/actions"; +import { sendLinkSurveyEmailAction } from "@/modules/survey/link/actions"; import { getWebAppLocale } from "@/modules/survey/link/lib/utils"; import { Button } from "@/modules/ui/components/button"; import { FormControl, FormError, FormField, FormItem } from "@/modules/ui/components/form"; @@ -83,19 +83,6 @@ export const VerifyEmail = ({ const submitEmail = async (emailInput: TVerifyEmailInput) => { const email = emailInput.email.toLowerCase(); - if (localSurvey.isSingleResponsePerEmailEnabled) { - const actionResult = await isSurveyResponsePresentAction({ - surveyId: localSurvey.id, - email, - }); - if (actionResult?.data) { - form.setError("email", { - type: "custom", - message: t("s.response_already_received"), - }); - return; - } - } const data = { surveyId: localSurvey.id, diff --git a/apps/web/modules/survey/link/lib/data.test.ts b/apps/web/modules/survey/link/lib/data.test.ts index 548922f4e78f..26a9913b4d87 100644 --- a/apps/web/modules/survey/link/lib/data.test.ts +++ b/apps/web/modules/survey/link/lib/data.test.ts @@ -12,7 +12,6 @@ import { getResponseBySingleUseId, getSurveyMetadata, getSurveyWithMetadata, - isSurveyResponsePresent, } from "./data"; vi.mock("server-only", () => ({})); @@ -77,7 +76,6 @@ describe("data", () => { displayPercentage: null, autoComplete: null, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, redirectUrl: null, pin: null, isBackButtonHidden: false, @@ -200,7 +198,6 @@ describe("data", () => { displayPercentage: null, autoComplete: null, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, redirectUrl: null, pin: null, isBackButtonHidden: false, @@ -303,64 +300,6 @@ describe("data", () => { }); }); - describe("isSurveyResponsePresent", () => { - test("should return true when response with email exists", async () => { - const surveyId = "survey-1"; - const email = "test@example.com"; - const mockResponse = { id: "response-1" }; - - vi.mocked(prisma.response.findFirst).mockResolvedValue(mockResponse as any); - - const result = await isSurveyResponsePresent(surveyId, email)(); - - expect(result).toBe(true); - expect(prisma.response.findFirst).toHaveBeenCalledWith({ - where: { - surveyId, - data: { - path: ["verifiedEmail"], - equals: email, - }, - }, - select: { id: true }, - }); - }); - - test("should return false when no response with email exists", async () => { - const surveyId = "survey-1"; - const email = "nonexistent@example.com"; - - vi.mocked(prisma.response.findFirst).mockResolvedValue(null); - - const result = await isSurveyResponsePresent(surveyId, email)(); - - expect(result).toBe(false); - }); - - test("should throw DatabaseError on Prisma error", async () => { - const surveyId = "survey-1"; - const email = "test@example.com"; - const prismaError = new Prisma.PrismaClientKnownRequestError("Database error", { - code: "P2025", - clientVersion: "5.0.0", - }); - - vi.mocked(prisma.response.findFirst).mockRejectedValue(prismaError); - - await expect(isSurveyResponsePresent(surveyId, email)()).rejects.toThrow(DatabaseError); - }); - - test("should rethrow non-Prisma errors", async () => { - const surveyId = "survey-1"; - const email = "test@example.com"; - const genericError = new Error("Generic error"); - - vi.mocked(prisma.response.findFirst).mockRejectedValue(genericError); - - await expect(isSurveyResponsePresent(surveyId, email)()).rejects.toThrow(genericError); - }); - }); - describe("getExistingContactResponse", () => { const mockResponse = { id: "response-1", diff --git a/apps/web/modules/survey/link/lib/data.ts b/apps/web/modules/survey/link/lib/data.ts index 078ae1cdc34e..0b9c94621d49 100644 --- a/apps/web/modules/survey/link/lib/data.ts +++ b/apps/web/modules/survey/link/lib/data.ts @@ -44,7 +44,6 @@ export const getSurveyWithMetadata = reactCache(async (surveyId: string) => { // Authentication & access isVerifyEmailEnabled: true, - isSingleResponsePerEmailEnabled: true, redirectUrl: true, pin: true, isBackButtonHidden: true, @@ -194,32 +193,6 @@ export const getResponseBySingleUseId = reactCache((surveyId: string, singleUseI } }); -/** - * Check if email verification response exists - * NO CACHING - response data changes frequently and needs to be fresh - */ -export const isSurveyResponsePresent = reactCache((surveyId: string, email: string) => async () => { - try { - const response = await prisma.response.findFirst({ - where: { - surveyId, - data: { - path: ["verifiedEmail"], - equals: email, - }, - }, - select: { id: true }, - }); - - return !!response; - } catch (error) { - if (error instanceof Prisma.PrismaClientKnownRequestError) { - throw new DatabaseError(error.message); - } - throw error; - } -}); - /** * Get existing contact response for contact surveys * NO CACHING - response data changes frequently and needs to be fresh diff --git a/apps/web/modules/survey/link/lib/utils.test.ts b/apps/web/modules/survey/link/lib/utils.test.ts index 84ef0ee68d23..73fb98bda30f 100644 --- a/apps/web/modules/survey/link/lib/utils.test.ts +++ b/apps/web/modules/survey/link/lib/utils.test.ts @@ -45,7 +45,6 @@ const createMockSurvey = (languages: TSurvey["languages"] = []): TSurvey => languages, displayPercentage: null, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, singleUse: null, pin: null, workspaceOverwrites: null, diff --git a/apps/web/modules/survey/templates/lib/minimal-survey.ts b/apps/web/modules/survey/templates/lib/minimal-survey.ts index 58b85ec6f07c..86d8d1ba238d 100644 --- a/apps/web/modules/survey/templates/lib/minimal-survey.ts +++ b/apps/web/modules/survey/templates/lib/minimal-survey.ts @@ -39,7 +39,6 @@ export const getMinimalSurvey = (t: TFunction): TSurvey => ({ languages: [], showLanguageSwitch: false, isVerifyEmailEnabled: false, - isSingleResponsePerEmailEnabled: false, variables: [], followUps: [], isBackButtonHidden: false, diff --git a/apps/web/playwright/survey-email-preview.spec.ts b/apps/web/playwright/survey-email-preview.spec.ts index 4f31be9dbd72..f29e0c02b019 100644 --- a/apps/web/playwright/survey-email-preview.spec.ts +++ b/apps/web/playwright/survey-email-preview.spec.ts @@ -46,7 +46,6 @@ const createSurveySeed = async ( isAutoProgressingEnabled: surveyFixture.isAutoProgressingEnabled, isCaptureIpEnabled: surveyFixture.isCaptureIpEnabled, isVerifyEmailEnabled: surveyFixture.isVerifyEmailEnabled, - isSingleResponsePerEmailEnabled: surveyFixture.isSingleResponsePerEmailEnabled, variables, }, }); diff --git a/docs/api-v2-reference/openapi.yml b/docs/api-v2-reference/openapi.yml index f1ffc0ff54f9..c86e05f65107 100644 --- a/docs/api-v2-reference/openapi.yml +++ b/docs/api-v2-reference/openapi.yml @@ -5741,9 +5741,6 @@ components: isVerifyEmailEnabled: type: boolean description: Whether email verification is enabled - isSingleResponsePerEmailEnabled: - type: boolean - description: Whether single response per email is enabled inlineTriggers: type: - array @@ -5829,7 +5826,6 @@ components: - styling - singleUse - isVerifyEmailEnabled - - isSingleResponsePerEmailEnabled - inlineTriggers - isBackButtonHidden - isAutoProgressingEnabled diff --git a/packages/database/migration/20260825000000_remove_is_single_response_per_email_enabled_from_survey/migration.sql b/packages/database/migration/20260825000000_remove_is_single_response_per_email_enabled_from_survey/migration.sql new file mode 100644 index 000000000000..ae217afaeef9 --- /dev/null +++ b/packages/database/migration/20260825000000_remove_is_single_response_per_email_enabled_from_survey/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Survey" DROP COLUMN IF EXISTS "isSingleResponsePerEmailEnabled"; diff --git a/packages/database/schema/main.prisma b/packages/database/schema/main.prisma index 84f842b3c2e4..92ab6ae0c74c 100644 --- a/packages/database/schema/main.prisma +++ b/packages/database/schema/main.prisma @@ -398,21 +398,20 @@ model Survey { /// [SurveySingleUse] singleUse Json? @default("{\"enabled\": false, \"isEncrypted\": true}") - isVerifyEmailEnabled Boolean @default(false) - isSingleResponsePerEmailEnabled Boolean @default(false) - isBackButtonHidden Boolean @default(false) - isAutoProgressingEnabled Boolean @default(false) - isCaptureIpEnabled Boolean @default(false) - pin String? - displayPercentage Decimal? - languages SurveyLanguage[] - showLanguageSwitch Boolean? - followUps SurveyFollowUp[] + isVerifyEmailEnabled Boolean @default(false) + isBackButtonHidden Boolean @default(false) + isAutoProgressingEnabled Boolean @default(false) + isCaptureIpEnabled Boolean @default(false) + pin String? + displayPercentage Decimal? + languages SurveyLanguage[] + showLanguageSwitch Boolean? + followUps SurveyFollowUp[] /// [SurveyRecaptcha] - recaptcha Json? @default("{\"enabled\": false, \"threshold\":0.1}") + recaptcha Json? @default("{\"enabled\": false, \"threshold\":0.1}") /// [SurveyLinkMetadata] - metadata Json @default("{}") - feedbackSourceMappings FeedbackSourceFormbricksMapping[] + metadata Json @default("{}") + feedbackSourceMappings FeedbackSourceFormbricksMapping[] slug String? @unique diff --git a/packages/database/zod/surveys.ts b/packages/database/zod/surveys.ts index 34c03537ade9..056051a1ac30 100644 --- a/packages/database/zod/surveys.ts +++ b/packages/database/zod/surveys.ts @@ -138,7 +138,6 @@ const ZSurveyBase = z.object({ }) .describe("Single use configuration"), isVerifyEmailEnabled: z.boolean().describe("Whether email verification is enabled"), - isSingleResponsePerEmailEnabled: z.boolean().describe("Whether single response per email is enabled"), inlineTriggers: z.array(z.any()).nullable().describe("Inline triggers configuration"), isBackButtonHidden: z.boolean().describe("Whether the back button is hidden"), isAutoProgressingEnabled: z.boolean().describe("Whether auto-progress is enabled for eligible questions"), diff --git a/packages/types/surveys/types.ts b/packages/types/surveys/types.ts index 5a3e6a936b05..664c64a0b6b7 100644 --- a/packages/types/surveys/types.ts +++ b/packages/types/surveys/types.ts @@ -970,7 +970,6 @@ export const ZSurveyBase = z.object({ singleUse: ZSurveySingleUse.nullable(), isVerifyEmailEnabled: z.boolean(), recaptcha: ZSurveyRecaptcha.nullable(), - isSingleResponsePerEmailEnabled: z.boolean(), isBackButtonHidden: z.boolean(), isAutoProgressingEnabled: z.boolean().optional().prefault(false), isCaptureIpEnabled: z.boolean(),