From 692d178a24b6951d226b06f6ae3bd44a843ff84f Mon Sep 17 00:00:00 2001 From: AbdBarho Date: Sun, 5 Feb 2023 07:16:12 +0100 Subject: [PATCH] Fix localization in for labelling (#1132) --- .../components/Messages/LabelInputGroup.tsx | 14 +++++---- .../src/components/Messages/LabelPopup.tsx | 8 ++--- website/src/pages/messages/[id]/index.tsx | 30 +++++++++---------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/website/src/components/Messages/LabelInputGroup.tsx b/website/src/components/Messages/LabelInputGroup.tsx index 2193a9f2..7cdb8828 100644 --- a/website/src/components/Messages/LabelInputGroup.tsx +++ b/website/src/components/Messages/LabelInputGroup.tsx @@ -1,9 +1,9 @@ -import { Text, VStack } from "@chakra-ui/react"; +import { Box, Text, VStack } from "@chakra-ui/react"; import { useTranslation } from "next-i18next"; import { Explain } from "src/components/Explain"; import { LabelFlagGroup } from "src/components/Messages/LabelFlagGroup"; -import { LabelLikertGroup } from "src/components/Survey/LabelLikertGroup"; import { LabelYesNoGroup } from "src/components/Messages/LabelYesNoGroup"; +import { LabelLikertGroup } from "src/components/Survey/LabelLikertGroup"; import { getTypeSafei18nKey } from "src/lib/i18n"; import { Label } from "src/types/Tasks"; @@ -55,8 +55,10 @@ export const LabelInputGroup = ({ )} {flagIndexes.length > 0 && ( - - {instructions.flagInstruction} + + + {instructions.flagInstruction} + @@ -64,8 +66,8 @@ export const LabelInputGroup = ({ getTypeSafei18nKey(`${labels[idx].name}.explanation`) )}` )} - />{" "} - + /> + values[idx])} labelNames={flagIndexes.map((idx) => labels[idx].name)} diff --git a/website/src/components/Messages/LabelPopup.tsx b/website/src/components/Messages/LabelPopup.tsx index 38eae7b0..67bae3cc 100644 --- a/website/src/components/Messages/LabelPopup.tsx +++ b/website/src/components/Messages/LabelPopup.tsx @@ -9,7 +9,7 @@ import { ModalOverlay, } from "@chakra-ui/react"; import { useTranslation } from "next-i18next"; -import { useEffect, useState } from "react"; +import { useCallback, useEffect, useMemo, useState } from "react"; import { LabelInputGroup } from "src/components/Messages/LabelInputGroup"; import { get, post } from "src/lib/api"; import { Label } from "src/types/Tasks"; @@ -29,7 +29,7 @@ interface ValidLabelsResponse { export const LabelMessagePopup = ({ messageId, show, onClose }: LabelMessagePopupProps) => { const { t } = useTranslation(); const { data: response } = useSWRImmutable(`/api/valid_labels?message_id=${messageId}`, get); - const valid_labels = response?.valid_labels ?? []; + const valid_labels = useMemo(() => response?.valid_labels ?? [], [response]); const [values, setValues] = useState(new Array(valid_labels.length).fill(null)); useEffect(() => { @@ -38,7 +38,7 @@ export const LabelMessagePopup = ({ messageId, show, onClose }: LabelMessagePopu const { trigger: setLabels } = useSWRMutation("/api/set_label", post); - const submit = () => { + const submit = useCallback(() => { const label_map: Map = new Map(); console.assert(valid_labels.length === values.length); values.forEach((value, idx) => { @@ -53,7 +53,7 @@ export const LabelMessagePopup = ({ messageId, show, onClose }: LabelMessagePopu setValues(new Array(values.length).fill(null)); onClose(); - }; + }, [messageId, onClose, setLabels, valid_labels, values]); return ( diff --git a/website/src/pages/messages/[id]/index.tsx b/website/src/pages/messages/[id]/index.tsx index 2c58c367..0092a843 100644 --- a/website/src/pages/messages/[id]/index.tsx +++ b/website/src/pages/messages/[id]/index.tsx @@ -14,7 +14,9 @@ const MessageDetail = ({ id }: { id: string }) => { const { t } = useTranslation(["message", "common"]); const backgroundColor = useColorModeValue("white", "gray.800"); - const { isLoading: isLoadingParent, data: parent } = useSWRImmutable(`/api/messages/${id}/parent`, get); + const { isLoading: isLoadingParent, data: parent } = useSWRImmutable(`/api/messages/${id}/parent`, get, { + refreshInterval: 30 * 1000, // 30 seconds + }); if (isLoadingParent) { return ; @@ -29,20 +31,16 @@ const MessageDetail = ({ id }: { id: string }) => { /> - - {parent && ( - <> - - - {t("parent")} - - - - - - - )} - + {parent && ( + + + {t("parent")} + + + + + + )} @@ -56,7 +54,7 @@ MessageDetail.getLayout = (page) => getDashboardLayout(page); export const getServerSideProps = async ({ locale, query }) => ({ props: { id: query.id, - ...(await serverSideTranslations(locale, ["common", "message"])), + ...(await serverSideTranslations(locale, ["common", "message", "labelling"])), }, });