From 75315ea2c544b27a391c771f4238a416a5d6223a Mon Sep 17 00:00:00 2001 From: Dhruwang Jariwala <67850763+Dhruwang@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:36:25 +0530 Subject: [PATCH] fix: tolgee tweaks (#4809) Co-authored-by: Piyush Gupta --- .husky/post-checkout | 3 ++- .husky/post-commit | 1 - .husky/pre-commit | 20 +++++++++++-------- .../notion/components/AddIntegrationModal.tsx | 2 +- .../components/ResponseTableColumns.tsx | 2 +- .../components/QuestionSummaryHeader.tsx | 2 +- .../summary/components/SummaryDropOffs.tsx | 2 +- .../editor/components/add-question-button.tsx | 12 +++++------ .../editor/components/editor-card-menu.tsx | 12 +++++------ .../survey/editor/components/logic-editor.tsx | 2 +- .../editor/components/question-card.tsx | 2 +- apps/web/modules/survey/editor/lib/utils.tsx | 2 +- .../follow-ups/components/follow-up-modal.tsx | 2 +- .../web/modules/survey/lib}/questions.tsx | 2 +- .../data-table-settings-modal-item.tsx | 2 +- apps/web/tolgee/client.tsx | 13 ++++++++++-- apps/web/tolgee/server.tsx | 13 ++++++++++-- branch.json | 1 - 18 files changed, 58 insertions(+), 37 deletions(-) delete mode 100644 .husky/post-commit rename {packages/lib/utils => apps/web/modules/survey/lib}/questions.tsx (99%) delete mode 100644 branch.json diff --git a/.husky/post-checkout b/.husky/post-checkout index 27720e0e8c..f8efd47397 100644 --- a/.husky/post-checkout +++ b/.husky/post-checkout @@ -1 +1,2 @@ -echo "{\"branchName\": \"$(git rev-parse --abbrev-ref HEAD)\"}" > ./branch.json \ No newline at end of file +echo "{\"branchName\": \"$(git rev-parse --abbrev-ref HEAD)\"}" > ./branch.json +prettier --write ./branch.json diff --git a/.husky/post-commit b/.husky/post-commit deleted file mode 100644 index 27720e0e8c..0000000000 --- a/.husky/post-commit +++ /dev/null @@ -1 +0,0 @@ -echo "{\"branchName\": \"$(git rev-parse --abbrev-ref HEAD)\"}" > ./branch.json \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit index 3f07a37a6d..51573b039b 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -3,15 +3,19 @@ # Load environment variables from .env files if [ -f .env ]; then - export $(cat .env | grep -v '#' | xargs) + set -a + . .env + set +a fi pnpm lint-staged -if [ -z "$NEXT_PUBLIC_TOLGEE_API_KEY" ]; then - echo "Skipping tolgee-pull: NEXT_PUBLIC_TOLGEE_API_KEY is not set" -else - pnpm run tolgee-pull - git add packages/lib/messages -fi - +# Run tolgee-pull if branch.json exists and NEXT_PUBLIC_TOLGEE_API_KEY is not set +if [ -f branch.json ]; then + if [ -z "$NEXT_PUBLIC_TOLGEE_API_KEY" ]; then + echo "Skipping tolgee-pull: NEXT_PUBLIC_TOLGEE_API_KEY is not set" + else + pnpm run tolgee-pull + git add packages/lib/messages + fi +fi \ No newline at end of file diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/notion/components/AddIntegrationModal.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/notion/components/AddIntegrationModal.tsx index 3dacc286f6..73fdb91ec8 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/notion/components/AddIntegrationModal.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/notion/components/AddIntegrationModal.tsx @@ -7,6 +7,7 @@ import { UNSUPPORTED_TYPES_BY_NOTION, } from "@/app/(app)/environments/[environmentId]/integrations/notion/constants"; import NotionLogo from "@/images/notion.png"; +import { getQuestionTypes } from "@/modules/survey/lib/questions"; import { Button } from "@/modules/ui/components/button"; import { DropdownSelector } from "@/modules/ui/components/dropdown-selector"; import { Label } from "@/modules/ui/components/label"; @@ -19,7 +20,6 @@ import { useForm } from "react-hook-form"; import toast from "react-hot-toast"; import { getLocalizedValue } from "@formbricks/lib/i18n/utils"; import { structuredClone } from "@formbricks/lib/pollyfills/structuredClone"; -import { getQuestionTypes } from "@formbricks/lib/utils/questions"; import { replaceHeadlineRecall } from "@formbricks/lib/utils/recall"; import { TIntegrationInput } from "@formbricks/types/integration"; import { diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/components/ResponseTableColumns.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/components/ResponseTableColumns.tsx index 5c8735a7d6..634c3206b2 100644 --- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/components/ResponseTableColumns.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/responses/components/ResponseTableColumns.tsx @@ -1,6 +1,7 @@ "use client"; import { RenderResponse } from "@/modules/analysis/components/SingleResponseCard/components/RenderResponse"; +import { VARIABLES_ICON_MAP, getQuestionIconMap } from "@/modules/survey/lib/questions"; import { getSelectionColumn } from "@/modules/ui/components/data-table"; import { ResponseBadges } from "@/modules/ui/components/response-badges"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/modules/ui/components/tooltip"; @@ -12,7 +13,6 @@ import { getLocalizedValue } from "@formbricks/lib/i18n/utils"; import { processResponseData } from "@formbricks/lib/responses"; import { getContactIdentifier } from "@formbricks/lib/utils/contact"; import { getFormattedDateTimeString } from "@formbricks/lib/utils/datetime"; -import { VARIABLES_ICON_MAP, getQuestionIconMap } from "@formbricks/lib/utils/questions"; import { recallToHeadline } from "@formbricks/lib/utils/recall"; import { TResponseTableData } from "@formbricks/types/responses"; import { TSurvey, TSurveyQuestion } from "@formbricks/types/surveys/types"; diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/QuestionSummaryHeader.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/QuestionSummaryHeader.tsx index dbc5136f84..2b6adca6d3 100644 --- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/QuestionSummaryHeader.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/QuestionSummaryHeader.tsx @@ -1,9 +1,9 @@ "use client"; +import { getQuestionTypes } from "@/modules/survey/lib/questions"; import { useTranslate } from "@tolgee/react"; import { InboxIcon } from "lucide-react"; import type { JSX } from "react"; -import { getQuestionTypes } from "@formbricks/lib/utils/questions"; import { recallToHeadline } from "@formbricks/lib/utils/recall"; import { TSurvey, TSurveyQuestionSummary } from "@formbricks/types/surveys/types"; diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/SummaryDropOffs.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/SummaryDropOffs.tsx index 7e1a2594d5..5478eff0a5 100644 --- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/SummaryDropOffs.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/components/SummaryDropOffs.tsx @@ -1,10 +1,10 @@ "use client"; +import { getQuestionIcon } from "@/modules/survey/lib/questions"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/modules/ui/components/tooltip"; import { useTranslate } from "@tolgee/react"; import { TimerIcon } from "lucide-react"; import { JSX } from "react"; -import { getQuestionIcon } from "@formbricks/lib/utils/questions"; import { recallToHeadline } from "@formbricks/lib/utils/recall"; import { TSurvey, TSurveyQuestionType, TSurveySummary } from "@formbricks/types/surveys/types"; diff --git a/apps/web/modules/survey/editor/components/add-question-button.tsx b/apps/web/modules/survey/editor/components/add-question-button.tsx index f0903f035c..2a4d375159 100644 --- a/apps/web/modules/survey/editor/components/add-question-button.tsx +++ b/apps/web/modules/survey/editor/components/add-question-button.tsx @@ -1,5 +1,11 @@ "use client"; +import { + getCXQuestionTypes, + getQuestionDefaults, + getQuestionTypes, + universalQuestionPresets, +} from "@/modules/survey/lib/questions"; import { useAutoAnimate } from "@formkit/auto-animate/react"; import { createId } from "@paralleldrive/cuid2"; import { Project } from "@prisma/client"; @@ -8,12 +14,6 @@ import { useTranslate } from "@tolgee/react"; import { PlusIcon } from "lucide-react"; import { useState } from "react"; import { cn } from "@formbricks/lib/cn"; -import { - getCXQuestionTypes, - getQuestionDefaults, - getQuestionTypes, - universalQuestionPresets, -} from "@formbricks/lib/utils/questions"; interface AddQuestionButtonProps { addQuestion: (question: any) => void; diff --git a/apps/web/modules/survey/editor/components/editor-card-menu.tsx b/apps/web/modules/survey/editor/components/editor-card-menu.tsx index 0a0033d58a..3b147e60e3 100644 --- a/apps/web/modules/survey/editor/components/editor-card-menu.tsx +++ b/apps/web/modules/survey/editor/components/editor-card-menu.tsx @@ -1,5 +1,11 @@ "use client"; +import { + getCXQuestionNameMap, + getQuestionDefaults, + getQuestionIconMap, + getQuestionNameMap, +} from "@/modules/survey/lib/questions"; import { Button } from "@/modules/ui/components/button"; import { ConfirmationModal } from "@/modules/ui/components/confirmation-modal"; import { @@ -17,12 +23,6 @@ import { Project } from "@prisma/client"; import { useTranslate } from "@tolgee/react"; import { ArrowDownIcon, ArrowUpIcon, CopyIcon, EllipsisIcon, TrashIcon } from "lucide-react"; import { useState } from "react"; -import { - getCXQuestionNameMap, - getQuestionDefaults, - getQuestionIconMap, - getQuestionNameMap, -} from "@formbricks/lib/utils/questions"; import { TSurvey, TSurveyEndScreenCard, diff --git a/apps/web/modules/survey/editor/components/logic-editor.tsx b/apps/web/modules/survey/editor/components/logic-editor.tsx index 0da6a1f9eb..d3c4be5c2f 100644 --- a/apps/web/modules/survey/editor/components/logic-editor.tsx +++ b/apps/web/modules/survey/editor/components/logic-editor.tsx @@ -2,6 +2,7 @@ import { LogicEditorActions } from "@/modules/survey/editor/components/logic-editor-actions"; import { LogicEditorConditions } from "@/modules/survey/editor/components/logic-editor-conditions"; +import { getQuestionIconMap } from "@/modules/survey/lib/questions"; import { Select, SelectContent, @@ -13,7 +14,6 @@ import { useTranslate } from "@tolgee/react"; import { ArrowRightIcon } from "lucide-react"; import { ReactElement, useMemo } from "react"; import { getLocalizedValue } from "@formbricks/lib/i18n/utils"; -import { getQuestionIconMap } from "@formbricks/lib/utils/questions"; import { TSurvey, TSurveyLogic, TSurveyQuestion } from "@formbricks/types/surveys/types"; interface LogicEditorProps { diff --git a/apps/web/modules/survey/editor/components/question-card.tsx b/apps/web/modules/survey/editor/components/question-card.tsx index d6245e4763..738c9d2cb0 100644 --- a/apps/web/modules/survey/editor/components/question-card.tsx +++ b/apps/web/modules/survey/editor/components/question-card.tsx @@ -18,6 +18,7 @@ import { PictureSelectionForm } from "@/modules/survey/editor/components/picture import { RankingQuestionForm } from "@/modules/survey/editor/components/ranking-question-form"; import { RatingQuestionForm } from "@/modules/survey/editor/components/rating-question-form"; import { formatTextWithSlashes } from "@/modules/survey/editor/lib/utils"; +import { getQuestionIconMap, getTSurveyQuestionTypeEnumName } from "@/modules/survey/lib/questions"; import { Label } from "@/modules/ui/components/label"; import { Switch } from "@/modules/ui/components/switch"; import { useSortable } from "@dnd-kit/sortable"; @@ -29,7 +30,6 @@ import { useTranslate } from "@tolgee/react"; import { ChevronDownIcon, ChevronRightIcon, GripIcon } from "lucide-react"; import { useState } from "react"; import { cn } from "@formbricks/lib/cn"; -import { getQuestionIconMap, getTSurveyQuestionTypeEnumName } from "@formbricks/lib/utils/questions"; import { recallToHeadline } from "@formbricks/lib/utils/recall"; import { TI18nString, diff --git a/apps/web/modules/survey/editor/lib/utils.tsx b/apps/web/modules/survey/editor/lib/utils.tsx index b7a1a9cfc7..5e06a1cf50 100644 --- a/apps/web/modules/survey/editor/lib/utils.tsx +++ b/apps/web/modules/survey/editor/lib/utils.tsx @@ -1,4 +1,5 @@ import { TriggerUpdate } from "@/modules/survey/editor/types/survey-trigger"; +import { getQuestionTypes } from "@/modules/survey/lib/questions"; import { TComboboxGroupedOption, TComboboxOption } from "@/modules/ui/components/input-combo-box"; import { ActionClass } from "@prisma/client"; import { TFnType } from "@tolgee/react"; @@ -7,7 +8,6 @@ import { HTMLInputTypeAttribute } from "react"; import { getLocalizedValue } from "@formbricks/lib/i18n/utils"; import { surveyCache } from "@formbricks/lib/survey/cache"; import { isConditionGroup } from "@formbricks/lib/surveyLogic/utils"; -import { getQuestionTypes } from "@formbricks/lib/utils/questions"; import { recallToHeadline } from "@formbricks/lib/utils/recall"; import { InvalidInputError } from "@formbricks/types/errors"; import { diff --git a/apps/web/modules/survey/follow-ups/components/follow-up-modal.tsx b/apps/web/modules/survey/follow-ups/components/follow-up-modal.tsx index ff3a926684..28346b6013 100644 --- a/apps/web/modules/survey/follow-ups/components/follow-up-modal.tsx +++ b/apps/web/modules/survey/follow-ups/components/follow-up-modal.tsx @@ -6,6 +6,7 @@ import { ZCreateSurveyFollowUpFormSchema, } from "@/modules/survey/editor/types/survey-follow-up"; import FollowUpActionMultiEmailInput from "@/modules/survey/follow-ups/components/follow-up-action-multi-email-input"; +import { getQuestionIconMap } from "@/modules/survey/lib/questions"; import { Button } from "@/modules/ui/components/button"; import { Checkbox } from "@/modules/ui/components/checkbox"; import { Editor } from "@/modules/ui/components/editor"; @@ -38,7 +39,6 @@ import { useForm } from "react-hook-form"; import toast from "react-hot-toast"; import { TSurveyFollowUpAction, TSurveyFollowUpTrigger } from "@formbricks/database/types/survey-follow-up"; import { getLocalizedValue } from "@formbricks/lib/i18n/utils"; -import { getQuestionIconMap } from "@formbricks/lib/utils/questions"; import { recallToHeadline } from "@formbricks/lib/utils/recall"; import { TSurvey, TSurveyQuestionTypeEnum } from "@formbricks/types/surveys/types"; import { TUserLocale } from "@formbricks/types/user"; diff --git a/packages/lib/utils/questions.tsx b/apps/web/modules/survey/lib/questions.tsx similarity index 99% rename from packages/lib/utils/questions.tsx rename to apps/web/modules/survey/lib/questions.tsx index 490b97faf7..4c6b8acbda 100644 --- a/packages/lib/utils/questions.tsx +++ b/apps/web/modules/survey/lib/questions.tsx @@ -20,6 +20,7 @@ import { StarIcon, } from "lucide-react"; import type { JSX } from "react"; +import { replaceQuestionPresetPlaceholders } from "@formbricks/lib/utils/templates"; import { TSurveyQuestionTypeEnum as QuestionId, TSurveyAddressQuestion, @@ -38,7 +39,6 @@ import { TSurveyRankingQuestion, TSurveyRatingQuestion, } from "@formbricks/types/surveys/types"; -import { replaceQuestionPresetPlaceholders } from "./templates"; export type TQuestion = { id: string; diff --git a/apps/web/modules/ui/components/data-table/components/data-table-settings-modal-item.tsx b/apps/web/modules/ui/components/data-table/components/data-table-settings-modal-item.tsx index ecc1ca1efa..b46b617a05 100644 --- a/apps/web/modules/ui/components/data-table/components/data-table-settings-modal-item.tsx +++ b/apps/web/modules/ui/components/data-table/components/data-table-settings-modal-item.tsx @@ -1,5 +1,6 @@ "use client"; +import { getQuestionIconMap } from "@/modules/survey/lib/questions"; import { Switch } from "@/modules/ui/components/switch"; import { useSortable } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; @@ -8,7 +9,6 @@ import { useTranslate } from "@tolgee/react"; import { capitalize } from "lodash"; import { GripVertical } from "lucide-react"; import { getLocalizedValue } from "@formbricks/lib/i18n/utils"; -import { getQuestionIconMap } from "@formbricks/lib/utils/questions"; import { TSurvey } from "@formbricks/types/surveys/types"; interface DataTableSettingsModalItemProps { diff --git a/apps/web/tolgee/client.tsx b/apps/web/tolgee/client.tsx index 9384d5e5aa..82ddc5acb2 100644 --- a/apps/web/tolgee/client.tsx +++ b/apps/web/tolgee/client.tsx @@ -3,9 +3,18 @@ import { TolgeeProvider, TolgeeStaticData } from "@tolgee/react"; import { useRouter } from "next/navigation"; import { useEffect } from "react"; -import branch from "../../../branch.json"; import { TolgeeBase } from "./shared"; +// Try to import branch.json, but handle the case where it doesn't exist +let branchName: string | undefined; +try { + const branch = require("../../../branch.json"); + branchName = branch.branchName; +} catch (e) { + // File doesn't exist in production, so we'll use undefined + branchName = undefined; +} + type Props = { language: string; staticData: TolgeeStaticData; @@ -13,7 +22,7 @@ type Props = { }; const tolgee = TolgeeBase().init({ - tagNewKeys: [`draft:${branch.branchName}`], + tagNewKeys: branchName ? [`draft:${branchName}`] : [], }); export const TolgeeNextProvider = ({ language, staticData, children }: Props) => { diff --git a/apps/web/tolgee/server.tsx b/apps/web/tolgee/server.tsx index d40a27a7aa..81c0abbc73 100644 --- a/apps/web/tolgee/server.tsx +++ b/apps/web/tolgee/server.tsx @@ -1,13 +1,22 @@ import { createServerInstance } from "@tolgee/react/server"; -import branch from "../../../branch.json"; import { getLocale } from "./language"; import { TolgeeBase } from "./shared"; +// Try to import branch.json, but handle the case where it doesn't exist +let branchName: string | undefined; +try { + const branch = require("../../../branch.json"); + branchName = branch.branchName; +} catch (e) { + // File doesn't exist in production, so we'll use undefined + branchName = undefined; +} + export const { getTolgee, getTranslate, T } = createServerInstance({ getLocale: getLocale, createTolgee: async (language) => { return TolgeeBase().init({ - tagNewKeys: [`draft:${branch.branchName}`], + tagNewKeys: branchName ? [`draft:${branchName}`] : [], observerOptions: { fullKeyEncode: true, }, diff --git a/branch.json b/branch.json deleted file mode 100644 index 310555cd9b..0000000000 --- a/branch.json +++ /dev/null @@ -1 +0,0 @@ -{ "branchName": "main" }