From 5172e4df7c0f46b208bfe89d22f99fd7e9c47888 Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 18 Jan 2024 15:20:22 +0800 Subject: [PATCH] chore: create memo visibility when creating --- api/v2/memo_service.go | 24 ++++++++++++++++++++++++ web/src/components/MemoContent/Table.tsx | 2 +- web/src/components/MemoEditor/index.tsx | 2 +- web/src/pages/Timeline.tsx | 7 +++++-- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/api/v2/memo_service.go b/api/v2/memo_service.go index 57dfa4e4e..fa190a4e1 100644 --- a/api/v2/memo_service.go +++ b/api/v2/memo_service.go @@ -53,6 +53,15 @@ func (s *APIV2Service) CreateMemo(ctx context.Context, request *apiv2pb.CreateMe Content: request.Content, Visibility: store.Visibility(request.Visibility.String()), } + // Find disable public memos system setting. + disablePublicMemosSystem, err := s.getDisablePublicMemosSystemSettingValue(ctx) + if err != nil { + return nil, status.Errorf(codes.Internal, "failed to get system setting") + } + if disablePublicMemosSystem && create.Visibility == store.Public { + return nil, status.Errorf(codes.PermissionDenied, "disable public memos system setting is enabled") + } + memo, err := s.Store.CreateMemo(ctx, create) if err != nil { return nil, err @@ -591,6 +600,21 @@ func (s *APIV2Service) getMemoDisplayWithUpdatedTsSettingValue(ctx context.Conte return memoDisplayWithUpdatedTs, nil } +func (s *APIV2Service) getDisablePublicMemosSystemSettingValue(ctx context.Context) (bool, error) { + disablePublicMemosSystemSetting, err := s.Store.GetSystemSetting(ctx, &store.FindSystemSetting{ + Name: apiv1.SystemSettingDisablePublicMemosName.String(), + }) + if err != nil { + return false, errors.Wrap(err, "failed to find system setting") + } + disablePublicMemos := false + err = json.Unmarshal([]byte(disablePublicMemosSystemSetting.Value), &disablePublicMemos) + if err != nil { + return false, errors.Wrap(err, "failed to unmarshal system setting value") + } + return disablePublicMemos, nil +} + func convertVisibilityFromStore(visibility store.Visibility) apiv2pb.Visibility { switch visibility { case store.Private: diff --git a/web/src/components/MemoContent/Table.tsx b/web/src/components/MemoContent/Table.tsx index c5dc18f0c..89ef8beee 100644 --- a/web/src/components/MemoContent/Table.tsx +++ b/web/src/components/MemoContent/Table.tsx @@ -8,7 +8,7 @@ interface Props { const Table = ({ header, rows }: Props) => { return ( - + {header.map((h, i) => (
diff --git a/web/src/components/MemoEditor/index.tsx b/web/src/components/MemoEditor/index.tsx index 2dcbd4e83..d91b62b54 100644 --- a/web/src/components/MemoEditor/index.tsx +++ b/web/src/components/MemoEditor/index.tsx @@ -340,7 +340,7 @@ const MemoEditor = (props: Props) => { editorRef.current?.setContent(""); } catch (error: any) { console.error(error); - toast.error(error.response.data.message); + toast.error(error.details); } setState((state) => { diff --git a/web/src/pages/Timeline.tsx b/web/src/pages/Timeline.tsx index 91dc539bb..fceb31023 100644 --- a/web/src/pages/Timeline.tsx +++ b/web/src/pages/Timeline.tsx @@ -125,10 +125,13 @@ const Timeline = () => {
-

+

setSelectedDay(undefined)} + > {t("timeline.title")} -

+
handleNewMemo()}>