{
const germanOption = screen.getByText("German");
fireEvent.click(germanOption);
- rerender(
-
- );
- expect(setSurveyUrl).toHaveBeenCalled();
- expect(surveyUrl).toContain("lang=de");
+ expect(mockGetSurveyUrl).toHaveBeenCalledWith(survey, publicDomain, "de");
+ expect(setSurveyUrl).toHaveBeenCalledWith(`${publicDomain}/s/${survey.id}?lang=de`);
});
});
diff --git a/apps/web/modules/analysis/components/ShareSurveyLink/index.tsx b/apps/web/modules/analysis/components/ShareSurveyLink/index.tsx
index e2029b352f..2cb4bf8e67 100644
--- a/apps/web/modules/analysis/components/ShareSurveyLink/index.tsx
+++ b/apps/web/modules/analysis/components/ShareSurveyLink/index.tsx
@@ -1,5 +1,6 @@
"use client";
+import { useSingleUseId } from "@/modules/survey/hooks/useSingleUseId";
import { Button } from "@/modules/ui/components/button";
import { useTranslate } from "@tolgee/react";
import { Copy, SquareArrowOutUpRight } from "lucide-react";
@@ -32,6 +33,22 @@ export const ShareSurveyLink = ({
setSurveyUrl(url);
};
+ const { refreshSingleUseId } = useSingleUseId(survey);
+
+ const getPreviewUrl = async () => {
+ const previewUrl = new URL(surveyUrl);
+
+ if (survey.singleUse?.enabled) {
+ const newId = await refreshSingleUseId();
+ if (newId) {
+ previewUrl.searchParams.set("suId", newId);
+ }
+ }
+
+ previewUrl.searchParams.set("preview", "true");
+ return previewUrl.toString();
+ };
+
return (
@@ -53,14 +70,9 @@ export const ShareSurveyLink = ({
title={t("environments.surveys.preview_survey_in_a_new_tab")}
aria-label={t("environments.surveys.preview_survey_in_a_new_tab")}
disabled={!surveyUrl}
- onClick={() => {
- let previewUrl = surveyUrl;
- if (previewUrl.includes("?")) {
- previewUrl += "&preview=true";
- } else {
- previewUrl += "?preview=true";
- }
- window.open(previewUrl, "_blank");
+ onClick={async () => {
+ const url = await getPreviewUrl();
+ window.open(url, "_blank");
}}>
{t("common.preview")}
diff --git a/apps/web/modules/survey/hooks/useSingleUseId.tsx b/apps/web/modules/survey/hooks/useSingleUseId.tsx
index cd91311316..63ee15cfd6 100644
--- a/apps/web/modules/survey/hooks/useSingleUseId.tsx
+++ b/apps/web/modules/survey/hooks/useSingleUseId.tsx
@@ -14,7 +14,7 @@ export const useSingleUseId = (survey: TSurvey | TSurveyList) => {
if (survey.singleUse?.enabled) {
const response = await generateSingleUseIdsAction({
surveyId: survey.id,
- isEncrypted: !!survey.singleUse?.isEncrypted,
+ isEncrypted: Boolean(survey.singleUse?.isEncrypted),
count: 1,
});