mirror of https://github.com/usememos/memos.git
fix: default visibility setting
This commit is contained in:
parent
86013d6c2a
commit
ac37738148
|
|
@ -421,7 +421,7 @@ func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.Upda
|
|||
incomingGeneral := request.Setting.GetGeneralSetting()
|
||||
for _, field := range request.UpdateMask.Paths {
|
||||
switch field {
|
||||
case "memoVisibility":
|
||||
case "memo_visibility":
|
||||
updatedGeneral.MemoVisibility = incomingGeneral.MemoVisibility
|
||||
case "theme":
|
||||
updatedGeneral.Theme = incomingGeneral.Theme
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { useEffect, useRef } from "react";
|
||||
import type { Visibility } from "@/types/proto/api/v1/memo_service_pb";
|
||||
import type { EditorRefActions } from "../Editor";
|
||||
import { cacheService, memoService } from "../services";
|
||||
import { useEditorContext } from "../state";
|
||||
|
|
@ -9,6 +10,7 @@ export const useMemoInit = (
|
|||
cacheKey: string | undefined,
|
||||
username: string,
|
||||
autoFocus?: boolean,
|
||||
defaultVisibility?: Visibility,
|
||||
) => {
|
||||
const { actions, dispatch } = useEditorContext();
|
||||
const initializedRef = useRef(false);
|
||||
|
|
@ -37,6 +39,10 @@ export const useMemoInit = (
|
|||
if (cachedContent) {
|
||||
dispatch(actions.updateContent(cachedContent));
|
||||
}
|
||||
// Apply default visibility for new memos
|
||||
if (defaultVisibility !== undefined) {
|
||||
dispatch(actions.setMetadata({ visibility: defaultVisibility }));
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to initialize editor:", error);
|
||||
|
|
@ -52,5 +58,5 @@ export const useMemoInit = (
|
|||
};
|
||||
|
||||
init();
|
||||
}, [memoName, cacheKey, username, autoFocus, actions, dispatch, editorRef]);
|
||||
}, [memoName, cacheKey, username, autoFocus, defaultVisibility, actions, dispatch, editorRef]);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
import { useQueryClient } from "@tanstack/react-query";
|
||||
import { useRef } from "react";
|
||||
import { toast } from "react-hot-toast";
|
||||
import { useAuth } from "@/contexts/AuthContext";
|
||||
import useCurrentUser from "@/hooks/useCurrentUser";
|
||||
import { memoKeys } from "@/hooks/useMemoQueries";
|
||||
import { userKeys } from "@/hooks/useUserQueries";
|
||||
import { handleError } from "@/lib/error";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { useTranslate } from "@/utils/i18n";
|
||||
import { convertVisibilityFromString } from "@/utils/memo";
|
||||
import { EditorContent, EditorMetadata, EditorToolbar, FocusModeExitButton, FocusModeOverlay } from "./components";
|
||||
import { FOCUS_MODE_STYLES } from "./constants";
|
||||
import type { EditorRefActions } from "./Editor";
|
||||
|
|
@ -49,8 +51,14 @@ const MemoEditorImpl: React.FC<MemoEditorProps> = ({
|
|||
const currentUser = useCurrentUser();
|
||||
const editorRef = useRef<EditorRefActions>(null);
|
||||
const { state, actions, dispatch } = useEditorContext();
|
||||
const { userGeneralSetting } = useAuth();
|
||||
|
||||
useMemoInit(editorRef, memoName, cacheKey, currentUser?.name ?? "", autoFocus);
|
||||
// Get default visibility from user settings
|
||||
const defaultVisibility = userGeneralSetting?.memoVisibility
|
||||
? convertVisibilityFromString(userGeneralSetting.memoVisibility)
|
||||
: undefined;
|
||||
|
||||
useMemoInit(editorRef, memoName, cacheKey, currentUser?.name ?? "", autoFocus, defaultVisibility);
|
||||
|
||||
// Auto-save content to localStorage
|
||||
useAutoSave(state.content, currentUser?.name ?? "", cacheKey);
|
||||
|
|
|
|||
|
|
@ -34,9 +34,9 @@ const PreferencesSection = () => {
|
|||
);
|
||||
};
|
||||
|
||||
const handleDefaultMemoVisibilityChanged = async (value: string) => {
|
||||
const handleDefaultMemoVisibilityChanged = (value: string) => {
|
||||
updateUserGeneralSetting(
|
||||
{ generalSetting: { memoVisibility: value }, updateMask: ["memoVisibility"] },
|
||||
{ generalSetting: { memoVisibility: value }, updateMask: ["memo_visibility"] },
|
||||
{
|
||||
onSuccess: () => {
|
||||
refetchSettings();
|
||||
|
|
@ -82,7 +82,10 @@ const PreferencesSection = () => {
|
|||
|
||||
<SettingGroup title={t("setting.preference")} showSeparator>
|
||||
<SettingRow label={t("setting.preference-section.default-memo-visibility")}>
|
||||
<Select value={setting.memoVisibility} onValueChange={handleDefaultMemoVisibilityChanged}>
|
||||
<Select
|
||||
value={setting.memoVisibility || "PRIVATE"}
|
||||
onValueChange={handleDefaultMemoVisibilityChanged}
|
||||
>
|
||||
<SelectTrigger className="min-w-fit">
|
||||
<div className="flex items-center gap-2">
|
||||
<VisibilityIcon visibility={convertVisibilityFromString(setting.memoVisibility)} />
|
||||
|
|
|
|||
Loading…
Reference in New Issue