File tree 3 files changed +9
-3
lines changed
3 files changed +9
-3
lines changed Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import useCurrentUser from "@/hooks/useCurrentUser";
4
4
import { useMemoStore } from "@/store/v1" ;
5
5
import { Node , NodeType } from "@/types/proto/api/v1/markdown_service" ;
6
6
import { useTranslate } from "@/utils/i18n" ;
7
+ import { isSuperUser } from "@/utils/user" ;
7
8
import Renderer from "./Renderer" ;
8
9
import { RendererContext } from "./types" ;
9
10
@@ -33,7 +34,7 @@ const MemoContent: React.FC<Props> = (props: Props) => {
33
34
const memoContentContainerRef = useRef < HTMLDivElement > ( null ) ;
34
35
const [ showCompactMode , setShowCompactMode ] = useState < boolean > ( false ) ;
35
36
const memo = memoName ? memoStore . getMemoByName ( memoName ) : null ;
36
- const allowEdit = ! props . readonly && memo && currentUser ?. name === memo . creator ;
37
+ const allowEdit = ! props . readonly && memo && ( currentUser ?. name === memo . creator || isSuperUser ( currentUser ) ) ;
37
38
38
39
// Initial compact mode.
39
40
useEffect ( ( ) => {
Original file line number Diff line number Diff line change @@ -8,11 +8,11 @@ import useNavigateTo from "@/hooks/useNavigateTo";
8
8
import { useUserStore , useWorkspaceSettingStore } from "@/store/v1" ;
9
9
import { MemoRelation_Type } from "@/types/proto/api/v1/memo_relation_service" ;
10
10
import { Memo , Visibility } from "@/types/proto/api/v1/memo_service" ;
11
- import { User_Role } from "@/types/proto/api/v1/user_service" ;
12
11
import { WorkspaceMemoRelatedSetting } from "@/types/proto/api/v1/workspace_setting_service" ;
13
12
import { WorkspaceSettingKey } from "@/types/proto/store/workspace_setting" ;
14
13
import { useTranslate } from "@/utils/i18n" ;
15
14
import { convertVisibilityToString } from "@/utils/memo" ;
15
+ import { isSuperUser } from "@/utils/user" ;
16
16
import MemoActionMenu from "./MemoActionMenu" ;
17
17
import MemoContent from "./MemoContent" ;
18
18
import MemoEditor from "./MemoEditor" ;
@@ -54,7 +54,7 @@ const MemoView: React.FC<Props> = (props: Props) => {
54
54
( relation ) => relation . type === MemoRelation_Type . COMMENT && relation . relatedMemo === memo . name ,
55
55
) . length ;
56
56
const relativeTimeFormat = Date . now ( ) - memo . displayTime ! . getTime ( ) > 1000 * 60 * 60 * 24 ? "datetime" : "auto" ;
57
- const readonly = memo . creator !== user ?. name && user . role === User_Role . USER ;
57
+ const readonly = memo . creator !== user ?. name || isSuperUser ( user ) ;
58
58
const isInMemoDetailPage = location . pathname . startsWith ( `/m/${ memo . uid } ` ) ;
59
59
60
60
// Initial related data: creator.
Original file line number Diff line number Diff line change
1
+ import { User , User_Role } from "@/types/proto/api/v1/user_service" ;
2
+
3
+ export const isSuperUser = ( user : User ) => {
4
+ return user . role === User_Role . ADMIN || user . role === User_Role . HOST ;
5
+ } ;
You can’t perform that action at this time.
0 commit comments