Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions apps/web/i18n.lock
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,14 @@ checksums:
emails/response_finished_email_subject: 7e8b92b483242ddb31ba83e8fcf890f9
emails/schedule_your_meeting: 01683323bd7373560cd2cb2737dbaf06
emails/select_a_date: 521e4a705800da06d091fde3e801ce02
emails/sso_recovery_factors_removed_email_did_not_expect: 30209a930b9cd3dcc05b2fc8eb5e5f0f
emails/sso_recovery_factors_removed_email_heading: cd9ed20b14050b7ab38fb9e6537ad161
emails/sso_recovery_factors_removed_email_password: a5acd53c33bfb0d4360931b8cfd1eb09
emails/sso_recovery_factors_removed_email_review_security: 651d94f70a60445c61f95ea1ab337a44
emails/sso_recovery_factors_removed_email_sign_in_hint: f20332a23dd3e882c507792a3f9927dc
emails/sso_recovery_factors_removed_email_subject: 1de9cb05afff7ce807dfab3511bda848
emails/sso_recovery_factors_removed_email_text: fcf21b6d3fd4408b1b433d1be3e8f509
emails/sso_recovery_factors_removed_email_two_factor: 83d572df760fdce5cdb8fa8df9ea07ad
emails/survey_response_finished_email_congrats: 4cc39698d6a16f68cf7d9db902c5978e
emails/survey_response_finished_email_dont_want_notifications: 749171800180682839896dc04a53ca10
emails/survey_response_finished_email_hey: 20c5157a424f7d49ceeb27e6fb13d194
Expand Down
49 changes: 49 additions & 0 deletions apps/web/lib/surveyLogic/utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,55 @@ describe("surveyLogic", () => {
expect(evaluateLogic(mockSurvey, data, vars, group, "en")).toBe(true);
});

test("evaluateLogic treats doesNotEqual as the inverse of equals for single-selection answers", () => {
const multiSurvey: TJsWorkspaceStateSurvey = {
...mockSurvey,
blocks: [
...mockSurvey.blocks,
{
id: "multiBlock",
name: "Multi Choice Block",
elements: [
{
id: "multiQ",
type: TSurveyElementTypeEnum.MultipleChoiceMulti,
headline: { default: "Multiple Choice" },
required: true,
choices: [
{ id: "opt1", label: { default: "Option 1" } },
{ id: "opt2", label: { default: "Option 2" } },
],
},
],
},
],
};
// answer labels resolve to choice ids, so a single selection of "Option 1" becomes ["opt1"]
const data: TResponseData = { multiQ: ["Option 1"] };
const vars: TResponseVariables = {};

const condition = (operator: "equals" | "doesNotEqual", value: string): TConditionGroup => ({
id: "g",
connector: "and",
conditions: [
{
id: "c1",
operator,
leftOperand: { type: "element", value: "multiQ" },
rightOperand: { type: "static", value },
},
],
});

// the selection matches the condition value: equals is true, so doesNotEqual must be false
expect(evaluateLogic(multiSurvey, data, vars, condition("equals", "opt1"), "en")).toBe(true);
expect(evaluateLogic(multiSurvey, data, vars, condition("doesNotEqual", "opt1"), "en")).toBe(false);

// the selection does not match: equals is false, doesNotEqual is true
expect(evaluateLogic(multiSurvey, data, vars, condition("equals", "opt2"), "en")).toBe(false);
expect(evaluateLogic(multiSurvey, data, vars, condition("doesNotEqual", "opt2"), "en")).toBe(true);
});

test("performActions calculates, requires, and jumps correctly", () => {
const data: TResponseData = { q: "5" };
const initialVars: TResponseVariables = {};
Expand Down
14 changes: 7 additions & 7 deletions apps/web/lib/surveyLogic/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -376,13 +376,13 @@ const evaluateSingleCondition = (
}
}

return (
(Array.isArray(leftValue) &&
leftValue.length === 1 &&
typeof rightValue === "string" &&
!leftValue.includes(rightValue)) ||
leftValue !== rightValue
);
// decide inside the guard: OR-ing past it would fall through to `leftValue !== rightValue`,
// which is always true for an array vs. a string (a matching single selection included)
if (Array.isArray(leftValue) && leftValue.length === 1 && typeof rightValue === "string") {
return !leftValue.includes(rightValue);
}

return leftValue !== rightValue;
case "contains":
return String(leftValue).includes(String(rightValue));
case "doesNotContain":
Expand Down
8 changes: 8 additions & 0 deletions apps/web/locales/de-DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,14 @@
"response_finished_email_subject": "Eine Antwort für {surveyName} wurde ausgefüllt ✅",
"schedule_your_meeting": "Plane dein Meeting",
"select_a_date": "Wähle ein Datum",
"sso_recovery_factors_removed_email_did_not_expect": "Falls du dich gerade nicht per Single Sign-On angemeldet hast, kontaktiere sofort deinen Administrator.",
"sso_recovery_factors_removed_email_heading": "Anmeldemethoden von deinem Konto entfernt",
"sso_recovery_factors_removed_email_password": "Dein Passwort wurde entfernt.",
"sso_recovery_factors_removed_email_review_security": "Sicherheitseinstellungen überprüfen",
"sso_recovery_factors_removed_email_sign_in_hint": "Du kannst dich weiterhin per Single Sign-On anmelden. Um wieder ein Passwort oder Zwei-Faktor-Authentifizierung zu verwenden, richte sie in deinen Sicherheitseinstellungen ein.",
"sso_recovery_factors_removed_email_subject": "Anmeldemethoden wurden von deinem Formbricks-Konto entfernt",
"sso_recovery_factors_removed_email_text": "Du hast dich gerade zum ersten Mal per Single Sign-On angemeldet. Da deine E-Mail-Adresse nie verifiziert wurde, haben wir die Anmeldemethoden entfernt, die zuvor für das Konto eingerichtet waren:",
"sso_recovery_factors_removed_email_two_factor": "Zwei-Faktor-Authentifizierung wurde entfernt.",
"survey_response_finished_email_congrats": "Glückwunsch, du hast eine neue Antwort auf deine Umfrage erhalten! Jemand hat gerade deine Umfrage ausgefüllt: {surveyName}",
"survey_response_finished_email_dont_want_notifications": "Möchtest du diese Benachrichtigungen nicht mehr erhalten?",
"survey_response_finished_email_hey": "Hey 👋",
Expand Down
8 changes: 8 additions & 0 deletions apps/web/locales/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,14 @@
"response_finished_email_subject": "A response for {surveyName} was completed ✅",
"schedule_your_meeting": "Schedule your meeting",
"select_a_date": "Select a date",
"sso_recovery_factors_removed_email_did_not_expect": "If you did not just sign in with single sign-on, contact your administrator immediately.",
"sso_recovery_factors_removed_email_heading": "Sign-in factors removed from your account",
"sso_recovery_factors_removed_email_password": "Your password was removed.",
"sso_recovery_factors_removed_email_review_security": "Review security settings",
"sso_recovery_factors_removed_email_sign_in_hint": "You can keep signing in with single sign-on. To use a password or two-factor authentication again, set them up in your security settings.",
"sso_recovery_factors_removed_email_subject": "Sign-in factors were removed from your Formbricks account",
"sso_recovery_factors_removed_email_text": "You just signed in with single sign-on for the first time. Because your email address had never been verified, we removed the sign-in factors that were set on the account before:",
"sso_recovery_factors_removed_email_two_factor": "Two-factor authentication was removed.",
"survey_response_finished_email_congrats": "Congrats, you received a new response to your survey! Someone just completed your survey: {surveyName}",
"survey_response_finished_email_dont_want_notifications": "Do not want to get these notifications?",
"survey_response_finished_email_hey": "Hey 👋",
Expand Down
8 changes: 8 additions & 0 deletions apps/web/locales/es-ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,14 @@
"response_finished_email_subject": "Se completó una respuesta para {surveyName} ✅",
"schedule_your_meeting": "Programa tu reunión",
"select_a_date": "Selecciona una fecha",
"sso_recovery_factors_removed_email_did_not_expect": "Si no acabas de iniciar sesión con inicio de sesión único, contacta con tu administrador inmediatamente.",
"sso_recovery_factors_removed_email_heading": "Factores de inicio de sesión eliminados de tu cuenta",
"sso_recovery_factors_removed_email_password": "Tu contraseña fue eliminada.",
"sso_recovery_factors_removed_email_review_security": "Revisar configuración de seguridad",
"sso_recovery_factors_removed_email_sign_in_hint": "Puedes seguir iniciando sesión con inicio de sesión único. Para usar de nuevo una contraseña o autenticación de dos factores, configúralas en tu configuración de seguridad.",
"sso_recovery_factors_removed_email_subject": "Se eliminaron factores de inicio de sesión de tu cuenta de Formbricks",
"sso_recovery_factors_removed_email_text": "Acabas de iniciar sesión con inicio de sesión único por primera vez. Como tu dirección de correo electrónico nunca había sido verificada, eliminamos los factores de inicio de sesión que estaban configurados en la cuenta anteriormente:",
"sso_recovery_factors_removed_email_two_factor": "La autenticación de dos factores fue eliminada.",
"survey_response_finished_email_congrats": "Enhorabuena, has recibido una nueva respuesta a tu encuesta. Alguien acaba de completar tu encuesta: {surveyName}",
"survey_response_finished_email_dont_want_notifications": "¿No quieres recibir estas notificaciones?",
"survey_response_finished_email_hey": "Hola 👋",
Expand Down
8 changes: 8 additions & 0 deletions apps/web/locales/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,14 @@
"response_finished_email_subject": "Une réponse pour {surveyName} a été complétée ✅",
"schedule_your_meeting": "Planifier votre rendez-vous",
"select_a_date": "Sélectionner une date",
"sso_recovery_factors_removed_email_did_not_expect": "Si tu ne viens pas de te connecter avec l'authentification unique, contacte ton administrateur immédiatement.",
"sso_recovery_factors_removed_email_heading": "Méthodes de connexion supprimées de ton compte",
"sso_recovery_factors_removed_email_password": "Ton mot de passe a été supprimé.",
"sso_recovery_factors_removed_email_review_security": "Consulter les paramètres de sécurité",
"sso_recovery_factors_removed_email_sign_in_hint": "Tu peux continuer à te connecter avec l'authentification unique. Pour utiliser à nouveau un mot de passe ou l'authentification à deux facteurs, configure-les dans tes paramètres de sécurité.",
"sso_recovery_factors_removed_email_subject": "Des méthodes de connexion ont été supprimées de ton compte Formbricks",
"sso_recovery_factors_removed_email_text": "Tu viens de te connecter avec l'authentification unique pour la première fois. Comme ton adresse e-mail n'avait jamais été vérifiée, nous avons supprimé les méthodes de connexion qui étaient configurées auparavant sur le compte :",
"sso_recovery_factors_removed_email_two_factor": "L'authentification à deux facteurs a été supprimée.",
"survey_response_finished_email_congrats": "Félicitations, vous avez reçu une nouvelle réponse à votre enquête ! Quelqu'un vient de compléter votre enquête : {surveyName}",
"survey_response_finished_email_dont_want_notifications": "Vous ne voulez pas recevoir ces notifications ?",
"survey_response_finished_email_hey": "Salut 👋",
Expand Down
8 changes: 8 additions & 0 deletions apps/web/locales/hu-HU.json
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,14 @@
"response_finished_email_subject": "A(z) {surveyName} kérdőívre adott válasz befejeződött ✅",
"schedule_your_meeting": "Megbeszélés ütemezése",
"select_a_date": "Dátum kiválasztása",
"sso_recovery_factors_removed_email_did_not_expect": "Amennyiben nem Ön jelentkezett be egyszeri bejelentkezéssel, kérjük, haladéktalanul vegye fel a kapcsolatot az adminisztrátorával.",
"sso_recovery_factors_removed_email_heading": "A bejelentkezési tényezők eltávolításra kerültek a fiókjából",
"sso_recovery_factors_removed_email_password": "A jelszava eltávolításra került.",
"sso_recovery_factors_removed_email_review_security": "Biztonsági beállítások áttekintése",
"sso_recovery_factors_removed_email_sign_in_hint": "A továbbiakban egyszeri bejelentkezéssel jelentkezhet be. Amennyiben ismételten jelszót vagy kétfaktoros hitelesítést kíván használni, kérjük, állítsa be azokat a biztonsági beállításokban.",
"sso_recovery_factors_removed_email_subject": "Bejelentkezési tényezők eltávolításra kerültek az Ön Formbricks fiókjából",
"sso_recovery_factors_removed_email_text": "Ön most jelentkezett be először egyszeri bejelentkezéssel. Mivel az e-mail címe korábban nem került megerősítésre, eltávolítottuk a fiókon korábban beállított bejelentkezési tényezőket:",
"sso_recovery_factors_removed_email_two_factor": "A kétfaktoros hitelesítés eltávolításra került.",
"survey_response_finished_email_congrats": "Gratulálunk, új válasz érkezett a kérdőívére! Valaki épp most töltötte ki ezt a kérdőívet: {surveyName}",
"survey_response_finished_email_dont_want_notifications": "Nem szeretné megkapni ezeket az értesítéseket?",
"survey_response_finished_email_hey": "Helló 👋",
Expand Down
8 changes: 8 additions & 0 deletions apps/web/locales/ja-JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,14 @@
"response_finished_email_subject": "{surveyName} の回答が完了しました ✅",
"schedule_your_meeting": "ミーティングを予約",
"select_a_date": "日付を選択",
"sso_recovery_factors_removed_email_did_not_expect": "シングルサインオンでサインインした覚えがない場合は、すぐに管理者に連絡してください。",
"sso_recovery_factors_removed_email_heading": "アカウントからサインイン要素が削除されました",
"sso_recovery_factors_removed_email_password": "パスワードが削除されました。",
"sso_recovery_factors_removed_email_review_security": "セキュリティ設定を確認する",
"sso_recovery_factors_removed_email_sign_in_hint": "今後もシングルサインオンでサインインできます。パスワードや二要素認証を再度使用したい場合は、セキュリティ設定で設定してください。",
"sso_recovery_factors_removed_email_subject": "Formbricksアカウントからサインイン要素が削除されました",
"sso_recovery_factors_removed_email_text": "初めてシングルサインオンでサインインしました。メールアドレスが未確認だったため、以前アカウントに設定されていた以下のサインイン要素を削除しました:",
"sso_recovery_factors_removed_email_two_factor": "二要素認証が削除されました。",
"survey_response_finished_email_congrats": "おめでとうございます、新しい回答が届きました!{surveyName} フォームへの回答が完了しました。",
"survey_response_finished_email_dont_want_notifications": "これらの通知を受け取りたくないですか?",
"survey_response_finished_email_hey": "こんにちは 👋",
Expand Down
8 changes: 8 additions & 0 deletions apps/web/locales/nl-NL.json
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,14 @@
"response_finished_email_subject": "Er is een reactie voor {surveyName} voltooid ✅",
"schedule_your_meeting": "Plan uw vergadering",
"select_a_date": "Selecteer een datum",
"sso_recovery_factors_removed_email_did_not_expect": "Als je niet zojuist bent ingelogd met single sign-on, neem dan onmiddellijk contact op met je beheerder.",
"sso_recovery_factors_removed_email_heading": "Inlogfactoren verwijderd van je account",
"sso_recovery_factors_removed_email_password": "Je wachtwoord is verwijderd.",
"sso_recovery_factors_removed_email_review_security": "Bekijk beveiligingsinstellingen",
"sso_recovery_factors_removed_email_sign_in_hint": "Je kunt blijven inloggen met single sign-on. Om opnieuw een wachtwoord of tweefactorauthenticatie te gebruiken, stel je deze in via je beveiligingsinstellingen.",
"sso_recovery_factors_removed_email_subject": "Inlogfactoren zijn verwijderd van je Formbricks-account",
"sso_recovery_factors_removed_email_text": "Je bent zojuist voor het eerst ingelogd met single sign-on. Omdat je e-mailadres nog nooit was geverifieerd, hebben we de inlogfactoren verwijderd die eerder op het account waren ingesteld:",
"sso_recovery_factors_removed_email_two_factor": "Tweefactorauthenticatie is verwijderd.",
"survey_response_finished_email_congrats": "Gefeliciteerd, u heeft een nieuwe reactie op uw enquête ontvangen! Iemand heeft zojuist uw enquête ingevuld: {surveyName}",
"survey_response_finished_email_dont_want_notifications": "Wil je deze meldingen niet ontvangen?",
"survey_response_finished_email_hey": "Hé 👋",
Expand Down
8 changes: 8 additions & 0 deletions apps/web/locales/pt-BR.json
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,14 @@
"response_finished_email_subject": "Uma resposta para {surveyName} foi concluída ✅",
"schedule_your_meeting": "Agendar sua reunião",
"select_a_date": "Selecione uma data",
"sso_recovery_factors_removed_email_did_not_expect": "Se você não acabou de fazer login com logon único, entre em contato com seu administrador imediatamente.",
"sso_recovery_factors_removed_email_heading": "Fatores de autenticação removidos da sua conta",
"sso_recovery_factors_removed_email_password": "Sua senha foi removida.",
"sso_recovery_factors_removed_email_review_security": "Revisar configurações de segurança",
"sso_recovery_factors_removed_email_sign_in_hint": "Você pode continuar fazendo login com logon único. Para usar uma senha ou autenticação de dois fatores novamente, configure-os nas suas configurações de segurança.",
"sso_recovery_factors_removed_email_subject": "Fatores de autenticação foram removidos da sua conta Formbricks",
"sso_recovery_factors_removed_email_text": "Você acabou de fazer login com logon único pela primeira vez. Como seu endereço de e-mail nunca havia sido verificado, removemos os fatores de autenticação que estavam configurados na conta anteriormente:",
"sso_recovery_factors_removed_email_two_factor": "A autenticação de dois fatores foi removida.",
"survey_response_finished_email_congrats": "Parabéns, você recebeu uma nova resposta na sua pesquisa! Alguém acabou de completar sua pesquisa: {surveyName}",
"survey_response_finished_email_dont_want_notifications": "Não quer receber essas notificações?",
"survey_response_finished_email_hey": "E aí 👋",
Expand Down
8 changes: 8 additions & 0 deletions apps/web/locales/pt-PT.json
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,14 @@
"response_finished_email_subject": "Uma resposta para {surveyName} foi concluída ✅",
"schedule_your_meeting": "Agende a sua reunião",
"select_a_date": "Selecionar uma data",
"sso_recovery_factors_removed_email_did_not_expect": "Se não acabaste de iniciar sessão com single sign-on, contacta o teu administrador imediatamente.",
"sso_recovery_factors_removed_email_heading": "Fatores de início de sessão removidos da tua conta",
"sso_recovery_factors_removed_email_password": "A tua palavra-passe foi removida.",
"sso_recovery_factors_removed_email_review_security": "Rever definições de segurança",
"sso_recovery_factors_removed_email_sign_in_hint": "Podes continuar a iniciar sessão com single sign-on. Para voltares a usar uma palavra-passe ou autenticação de dois fatores, configura-as nas tuas definições de segurança.",
"sso_recovery_factors_removed_email_subject": "Fatores de início de sessão foram removidos da tua conta Formbricks",
"sso_recovery_factors_removed_email_text": "Acabaste de iniciar sessão com single sign-on pela primeira vez. Como o teu endereço de email nunca tinha sido verificado, removemos os fatores de início de sessão que estavam configurados na conta anteriormente:",
"sso_recovery_factors_removed_email_two_factor": "A autenticação de dois fatores foi removida.",
"survey_response_finished_email_congrats": "Parabéns, recebeu uma nova resposta ao seu inquérito! Alguém acabou de completar o seu inquérito: {surveyName}",
"survey_response_finished_email_dont_want_notifications": "Não quer receber estas notificações?",
"survey_response_finished_email_hey": "Olá 👋",
Expand Down
Loading
Loading