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
0275a657
Commit
0275a657
authored
May 28, 2024
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: add last visited page
parent
239f28c1
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
46 additions
and
5 deletions
+46
-5
TimelineSidebar.tsx
web/src/components/TimelineSidebar/TimelineSidebar.tsx
+5
-0
UserStatisticsView.tsx
web/src/components/UserStatisticsView.tsx
+0
-4
Home.tsx
web/src/pages/Home.tsx
+7
-0
RootRedirector.tsx
web/src/pages/RootRedirector.tsx
+20
-0
Timeline.tsx
web/src/pages/Timeline.tsx
+7
-0
index.tsx
web/src/router/index.tsx
+7
-1
No files found.
web/src/components/TimelineSidebar/TimelineSidebar.tsx
View file @
0275a657
import
clsx
from
"clsx"
;
import
clsx
from
"clsx"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
TagsSection
from
"../HomeSidebar/TagsSection"
;
import
TagsSection
from
"../HomeSidebar/TagsSection"
;
import
SearchBar
from
"../SearchBar"
;
import
SearchBar
from
"../SearchBar"
;
import
UserStatisticsView
from
"../UserStatisticsView"
;
interface
Props
{
interface
Props
{
className
?:
string
;
className
?:
string
;
}
}
const
TimelineSidebar
=
(
props
:
Props
)
=>
{
const
TimelineSidebar
=
(
props
:
Props
)
=>
{
const
currentUser
=
useCurrentUser
();
return
(
return
(
<
aside
<
aside
className=
{
clsx
(
className=
{
clsx
(
...
@@ -15,6 +19,7 @@ const TimelineSidebar = (props: Props) => {
...
@@ -15,6 +19,7 @@ const TimelineSidebar = (props: Props) => {
)
}
)
}
>
>
<
SearchBar
/>
<
SearchBar
/>
<
UserStatisticsView
user=
{
currentUser
}
/>
<
TagsSection
/>
<
TagsSection
/>
</
aside
>
</
aside
>
);
);
...
...
web/src/components/UserStatisticsView.tsx
View file @
0275a657
...
@@ -29,10 +29,6 @@ const UserStatisticsView = (props: Props) => {
...
@@ -29,10 +29,6 @@ const UserStatisticsView = (props: Props) => {
const
memos
=
Object
.
values
(
memoStore
.
getState
().
memoMapByName
);
const
memos
=
Object
.
values
(
memoStore
.
getState
().
memoMapByName
);
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
memos
.
length
===
0
)
{
return
;
}
(
async
()
=>
{
(
async
()
=>
{
setIsRequesting
(
true
);
setIsRequesting
(
true
);
const
{
properties
}
=
await
memoServiceClient
.
listMemoProperties
({
const
{
properties
}
=
await
memoServiceClient
.
listMemoProperties
({
...
...
web/src/pages/Home.tsx
View file @
0275a657
import
{
Button
}
from
"@mui/joy"
;
import
{
Button
}
from
"@mui/joy"
;
import
clsx
from
"clsx"
;
import
clsx
from
"clsx"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
useLocalStorage
}
from
"react-use"
;
import
Empty
from
"@/components/Empty"
;
import
Empty
from
"@/components/Empty"
;
import
{
HomeSidebar
,
HomeSidebarDrawer
}
from
"@/components/HomeSidebar"
;
import
{
HomeSidebar
,
HomeSidebarDrawer
}
from
"@/components/HomeSidebar"
;
import
Icon
from
"@/components/Icon"
;
import
Icon
from
"@/components/Icon"
;
...
@@ -13,6 +14,7 @@ import { getTimeStampByDate } from "@/helpers/datetime";
...
@@ -13,6 +14,7 @@ import { getTimeStampByDate } from "@/helpers/datetime";
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
useFilterWithUrlParams
from
"@/hooks/useFilterWithUrlParams"
;
import
useFilterWithUrlParams
from
"@/hooks/useFilterWithUrlParams"
;
import
useResponsiveWidth
from
"@/hooks/useResponsiveWidth"
;
import
useResponsiveWidth
from
"@/hooks/useResponsiveWidth"
;
import
{
Routes
}
from
"@/router"
;
import
{
useMemoList
,
useMemoStore
}
from
"@/store/v1"
;
import
{
useMemoList
,
useMemoStore
}
from
"@/store/v1"
;
import
{
RowStatus
}
from
"@/types/proto/api/v1/common"
;
import
{
RowStatus
}
from
"@/types/proto/api/v1/common"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
...
@@ -23,6 +25,7 @@ const Home = () => {
...
@@ -23,6 +25,7 @@ const Home = () => {
const
user
=
useCurrentUser
();
const
user
=
useCurrentUser
();
const
memoStore
=
useMemoStore
();
const
memoStore
=
useMemoStore
();
const
memoList
=
useMemoList
();
const
memoList
=
useMemoList
();
const
[,
setLastVisited
]
=
useLocalStorage
<
string
>
(
"lastVisited"
,
Routes
.
HOME
);
const
[
isRequesting
,
setIsRequesting
]
=
useState
(
true
);
const
[
isRequesting
,
setIsRequesting
]
=
useState
(
true
);
const
[
nextPageToken
,
setNextPageToken
]
=
useState
<
string
>
(
""
);
const
[
nextPageToken
,
setNextPageToken
]
=
useState
<
string
>
(
""
);
const
filter
=
useFilterWithUrlParams
();
const
filter
=
useFilterWithUrlParams
();
...
@@ -31,6 +34,10 @@ const Home = () => {
...
@@ -31,6 +34,10 @@ const Home = () => {
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
b
.
displayTime
)
-
getTimeStampByDate
(
a
.
displayTime
))
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
b
.
displayTime
)
-
getTimeStampByDate
(
a
.
displayTime
))
.
sort
((
a
,
b
)
=>
Number
(
b
.
pinned
)
-
Number
(
a
.
pinned
));
.
sort
((
a
,
b
)
=>
Number
(
b
.
pinned
)
-
Number
(
a
.
pinned
));
useEffect
(()
=>
{
setLastVisited
(
Routes
.
HOME
);
},
[]);
useEffect
(()
=>
{
useEffect
(()
=>
{
memoList
.
reset
();
memoList
.
reset
();
fetchMemos
(
""
);
fetchMemos
(
""
);
...
...
web/src/pages/RootRedirector.tsx
0 → 100644
View file @
0275a657
import
{
useEffect
}
from
"react"
;
import
useLocalStorage
from
"react-use/lib/useLocalStorage"
;
import
useNavigateTo
from
"@/hooks/useNavigateTo"
;
const
RootRedirector
:
React
.
FC
=
()
=>
{
const
[
lastVisited
]
=
useLocalStorage
<
string
>
(
"lastVisited"
,
"/home"
);
const
navigateTo
=
useNavigateTo
();
useEffect
(()
=>
{
if
(
lastVisited
===
"/home"
||
lastVisited
===
"/timeline"
)
{
navigateTo
(
lastVisited
);
}
else
{
navigateTo
(
"/home"
);
}
},
[]);
return
<></>;
};
export
default
RootRedirector
;
web/src/pages/Timeline.tsx
View file @
0275a657
...
@@ -2,6 +2,7 @@ import { Button, IconButton } from "@mui/joy";
...
@@ -2,6 +2,7 @@ import { Button, IconButton } from "@mui/joy";
import
clsx
from
"clsx"
;
import
clsx
from
"clsx"
;
import
dayjs
from
"dayjs"
;
import
dayjs
from
"dayjs"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
{
useLocalStorage
}
from
"react-use"
;
import
ActivityCalendar
from
"@/components/ActivityCalendar"
;
import
ActivityCalendar
from
"@/components/ActivityCalendar"
;
import
Empty
from
"@/components/Empty"
;
import
Empty
from
"@/components/Empty"
;
import
Icon
from
"@/components/Icon"
;
import
Icon
from
"@/components/Icon"
;
...
@@ -17,6 +18,7 @@ import useCurrentUser from "@/hooks/useCurrentUser";
...
@@ -17,6 +18,7 @@ import useCurrentUser from "@/hooks/useCurrentUser";
import
useFilterWithUrlParams
from
"@/hooks/useFilterWithUrlParams"
;
import
useFilterWithUrlParams
from
"@/hooks/useFilterWithUrlParams"
;
import
useResponsiveWidth
from
"@/hooks/useResponsiveWidth"
;
import
useResponsiveWidth
from
"@/hooks/useResponsiveWidth"
;
import
i18n
from
"@/i18n"
;
import
i18n
from
"@/i18n"
;
import
{
Routes
}
from
"@/router"
;
import
{
useMemoList
,
useMemoStore
}
from
"@/store/v1"
;
import
{
useMemoList
,
useMemoStore
}
from
"@/store/v1"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
...
@@ -26,6 +28,7 @@ const Timeline = () => {
...
@@ -26,6 +28,7 @@ const Timeline = () => {
const
user
=
useCurrentUser
();
const
user
=
useCurrentUser
();
const
memoStore
=
useMemoStore
();
const
memoStore
=
useMemoStore
();
const
memoList
=
useMemoList
();
const
memoList
=
useMemoList
();
const
[,
setLastVisited
]
=
useLocalStorage
<
string
>
(
"lastVisited"
,
Routes
.
TIMELINE
);
const
{
tag
:
tagQuery
,
text
:
textQuery
}
=
useFilterWithUrlParams
();
const
{
tag
:
tagQuery
,
text
:
textQuery
}
=
useFilterWithUrlParams
();
const
[
activityStats
,
setActivityStats
]
=
useState
<
Record
<
string
,
number
>>
({});
const
[
activityStats
,
setActivityStats
]
=
useState
<
Record
<
string
,
number
>>
({});
const
[
selectedDateString
,
setSelectedDateString
]
=
useState
<
string
>
(
new
Date
().
toDateString
());
const
[
selectedDateString
,
setSelectedDateString
]
=
useState
<
string
>
(
new
Date
().
toDateString
());
...
@@ -34,6 +37,10 @@ const Timeline = () => {
...
@@ -34,6 +37,10 @@ const Timeline = () => {
const
sortedMemos
=
memoList
.
value
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
a
.
displayTime
)
-
getTimeStampByDate
(
b
.
displayTime
));
const
sortedMemos
=
memoList
.
value
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
a
.
displayTime
)
-
getTimeStampByDate
(
b
.
displayTime
));
const
monthString
=
dayjs
(
selectedDateString
).
format
(
"YYYY-MM"
);
const
monthString
=
dayjs
(
selectedDateString
).
format
(
"YYYY-MM"
);
useEffect
(()
=>
{
setLastVisited
(
Routes
.
TIMELINE
);
},
[]);
useEffect
(()
=>
{
useEffect
(()
=>
{
memoList
.
reset
();
memoList
.
reset
();
fetchMemos
(
""
);
fetchMemos
(
""
);
...
...
web/src/router/index.tsx
View file @
0275a657
...
@@ -12,6 +12,7 @@ import MemoDetail from "@/pages/MemoDetail";
...
@@ -12,6 +12,7 @@ import MemoDetail from "@/pages/MemoDetail";
import
NotFound
from
"@/pages/NotFound"
;
import
NotFound
from
"@/pages/NotFound"
;
import
PermissionDenied
from
"@/pages/PermissionDenied"
;
import
PermissionDenied
from
"@/pages/PermissionDenied"
;
import
Resources
from
"@/pages/Resources"
;
import
Resources
from
"@/pages/Resources"
;
import
RootRedirector
from
"@/pages/RootRedirector"
;
import
Setting
from
"@/pages/Setting"
;
import
Setting
from
"@/pages/Setting"
;
import
SignIn
from
"@/pages/SignIn"
;
import
SignIn
from
"@/pages/SignIn"
;
import
SignUp
from
"@/pages/SignUp"
;
import
SignUp
from
"@/pages/SignUp"
;
...
@@ -19,7 +20,8 @@ import Timeline from "@/pages/Timeline";
...
@@ -19,7 +20,8 @@ import Timeline from "@/pages/Timeline";
import
UserProfile
from
"@/pages/UserProfile"
;
import
UserProfile
from
"@/pages/UserProfile"
;
export
enum
Routes
{
export
enum
Routes
{
HOME
=
"/"
,
ROOT
=
"/"
,
HOME
=
"/home"
,
TIMELINE
=
"/timeline"
,
TIMELINE
=
"/timeline"
,
RESOURCES
=
"/resources"
,
RESOURCES
=
"/resources"
,
INBOX
=
"/inbox"
,
INBOX
=
"/inbox"
,
...
@@ -57,6 +59,10 @@ const router = createBrowserRouter([
...
@@ -57,6 +59,10 @@ const router = createBrowserRouter([
path
:
"/"
,
path
:
"/"
,
element
:
<
HomeLayout
/>,
element
:
<
HomeLayout
/>,
children
:
[
children
:
[
{
path
:
Routes
.
ROOT
,
element
:
<
RootRedirector
/>,
},
{
{
path
:
Routes
.
HOME
,
path
:
Routes
.
HOME
,
element
:
<
Home
/>,
element
:
<
Home
/>,
...
...
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