Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
e6fe088a
Commit
e6fe088a
authored
Jun 01, 2025
by
Johnny
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: fix missing observer
parent
fd99e109
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
146 additions
and
131 deletions
+146
-131
ActivityCalendar.tsx
web/src/components/ActivityCalendar/ActivityCalendar.tsx
+94
-91
BrandBanner.tsx
web/src/components/BrandBanner.tsx
+3
-2
MemoActionMenu.tsx
web/src/components/MemoActionMenu.tsx
+1
-2
Tag.tsx
web/src/components/MemoContent/Tag.tsx
+5
-4
MemoFilters.tsx
web/src/components/MemoFilters.tsx
+4
-3
MemoReactionListView.tsx
web/src/components/MemoReactionListView.tsx
+3
-2
MemoView.tsx
web/src/components/MemoView.tsx
+1
-2
ReactionSelector.tsx
web/src/components/ReactionSelector.tsx
+1
-2
SearchBar.tsx
web/src/components/SearchBar.tsx
+4
-3
MemberSection.tsx
web/src/components/Settings/MemberSection.tsx
+3
-2
MemoRelatedSettings.tsx
web/src/components/Settings/MemoRelatedSettings.tsx
+3
-2
StorageSection.tsx
web/src/components/Settings/StorageSection.tsx
+3
-2
TagTree.tsx
web/src/components/TagTree.tsx
+3
-2
AdminSignIn.tsx
web/src/pages/AdminSignIn.tsx
+3
-2
Archived.tsx
web/src/pages/Archived.tsx
+3
-2
AuthCallback.tsx
web/src/pages/AuthCallback.tsx
+3
-2
Explore.tsx
web/src/pages/Explore.tsx
+3
-2
SignIn.tsx
web/src/pages/SignIn.tsx
+3
-2
SignUp.tsx
web/src/pages/SignUp.tsx
+3
-2
No files found.
web/src/components/ActivityCalendar/ActivityCalendar.tsx
View file @
e6fe088a
import
{
Tooltip
}
from
"@mui/joy"
;
import
{
Tooltip
}
from
"@mui/joy"
;
import
dayjs
from
"dayjs"
;
import
dayjs
from
"dayjs"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
memo
,
useMemo
}
from
"react"
;
import
{
memo
,
useMemo
}
from
"react"
;
import
{
workspaceStore
}
from
"@/store/v2"
;
import
{
workspaceStore
}
from
"@/store/v2"
;
import
type
{
ActivityCalendarProps
,
CalendarDay
}
from
"@/types/statistics"
;
import
type
{
ActivityCalendarProps
,
CalendarDay
}
from
"@/types/statistics"
;
...
@@ -67,7 +68,8 @@ const CalendarCell = memo(
...
@@ -67,7 +68,8 @@ const CalendarCell = memo(
CalendarCell
.
displayName
=
"CalendarCell"
;
CalendarCell
.
displayName
=
"CalendarCell"
;
export
const
ActivityCalendar
=
memo
((
props
:
ActivityCalendarProps
)
=>
{
export
const
ActivityCalendar
=
memo
(
observer
((
props
:
ActivityCalendarProps
)
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
{
month
:
monthStr
,
data
,
onClick
}
=
props
;
const
{
month
:
monthStr
,
data
,
onClick
}
=
props
;
const
weekStartDayOffset
=
workspaceStore
.
state
.
generalSetting
.
weekStartDayOffset
;
const
weekStartDayOffset
=
workspaceStore
.
state
.
generalSetting
.
weekStartDayOffset
;
...
@@ -165,6 +167,7 @@ export const ActivityCalendar = memo((props: ActivityCalendarProps) => {
...
@@ -165,6 +167,7 @@ export const ActivityCalendar = memo((props: ActivityCalendarProps) => {
})
}
})
}
</
div
>
</
div
>
);
);
});
}),
);
ActivityCalendar
.
displayName
=
"ActivityCalendar"
;
ActivityCalendar
.
displayName
=
"ActivityCalendar"
;
web/src/components/BrandBanner.tsx
View file @
e6fe088a
import
{
observer
}
from
"mobx-react-lite"
;
import
{
workspaceStore
}
from
"@/store/v2"
;
import
{
workspaceStore
}
from
"@/store/v2"
;
import
{
cn
}
from
"@/utils"
;
import
{
cn
}
from
"@/utils"
;
import
UserAvatar
from
"./UserAvatar"
;
import
UserAvatar
from
"./UserAvatar"
;
...
@@ -7,7 +8,7 @@ interface Props {
...
@@ -7,7 +8,7 @@ interface Props {
collapsed
?:
boolean
;
collapsed
?:
boolean
;
}
}
const
BrandBanner
=
(
props
:
Props
)
=>
{
const
BrandBanner
=
observer
(
(
props
:
Props
)
=>
{
const
{
collapsed
}
=
props
;
const
{
collapsed
}
=
props
;
const
workspaceGeneralSetting
=
workspaceStore
.
state
.
generalSetting
;
const
workspaceGeneralSetting
=
workspaceStore
.
state
.
generalSetting
;
const
title
=
workspaceGeneralSetting
.
customProfile
?.
title
||
"Memos"
;
const
title
=
workspaceGeneralSetting
.
customProfile
?.
title
||
"Memos"
;
...
@@ -21,6 +22,6 @@ const BrandBanner = (props: Props) => {
...
@@ -21,6 +22,6 @@ const BrandBanner = (props: Props) => {
</
div
>
</
div
>
</
div
>
</
div
>
);
);
};
}
)
;
export
default
BrandBanner
;
export
default
BrandBanner
;
web/src/components/MemoActionMenu.tsx
View file @
e6fe088a
...
@@ -16,8 +16,7 @@ import toast from "react-hot-toast";
...
@@ -16,8 +16,7 @@ import toast from "react-hot-toast";
import
{
useLocation
}
from
"react-router-dom"
;
import
{
useLocation
}
from
"react-router-dom"
;
import
{
markdownServiceClient
}
from
"@/grpcweb"
;
import
{
markdownServiceClient
}
from
"@/grpcweb"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
import
{
memoStore
}
from
"@/store/v2"
;
import
{
memoStore
,
userStore
}
from
"@/store/v2"
;
import
{
userStore
}
from
"@/store/v2"
;
import
{
State
}
from
"@/types/proto/api/v1/common"
;
import
{
State
}
from
"@/types/proto/api/v1/common"
;
import
{
NodeType
}
from
"@/types/proto/api/v1/markdown_service"
;
import
{
NodeType
}
from
"@/types/proto/api/v1/markdown_service"
;
import
{
Memo
}
from
"@/types/proto/api/v1/memo_service"
;
import
{
Memo
}
from
"@/types/proto/api/v1/memo_service"
;
...
...
web/src/components/MemoContent/Tag.tsx
View file @
e6fe088a
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useContext
}
from
"react"
;
import
{
useContext
}
from
"react"
;
import
{
useLocation
}
from
"react-router-dom"
;
import
{
useLocation
}
from
"react-router-dom"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
import
{
Routes
}
from
"@/router"
;
import
{
Routes
}
from
"@/router"
;
import
memoFilterStore
,
{
MemoFilter
}
from
"@/store/v2/memoFilter
"
;
import
{
memoFilterStore
}
from
"@/store/v2
"
;
import
{
stringifyFilters
}
from
"@/store/v2/memoFilter"
;
import
{
stringifyFilters
,
MemoFilter
}
from
"@/store/v2/memoFilter"
;
import
{
cn
}
from
"@/utils"
;
import
{
cn
}
from
"@/utils"
;
import
{
RendererContext
}
from
"./types"
;
import
{
RendererContext
}
from
"./types"
;
...
@@ -11,7 +12,7 @@ interface Props {
...
@@ -11,7 +12,7 @@ interface Props {
content
:
string
;
content
:
string
;
}
}
const
Tag
:
React
.
FC
<
Props
>
=
({
content
}:
Props
)
=>
{
const
Tag
=
observer
(
({
content
}:
Props
)
=>
{
const
context
=
useContext
(
RendererContext
);
const
context
=
useContext
(
RendererContext
);
const
location
=
useLocation
();
const
location
=
useLocation
();
const
navigateTo
=
useNavigateTo
();
const
navigateTo
=
useNavigateTo
();
...
@@ -50,6 +51,6 @@ const Tag: React.FC<Props> = ({ content }: Props) => {
...
@@ -50,6 +51,6 @@ const Tag: React.FC<Props> = ({ content }: Props) => {
#
{
content
}
#
{
content
}
</
span
>
</
span
>
);
);
};
}
)
;
export
default
Tag
;
export
default
Tag
;
web/src/components/MemoFilters.tsx
View file @
e6fe088a
import
{
isEqual
}
from
"lodash-es"
;
import
{
isEqual
}
from
"lodash-es"
;
import
{
CalendarIcon
,
CheckCircleIcon
,
CodeIcon
,
EyeIcon
,
HashIcon
,
LinkIcon
,
BookmarkIcon
,
SearchIcon
,
XIcon
}
from
"lucide-react"
;
import
{
CalendarIcon
,
CheckCircleIcon
,
CodeIcon
,
EyeIcon
,
HashIcon
,
LinkIcon
,
BookmarkIcon
,
SearchIcon
,
XIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useEffect
}
from
"react"
;
import
{
useEffect
}
from
"react"
;
import
{
useSearchParams
}
from
"react-router-dom"
;
import
{
useSearchParams
}
from
"react-router-dom"
;
import
memoFilterStore
from
"@/store/v2/memoFilter
"
;
import
{
memoFilterStore
}
from
"@/store/v2
"
;
import
{
FilterFactor
,
getMemoFilterKey
,
MemoFilter
,
stringifyFilters
}
from
"@/store/v2/memoFilter"
;
import
{
FilterFactor
,
getMemoFilterKey
,
MemoFilter
,
stringifyFilters
}
from
"@/store/v2/memoFilter"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
const
MemoFilters
=
()
=>
{
const
MemoFilters
=
observer
(
()
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
[,
setSearchParams
]
=
useSearchParams
();
const
[,
setSearchParams
]
=
useSearchParams
();
const
filters
=
memoFilterStore
.
filters
;
const
filters
=
memoFilterStore
.
filters
;
...
@@ -60,7 +61,7 @@ const MemoFilters = () => {
...
@@ -60,7 +61,7 @@ const MemoFilters = () => {
))
}
))
}
</
div
>
</
div
>
);
);
};
}
)
;
const
FactorIcon
=
({
factor
,
className
}:
{
factor
:
FilterFactor
;
className
?:
string
})
=>
{
const
FactorIcon
=
({
factor
,
className
}:
{
factor
:
FilterFactor
;
className
?:
string
})
=>
{
const
iconMap
=
{
const
iconMap
=
{
...
...
web/src/components/MemoReactionListView.tsx
View file @
e6fe088a
import
{
uniq
}
from
"lodash-es"
;
import
{
uniq
}
from
"lodash-es"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
memo
,
useEffect
,
useState
}
from
"react"
;
import
{
memo
,
useEffect
,
useState
}
from
"react"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
{
userStore
}
from
"@/store/v2"
;
import
{
userStore
}
from
"@/store/v2"
;
...
@@ -14,7 +15,7 @@ interface Props {
...
@@ -14,7 +15,7 @@ interface Props {
reactions
:
Reaction
[];
reactions
:
Reaction
[];
}
}
const
MemoReactionListView
=
(
props
:
Props
)
=>
{
const
MemoReactionListView
=
observer
(
(
props
:
Props
)
=>
{
const
{
memo
,
reactions
}
=
props
;
const
{
memo
,
reactions
}
=
props
;
const
currentUser
=
useCurrentUser
();
const
currentUser
=
useCurrentUser
();
const
[
reactionGroup
,
setReactionGroup
]
=
useState
<
Map
<
string
,
User
[]
>>
(
new
Map
());
const
[
reactionGroup
,
setReactionGroup
]
=
useState
<
Map
<
string
,
User
[]
>>
(
new
Map
());
...
@@ -43,6 +44,6 @@ const MemoReactionListView = (props: Props) => {
...
@@ -43,6 +44,6 @@ const MemoReactionListView = (props: Props) => {
</
div
>
</
div
>
)
)
);
);
};
}
)
;
export
default
memo
(
MemoReactionListView
);
export
default
memo
(
MemoReactionListView
);
web/src/components/MemoView.tsx
View file @
e6fe088a
...
@@ -6,8 +6,7 @@ import { Link, useLocation } from "react-router-dom";
...
@@ -6,8 +6,7 @@ import { Link, useLocation } from "react-router-dom";
import
useAsyncEffect
from
"@/hooks/useAsyncEffect"
;
import
useAsyncEffect
from
"@/hooks/useAsyncEffect"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
import
{
memoStore
}
from
"@/store/v2"
;
import
{
memoStore
,
userStore
,
workspaceStore
}
from
"@/store/v2"
;
import
{
userStore
,
workspaceStore
}
from
"@/store/v2"
;
import
{
State
}
from
"@/types/proto/api/v1/common"
;
import
{
State
}
from
"@/types/proto/api/v1/common"
;
import
{
Memo
,
MemoRelation_Type
,
Visibility
}
from
"@/types/proto/api/v1/memo_service"
;
import
{
Memo
,
MemoRelation_Type
,
Visibility
}
from
"@/types/proto/api/v1/memo_service"
;
import
{
cn
}
from
"@/utils"
;
import
{
cn
}
from
"@/utils"
;
...
...
web/src/components/ReactionSelector.tsx
View file @
e6fe088a
...
@@ -5,8 +5,7 @@ import { useRef, useState } from "react";
...
@@ -5,8 +5,7 @@ import { useRef, useState } from "react";
import
useClickAway
from
"react-use/lib/useClickAway"
;
import
useClickAway
from
"react-use/lib/useClickAway"
;
import
{
memoServiceClient
}
from
"@/grpcweb"
;
import
{
memoServiceClient
}
from
"@/grpcweb"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
{
memoStore
}
from
"@/store/v2"
;
import
{
memoStore
,
workspaceStore
}
from
"@/store/v2"
;
import
{
workspaceStore
}
from
"@/store/v2"
;
import
{
Memo
}
from
"@/types/proto/api/v1/memo_service"
;
import
{
Memo
}
from
"@/types/proto/api/v1/memo_service"
;
import
{
cn
}
from
"@/utils"
;
import
{
cn
}
from
"@/utils"
;
...
...
web/src/components/SearchBar.tsx
View file @
e6fe088a
import
{
SearchIcon
}
from
"lucide-react"
;
import
{
SearchIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useState
}
from
"react"
;
import
{
useState
}
from
"react"
;
import
memoFilterStore
from
"@/store/v2/memoFilter
"
;
import
{
memoFilterStore
}
from
"@/store/v2
"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
MemoDisplaySettingMenu
from
"./MemoDisplaySettingMenu"
;
import
MemoDisplaySettingMenu
from
"./MemoDisplaySettingMenu"
;
const
SearchBar
=
()
=>
{
const
SearchBar
=
observer
(
()
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
[
queryText
,
setQueryText
]
=
useState
(
""
);
const
[
queryText
,
setQueryText
]
=
useState
(
""
);
...
@@ -41,6 +42,6 @@ const SearchBar = () => {
...
@@ -41,6 +42,6 @@ const SearchBar = () => {
<
MemoDisplaySettingMenu
className=
"absolute right-2 top-2"
/>
<
MemoDisplaySettingMenu
className=
"absolute right-2 top-2"
/>
</
div
>
</
div
>
);
);
};
}
)
;
export
default
SearchBar
;
export
default
SearchBar
;
web/src/components/Settings/MemberSection.tsx
View file @
e6fe088a
...
@@ -2,6 +2,7 @@ import { Dropdown, Menu, MenuButton, MenuItem, Radio, RadioGroup } from "@mui/jo
...
@@ -2,6 +2,7 @@ import { Dropdown, Menu, MenuButton, MenuItem, Radio, RadioGroup } from "@mui/jo
import
{
Button
,
Input
}
from
"@usememos/mui"
;
import
{
Button
,
Input
}
from
"@usememos/mui"
;
import
{
sortBy
}
from
"lodash-es"
;
import
{
sortBy
}
from
"lodash-es"
;
import
{
MoreVerticalIcon
}
from
"lucide-react"
;
import
{
MoreVerticalIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
React
,
{
useEffect
,
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
userServiceClient
}
from
"@/grpcweb"
;
import
{
userServiceClient
}
from
"@/grpcweb"
;
...
@@ -16,7 +17,7 @@ interface LocalState {
...
@@ -16,7 +17,7 @@ interface LocalState {
creatingUser
:
User
;
creatingUser
:
User
;
}
}
const
MemberSection
=
()
=>
{
const
MemberSection
=
observer
(
()
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
currentUser
=
useCurrentUser
();
const
currentUser
=
useCurrentUser
();
const
[
state
,
setState
]
=
useState
<
LocalState
>
({
const
[
state
,
setState
]
=
useState
<
LocalState
>
({
...
@@ -239,6 +240,6 @@ const MemberSection = () => {
...
@@ -239,6 +240,6 @@ const MemberSection = () => {
</
div
>
</
div
>
</
div
>
</
div
>
);
);
};
}
)
;
export
default
MemberSection
;
export
default
MemberSection
;
web/src/components/Settings/MemoRelatedSettings.tsx
View file @
e6fe088a
...
@@ -2,6 +2,7 @@ import { Switch, Chip, ChipDelete } from "@mui/joy";
...
@@ -2,6 +2,7 @@ import { Switch, Chip, ChipDelete } from "@mui/joy";
import
{
Button
,
Input
}
from
"@usememos/mui"
;
import
{
Button
,
Input
}
from
"@usememos/mui"
;
import
{
isEqual
,
uniq
}
from
"lodash-es"
;
import
{
isEqual
,
uniq
}
from
"lodash-es"
;
import
{
CheckIcon
}
from
"lucide-react"
;
import
{
CheckIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useState
}
from
"react"
;
import
{
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
workspaceSettingNamePrefix
}
from
"@/store/common"
;
import
{
workspaceSettingNamePrefix
}
from
"@/store/common"
;
...
@@ -10,7 +11,7 @@ import { WorkspaceSettingKey } from "@/store/v2/workspace";
...
@@ -10,7 +11,7 @@ import { WorkspaceSettingKey } from "@/store/v2/workspace";
import
{
WorkspaceMemoRelatedSetting
}
from
"@/types/proto/api/v1/workspace_setting_service"
;
import
{
WorkspaceMemoRelatedSetting
}
from
"@/types/proto/api/v1/workspace_setting_service"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
const
MemoRelatedSettings
=
()
=>
{
const
MemoRelatedSettings
=
observer
(
()
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
[
originalSetting
,
setOriginalSetting
]
=
useState
<
WorkspaceMemoRelatedSetting
>
(
workspaceStore
.
state
.
memoRelatedSetting
);
const
[
originalSetting
,
setOriginalSetting
]
=
useState
<
WorkspaceMemoRelatedSetting
>
(
workspaceStore
.
state
.
memoRelatedSetting
);
const
[
memoRelatedSetting
,
setMemoRelatedSetting
]
=
useState
<
WorkspaceMemoRelatedSetting
>
(
originalSetting
);
const
[
memoRelatedSetting
,
setMemoRelatedSetting
]
=
useState
<
WorkspaceMemoRelatedSetting
>
(
originalSetting
);
...
@@ -197,6 +198,6 @@ const MemoRelatedSettings = () => {
...
@@ -197,6 +198,6 @@ const MemoRelatedSettings = () => {
</
div
>
</
div
>
</
div
>
</
div
>
);
);
};
}
)
;
export
default
MemoRelatedSettings
;
export
default
MemoRelatedSettings
;
web/src/components/Settings/StorageSection.tsx
View file @
e6fe088a
...
@@ -2,6 +2,7 @@ import { Divider, List, ListItem, Radio, RadioGroup, Tooltip, Switch } from "@mu
...
@@ -2,6 +2,7 @@ import { Divider, List, ListItem, Radio, RadioGroup, Tooltip, Switch } from "@mu
import
{
Button
,
Input
}
from
"@usememos/mui"
;
import
{
Button
,
Input
}
from
"@usememos/mui"
;
import
{
isEqual
}
from
"lodash-es"
;
import
{
isEqual
}
from
"lodash-es"
;
import
{
HelpCircleIcon
}
from
"lucide-react"
;
import
{
HelpCircleIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
React
,
{
useEffect
,
useMemo
,
useState
}
from
"react"
;
import
React
,
{
useEffect
,
useMemo
,
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
Link
}
from
"react-router-dom"
;
import
{
Link
}
from
"react-router-dom"
;
...
@@ -15,7 +16,7 @@ import {
...
@@ -15,7 +16,7 @@ import {
}
from
"@/types/proto/api/v1/workspace_setting_service"
;
}
from
"@/types/proto/api/v1/workspace_setting_service"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
const
StorageSection
=
()
=>
{
const
StorageSection
=
observer
(
()
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
[
workspaceStorageSetting
,
setWorkspaceStorageSetting
]
=
useState
<
WorkspaceStorageSetting
>
(
const
[
workspaceStorageSetting
,
setWorkspaceStorageSetting
]
=
useState
<
WorkspaceStorageSetting
>
(
WorkspaceStorageSetting
.
fromPartial
(
workspaceStore
.
getWorkspaceSettingByKey
(
WorkspaceSettingKey
.
STORAGE
)?.
storageSetting
||
{}),
WorkspaceStorageSetting
.
fromPartial
(
workspaceStore
.
getWorkspaceSettingByKey
(
WorkspaceSettingKey
.
STORAGE
)?.
storageSetting
||
{}),
...
@@ -223,6 +224,6 @@ const StorageSection = () => {
...
@@ -223,6 +224,6 @@ const StorageSection = () => {
</
div
>
</
div
>
</
div
>
</
div
>
);
);
};
}
)
;
export
default
StorageSection
;
export
default
StorageSection
;
web/src/components/TagTree.tsx
View file @
e6fe088a
import
{
ChevronRightIcon
,
HashIcon
}
from
"lucide-react"
;
import
{
ChevronRightIcon
,
HashIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
useToggle
from
"react-use/lib/useToggle"
;
import
useToggle
from
"react-use/lib/useToggle"
;
import
memoFilterStore
,
{
MemoFilter
}
from
"@/store/v2/memoFilter"
;
import
memoFilterStore
,
{
MemoFilter
}
from
"@/store/v2/memoFilter"
;
...
@@ -83,7 +84,7 @@ interface TagItemContainerProps {
...
@@ -83,7 +84,7 @@ interface TagItemContainerProps {
tag
:
Tag
;
tag
:
Tag
;
}
}
const
TagItemContainer
:
React
.
FC
<
TagItemContainerProps
>
=
(
props
:
TagItemContainerProps
)
=>
{
const
TagItemContainer
=
observer
(
(
props
:
TagItemContainerProps
)
=>
{
const
{
tag
}
=
props
;
const
{
tag
}
=
props
;
const
tagFilters
=
memoFilterStore
.
getFiltersByFactor
(
"tagSearch"
);
const
tagFilters
=
memoFilterStore
.
getFiltersByFactor
(
"tagSearch"
);
const
isActive
=
tagFilters
.
some
((
f
:
MemoFilter
)
=>
f
.
value
===
tag
.
text
);
const
isActive
=
tagFilters
.
some
((
f
:
MemoFilter
)
=>
f
.
value
===
tag
.
text
);
...
@@ -145,6 +146,6 @@ const TagItemContainer: React.FC<TagItemContainerProps> = (props: TagItemContain
...
@@ -145,6 +146,6 @@ const TagItemContainer: React.FC<TagItemContainerProps> = (props: TagItemContain
)
:
null
}
)
:
null
}
</>
</>
);
);
};
}
)
;
export
default
TagTree
;
export
default
TagTree
;
web/src/pages/AdminSignIn.tsx
View file @
e6fe088a
import
{
observer
}
from
"mobx-react-lite"
;
import
AuthFooter
from
"@/components/AuthFooter"
;
import
AuthFooter
from
"@/components/AuthFooter"
;
import
PasswordSignInForm
from
"@/components/PasswordSignInForm"
;
import
PasswordSignInForm
from
"@/components/PasswordSignInForm"
;
import
{
workspaceStore
}
from
"@/store/v2"
;
import
{
workspaceStore
}
from
"@/store/v2"
;
const
AdminSignIn
=
()
=>
{
const
AdminSignIn
=
observer
(
()
=>
{
const
workspaceGeneralSetting
=
workspaceStore
.
state
.
generalSetting
;
const
workspaceGeneralSetting
=
workspaceStore
.
state
.
generalSetting
;
return
(
return
(
...
@@ -20,6 +21,6 @@ const AdminSignIn = () => {
...
@@ -20,6 +21,6 @@ const AdminSignIn = () => {
<
AuthFooter
/>
<
AuthFooter
/>
</
div
>
</
div
>
);
);
};
}
)
;
export
default
AdminSignIn
;
export
default
AdminSignIn
;
web/src/pages/Archived.tsx
View file @
e6fe088a
import
dayjs
from
"dayjs"
;
import
dayjs
from
"dayjs"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useMemo
}
from
"react"
;
import
{
useMemo
}
from
"react"
;
import
MemoView
from
"@/components/MemoView"
;
import
MemoView
from
"@/components/MemoView"
;
import
PagedMemoList
from
"@/components/PagedMemoList"
;
import
PagedMemoList
from
"@/components/PagedMemoList"
;
...
@@ -8,7 +9,7 @@ import memoFilterStore from "@/store/v2/memoFilter";
...
@@ -8,7 +9,7 @@ import memoFilterStore from "@/store/v2/memoFilter";
import
{
Direction
,
State
}
from
"@/types/proto/api/v1/common"
;
import
{
Direction
,
State
}
from
"@/types/proto/api/v1/common"
;
import
{
Memo
}
from
"@/types/proto/api/v1/memo_service"
;
import
{
Memo
}
from
"@/types/proto/api/v1/memo_service"
;
const
Archived
=
()
=>
{
const
Archived
=
observer
(
()
=>
{
const
user
=
useCurrentUser
();
const
user
=
useCurrentUser
();
const
memoListFilter
=
useMemo
(()
=>
{
const
memoListFilter
=
useMemo
(()
=>
{
...
@@ -49,6 +50,6 @@ const Archived = () => {
...
@@ -49,6 +50,6 @@ const Archived = () => {
oldFilter=
{
memoListFilter
}
oldFilter=
{
memoListFilter
}
/>
/>
);
);
};
}
)
;
export
default
Archived
;
export
default
Archived
;
web/src/pages/AuthCallback.tsx
View file @
e6fe088a
import
{
last
}
from
"lodash-es"
;
import
{
last
}
from
"lodash-es"
;
import
{
LoaderIcon
}
from
"lucide-react"
;
import
{
LoaderIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
ClientError
}
from
"nice-grpc-web"
;
import
{
ClientError
}
from
"nice-grpc-web"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
useSearchParams
}
from
"react-router-dom"
;
import
{
useSearchParams
}
from
"react-router-dom"
;
...
@@ -13,7 +14,7 @@ interface State {
...
@@ -13,7 +14,7 @@ interface State {
errorMessage
:
string
;
errorMessage
:
string
;
}
}
const
AuthCallback
=
()
=>
{
const
AuthCallback
=
observer
(
()
=>
{
const
navigateTo
=
useNavigateTo
();
const
navigateTo
=
useNavigateTo
();
const
[
searchParams
]
=
useSearchParams
();
const
[
searchParams
]
=
useSearchParams
();
const
[
state
,
setState
]
=
useState
<
State
>
({
const
[
state
,
setState
]
=
useState
<
State
>
({
...
@@ -77,6 +78,6 @@ const AuthCallback = () => {
...
@@ -77,6 +78,6 @@ const AuthCallback = () => {
)
}
)
}
</
div
>
</
div
>
);
);
};
}
)
;
export
default
AuthCallback
;
export
default
AuthCallback
;
web/src/pages/Explore.tsx
View file @
e6fe088a
import
dayjs
from
"dayjs"
;
import
dayjs
from
"dayjs"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useMemo
}
from
"react"
;
import
{
useMemo
}
from
"react"
;
import
MemoView
from
"@/components/MemoView"
;
import
MemoView
from
"@/components/MemoView"
;
import
PagedMemoList
from
"@/components/PagedMemoList"
;
import
PagedMemoList
from
"@/components/PagedMemoList"
;
...
@@ -8,7 +9,7 @@ import memoFilterStore from "@/store/v2/memoFilter";
...
@@ -8,7 +9,7 @@ import memoFilterStore from "@/store/v2/memoFilter";
import
{
Direction
,
State
}
from
"@/types/proto/api/v1/common"
;
import
{
Direction
,
State
}
from
"@/types/proto/api/v1/common"
;
import
{
Memo
}
from
"@/types/proto/api/v1/memo_service"
;
import
{
Memo
}
from
"@/types/proto/api/v1/memo_service"
;
const
Explore
=
()
=>
{
const
Explore
=
observer
(
()
=>
{
const
user
=
useCurrentUser
();
const
user
=
useCurrentUser
();
const
memoListFilter
=
useMemo
(()
=>
{
const
memoListFilter
=
useMemo
(()
=>
{
...
@@ -59,6 +60,6 @@ const Explore = () => {
...
@@ -59,6 +60,6 @@ const Explore = () => {
oldFilter=
{
memoListFilter
}
oldFilter=
{
memoListFilter
}
/>
/>
);
);
};
}
)
;
export
default
Explore
;
export
default
Explore
;
web/src/pages/SignIn.tsx
View file @
e6fe088a
import
{
Divider
}
from
"@mui/joy"
;
import
{
Divider
}
from
"@mui/joy"
;
import
{
Button
}
from
"@usememos/mui"
;
import
{
Button
}
from
"@usememos/mui"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
Link
}
from
"react-router-dom"
;
import
{
Link
}
from
"react-router-dom"
;
...
@@ -14,7 +15,7 @@ import { workspaceStore } from "@/store/v2";
...
@@ -14,7 +15,7 @@ import { workspaceStore } from "@/store/v2";
import
{
IdentityProvider
,
IdentityProvider_Type
}
from
"@/types/proto/api/v1/idp_service"
;
import
{
IdentityProvider
,
IdentityProvider_Type
}
from
"@/types/proto/api/v1/idp_service"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
const
SignIn
=
()
=>
{
const
SignIn
=
observer
(
()
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
currentUser
=
useCurrentUser
();
const
currentUser
=
useCurrentUser
();
const
[
identityProviderList
,
setIdentityProviderList
]
=
useState
<
IdentityProvider
[]
>
([]);
const
[
identityProviderList
,
setIdentityProviderList
]
=
useState
<
IdentityProvider
[]
>
([]);
...
@@ -98,6 +99,6 @@ const SignIn = () => {
...
@@ -98,6 +99,6 @@ const SignIn = () => {
<
AuthFooter
/>
<
AuthFooter
/>
</
div
>
</
div
>
);
);
};
}
)
;
export
default
SignIn
;
export
default
SignIn
;
web/src/pages/SignUp.tsx
View file @
e6fe088a
import
{
Button
,
Input
}
from
"@usememos/mui"
;
import
{
Button
,
Input
}
from
"@usememos/mui"
;
import
{
LoaderIcon
}
from
"lucide-react"
;
import
{
LoaderIcon
}
from
"lucide-react"
;
import
{
observer
}
from
"mobx-react-lite"
;
import
{
ClientError
}
from
"nice-grpc-web"
;
import
{
ClientError
}
from
"nice-grpc-web"
;
import
{
useState
}
from
"react"
;
import
{
useState
}
from
"react"
;
import
{
toast
}
from
"react-hot-toast"
;
import
{
toast
}
from
"react-hot-toast"
;
...
@@ -12,7 +13,7 @@ import { workspaceStore } from "@/store/v2";
...
@@ -12,7 +13,7 @@ import { workspaceStore } from "@/store/v2";
import
{
initialUserStore
}
from
"@/store/v2/user"
;
import
{
initialUserStore
}
from
"@/store/v2/user"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
const
SignUp
=
()
=>
{
const
SignUp
=
observer
(
()
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
navigateTo
=
useNavigateTo
();
const
navigateTo
=
useNavigateTo
();
const
actionBtnLoadingState
=
useLoading
(
false
);
const
actionBtnLoadingState
=
useLoading
(
false
);
...
@@ -135,6 +136,6 @@ const SignUp = () => {
...
@@ -135,6 +136,6 @@ const SignUp = () => {
<
AuthFooter
/>
<
AuthFooter
/>
</
div
>
</
div
>
);
);
};
}
)
;
export
default
SignUp
;
export
default
SignUp
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment