diff --git a/api/v2/memo_service.go b/api/v2/memo_service.go index 57dfa4e4..fa190a4e 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 c5dc18f0..89ef8bee 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 2dcbd4e8..d91b62b5 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 91dc539b..fceb3102 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()}>