diff --git a/web/src/components/Header.tsx b/web/src/components/Header.tsx index 8032d87e..eb410d19 100644 --- a/web/src/components/Header.tsx +++ b/web/src/components/Header.tsx @@ -50,8 +50,12 @@ const Header = () => { layoutStore.setHeaderStatus(true); } }; - window.addEventListener("resize", handleWindowResize); handleWindowResize(); + window.addEventListener("resize", handleWindowResize); + + return () => { + window.removeEventListener("resize", handleWindowResize); + }; }, [location]); const homeNavLink: NavLinkItem = { @@ -111,7 +115,7 @@ const Header = () => { }; const navLinks: NavLinkItem[] = user - ? [homeNavLink, dailyReviewNavLink, resourcesNavLink, inboxNavLink, exploreNavLink, archivedNavLink, settingNavLink] + ? [homeNavLink, dailyReviewNavLink, resourcesNavLink, exploreNavLink, inboxNavLink, archivedNavLink, settingNavLink] : [exploreNavLink, signInNavLink]; return ( diff --git a/web/src/components/Inbox/MemoCommentMessage.tsx b/web/src/components/Inbox/MemoCommentMessage.tsx index 88f8ec36..2d5c9633 100644 --- a/web/src/components/Inbox/MemoCommentMessage.tsx +++ b/web/src/components/Inbox/MemoCommentMessage.tsx @@ -5,8 +5,10 @@ import toast from "react-hot-toast"; import { activityServiceClient } from "@/grpcweb"; import useNavigateTo from "@/hooks/useNavigateTo"; import useInboxStore from "@/store/v1/inbox"; +import { extractUsernameFromName } from "@/store/v1/user"; import { Activity } from "@/types/proto/api/v2/activity_service"; import { Inbox, Inbox_Status } from "@/types/proto/api/v2/inbox_service"; +import { useTranslate } from "@/utils/i18n"; import Icon from "../Icon"; interface Props { @@ -14,6 +16,7 @@ interface Props { } const MemoCommentMessage = ({ inbox }: Props) => { + const t = useTranslate(); const navigateTo = useNavigateTo(); const inboxStore = useInboxStore(); const [activity, setActivity] = useState(undefined); @@ -90,7 +93,10 @@ const MemoCommentMessage = ({ inbox }: Props) => { className="text-base leading-tight cursor-pointer text-gray-500 dark:text-gray-400 hover:underline hover:text-blue-600" onClick={handleNavigateToMemo} > - {inbox.sender} has a comment in your memo #{activity?.payload?.memoComment?.relatedMemoId}. + {t("inbox.memo-comment", { + user: extractUsernameFromName(inbox.sender), + memo: `memo#${activity?.payload?.memoComment?.relatedMemoId}`, + })}

diff --git a/web/src/locales/en.json b/web/src/locales/en.json index ad0762fc..a6656eca 100644 --- a/web/src/locales/en.json +++ b/web/src/locales/en.json @@ -369,5 +369,8 @@ "file-exceeds-upload-limit-of": "File {{file}} exceeds upload limit of {{size}} MiB", "updating-setting-failed": "Updating setting failed", "password-login-disabled": "Can't remove last identity provider when password login is disabled" + }, + "inbox": { + "memo-comment": "{{user}} has a comment on your {{memo}}." } } diff --git a/web/src/pages/DailyReview.tsx b/web/src/pages/DailyReview.tsx index 458a280e..2df1f36f 100644 --- a/web/src/pages/DailyReview.tsx +++ b/web/src/pages/DailyReview.tsx @@ -116,10 +116,12 @@ const DailyReview = () => { relation.type === "REFERENCE")} />
- {index !== dailyMemos.length - 1 && ( -
+
)} +
+ +
))} diff --git a/web/src/store/v1/user.ts b/web/src/store/v1/user.ts index 980890c9..6e04a555 100644 --- a/web/src/store/v1/user.ts +++ b/web/src/store/v1/user.ts @@ -57,4 +57,8 @@ const useUserV1Store = create()((set, get) => ({ }, })); +export const extractUsernameFromName = (name: string) => { + return name.split("/")[1]; +}; + export default useUserV1Store;