From b79f626a747cbfe3fdf0197bfe25b39333706cc0 Mon Sep 17 00:00:00 2001 From: Steven Date: Mon, 1 Apr 2024 00:26:46 +0800 Subject: [PATCH] chore: fix memo comment inbox --- server/route/api/v2/inbox_service.go | 20 +++---------------- .../components/Inbox/MemoCommentMessage.tsx | 20 +++++++++++++------ web/src/pages/SignUp.tsx | 3 ++- 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/server/route/api/v2/inbox_service.go b/server/route/api/v2/inbox_service.go index c8a9c0b2..cfe42713 100644 --- a/server/route/api/v2/inbox_service.go +++ b/server/route/api/v2/inbox_service.go @@ -5,7 +5,6 @@ import ( "fmt" "time" - "github.com/pkg/errors" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/timestamppb" @@ -90,24 +89,11 @@ func (s *APIV2Service) DeleteInbox(ctx context.Context, request *apiv2pb.DeleteI return &apiv2pb.DeleteInboxResponse{}, nil } -func (s *APIV2Service) convertInboxFromStore(ctx context.Context, inbox *store.Inbox) (*apiv2pb.Inbox, error) { - sender, err := s.Store.GetUser(ctx, &store.FindUser{ - ID: &inbox.SenderID, - }) - if err != nil { - return nil, errors.Wrap(err, "failed to get sender") - } - receiver, err := s.Store.GetUser(ctx, &store.FindUser{ - ID: &inbox.ReceiverID, - }) - if err != nil { - return nil, errors.Wrap(err, "failed to get receiver") - } - +func (s *APIV2Service) convertInboxFromStore(_ context.Context, inbox *store.Inbox) (*apiv2pb.Inbox, error) { return &apiv2pb.Inbox{ Name: fmt.Sprintf("%s%d", InboxNamePrefix, inbox.ID), - Sender: fmt.Sprintf("%s%d", UserNamePrefix, sender.ID), - Receiver: fmt.Sprintf("%s%d", UserNamePrefix, receiver.ID), + Sender: fmt.Sprintf("%s%d", UserNamePrefix, inbox.SenderID), + Receiver: fmt.Sprintf("%s%d", UserNamePrefix, inbox.ReceiverID), Status: convertInboxStatusFromStore(inbox.Status), CreateTime: timestamppb.New(time.Unix(inbox.CreatedTs, 0)), Type: apiv2pb.Inbox_Type(inbox.Message.Type), diff --git a/web/src/components/Inbox/MemoCommentMessage.tsx b/web/src/components/Inbox/MemoCommentMessage.tsx index 40226cf7..8098a598 100644 --- a/web/src/components/Inbox/MemoCommentMessage.tsx +++ b/web/src/components/Inbox/MemoCommentMessage.tsx @@ -4,9 +4,10 @@ import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import { activityServiceClient } from "@/grpcweb"; import useNavigateTo from "@/hooks/useNavigateTo"; -import { MemoNamePrefix, useInboxStore, useMemoStore } from "@/store/v1"; +import { MemoNamePrefix, useInboxStore, useMemoStore, useUserStore } from "@/store/v1"; import { Inbox, Inbox_Status } from "@/types/proto/api/v2/inbox_service"; import { Memo } from "@/types/proto/api/v2/memo_service"; +import { User } from "@/types/proto/api/v2/user_service"; import { useTranslate } from "@/utils/i18n"; import Icon from "../Icon"; @@ -19,7 +20,9 @@ const MemoCommentMessage = ({ inbox }: Props) => { const navigateTo = useNavigateTo(); const inboxStore = useInboxStore(); const memoStore = useMemoStore(); + const userStore = useUserStore(); const [relatedMemo, setRelatedMemo] = useState(undefined); + const [sender, setSender] = useState(undefined); useEffect(() => { if (!inbox.activityId) { @@ -33,11 +36,15 @@ const MemoCommentMessage = ({ inbox }: Props) => { if (!activity) { return; } - if (activity.payload?.memoComment?.relatedMemoId) { - const memo = await memoStore.getOrFetchMemoByName(`${MemoNamePrefix}${activity.payload?.memoComment?.relatedMemoId}`, { + if (activity.payload?.memoComment) { + const memoCommentPayload = activity.payload.memoComment; + const relatedMemoId = memoCommentPayload.relatedMemoId; + const memo = await memoStore.getOrFetchMemoByName(`${MemoNamePrefix}${relatedMemoId}`, { skipStore: true, }); setRelatedMemo(memo); + const sender = await userStore.getOrFetchUserByName(inbox.sender); + setSender(sender); } })(); }, [inbox.activityId]); @@ -47,7 +54,7 @@ const MemoCommentMessage = ({ inbox }: Props) => { return; } - navigateTo(`/m/${relatedMemo.name}`); + navigateTo(`/m/${relatedMemo.uid}`); if (inbox.status === Inbox_Status.UNREAD) { handleArchiveMessage(true); } @@ -104,8 +111,9 @@ const MemoCommentMessage = ({ inbox }: Props) => { onClick={handleNavigateToMemo} > {t("inbox.memo-comment", { - user: inbox.sender, - memo: `memos#${relatedMemo?.name}`, + user: sender?.nickname || sender?.username, + memo: `memos\/${relatedMemo?.uid}`, + interpolation: { escapeValue: false }, })}

diff --git a/web/src/pages/SignUp.tsx b/web/src/pages/SignUp.tsx index 684816ce..a81d5a2d 100644 --- a/web/src/pages/SignUp.tsx +++ b/web/src/pages/SignUp.tsx @@ -1,4 +1,5 @@ import { Button, Input } from "@mui/joy"; +import { ClientError } from "nice-grpc-web"; import { useState } from "react"; import { toast } from "react-hot-toast"; import { Link } from "react-router-dom"; @@ -64,7 +65,7 @@ const SignUp = () => { } } catch (error: any) { console.error(error); - toast.error(error.response.data.message || error.message || t("message.signup-failed")); + toast.error((error as ClientError).details || t("message.signup-failed")); } actionBtnLoadingState.setFinish(); };