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
29b540ad
Commit
29b540ad
authored
Dec 22, 2023
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: fix fetch memos
parent
919f75af
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
48 additions
and
27 deletions
+48
-27
Archived.tsx
web/src/pages/Archived.tsx
+3
-1
Explore.tsx
web/src/pages/Explore.tsx
+1
-1
Home.tsx
web/src/pages/Home.tsx
+2
-2
Timeline.tsx
web/src/pages/Timeline.tsx
+19
-10
UserProfile.tsx
web/src/pages/UserProfile.tsx
+23
-13
No files found.
web/src/pages/Archived.tsx
View file @
29b540ad
...
@@ -8,6 +8,7 @@ import MemoContent from "@/components/MemoContent";
...
@@ -8,6 +8,7 @@ import MemoContent from "@/components/MemoContent";
import
MobileHeader
from
"@/components/MobileHeader"
;
import
MobileHeader
from
"@/components/MobileHeader"
;
import
{
memoServiceClient
}
from
"@/grpcweb"
;
import
{
memoServiceClient
}
from
"@/grpcweb"
;
import
{
getDateTimeString
}
from
"@/helpers/datetime"
;
import
{
getDateTimeString
}
from
"@/helpers/datetime"
;
import
useCurrentUser
from
"@/hooks/useCurrentUser"
;
import
useLoading
from
"@/hooks/useLoading"
;
import
useLoading
from
"@/hooks/useLoading"
;
import
{
useMemoV1Store
}
from
"@/store/v1"
;
import
{
useMemoV1Store
}
from
"@/store/v1"
;
import
{
RowStatus
}
from
"@/types/proto/api/v2/common"
;
import
{
RowStatus
}
from
"@/types/proto/api/v2/common"
;
...
@@ -17,13 +18,14 @@ import { useTranslate } from "@/utils/i18n";
...
@@ -17,13 +18,14 @@ import { useTranslate } from "@/utils/i18n";
const
Archived
=
()
=>
{
const
Archived
=
()
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
loadingState
=
useLoading
();
const
loadingState
=
useLoading
();
const
user
=
useCurrentUser
();
const
memoStore
=
useMemoV1Store
();
const
memoStore
=
useMemoV1Store
();
const
[
archivedMemos
,
setArchivedMemos
]
=
useState
<
Memo
[]
>
([]);
const
[
archivedMemos
,
setArchivedMemos
]
=
useState
<
Memo
[]
>
([]);
useEffect
(()
=>
{
useEffect
(()
=>
{
memoServiceClient
memoServiceClient
.
listMemos
({
.
listMemos
({
filter
:
"row_status == 'ARCHIVED'"
,
filter
:
[
`creator == "
${
user
.
name
}
"`
,
"row_status == 'ARCHIVED'"
].
join
(
" && "
)
,
})
})
.
then
(({
memos
})
=>
{
.
then
(({
memos
})
=>
{
setArchivedMemos
(
memos
);
setArchivedMemos
(
memos
);
...
...
web/src/pages/Explore.tsx
View file @
29b540ad
...
@@ -16,8 +16,8 @@ const Explore = () => {
...
@@ -16,8 +16,8 @@ const Explore = () => {
const
filterStore
=
useFilterStore
();
const
filterStore
=
useFilterStore
();
const
memoStore
=
useMemoV1Store
();
const
memoStore
=
useMemoV1Store
();
const
memoList
=
useMemoList
();
const
memoList
=
useMemoList
();
const
[
isRequesting
,
setIsRequesting
]
=
useState
(
true
);
const
[
isComplete
,
setIsComplete
]
=
useState
(
false
);
const
[
isComplete
,
setIsComplete
]
=
useState
(
false
);
const
[
isRequesting
,
setIsRequesting
]
=
useState
(
false
);
const
{
tag
:
tagQuery
,
text
:
textQuery
}
=
filterStore
.
state
;
const
{
tag
:
tagQuery
,
text
:
textQuery
}
=
filterStore
.
state
;
const
sortedMemos
=
memoList
.
value
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
b
.
displayTime
)
-
getTimeStampByDate
(
a
.
displayTime
));
const
sortedMemos
=
memoList
.
value
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
b
.
displayTime
)
-
getTimeStampByDate
(
a
.
displayTime
));
...
...
web/src/pages/Home.tsx
View file @
29b540ad
...
@@ -20,9 +20,9 @@ const Home = () => {
...
@@ -20,9 +20,9 @@ const Home = () => {
const
user
=
useCurrentUser
();
const
user
=
useCurrentUser
();
const
filterStore
=
useFilterStore
();
const
filterStore
=
useFilterStore
();
const
memoStore
=
useMemoV1Store
();
const
memoStore
=
useMemoV1Store
();
const
[
isComplete
,
setIsComplete
]
=
useState
(
false
);
const
[
isRequesting
,
setIsRequesting
]
=
useState
(
false
);
const
memoList
=
useMemoList
();
const
memoList
=
useMemoList
();
const
[
isRequesting
,
setIsRequesting
]
=
useState
(
true
);
const
[
isComplete
,
setIsComplete
]
=
useState
(
false
);
const
{
tag
:
tagQuery
,
text
:
textQuery
}
=
filterStore
.
state
;
const
{
tag
:
tagQuery
,
text
:
textQuery
}
=
filterStore
.
state
;
const
sortedMemos
=
memoList
.
value
const
sortedMemos
=
memoList
.
value
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
b
.
displayTime
)
-
getTimeStampByDate
(
a
.
displayTime
))
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
b
.
displayTime
)
-
getTimeStampByDate
(
a
.
displayTime
))
...
...
web/src/pages/Timeline.tsx
View file @
29b540ad
...
@@ -15,25 +15,34 @@ import { useTranslate } from "@/utils/i18n";
...
@@ -15,25 +15,34 @@ import { useTranslate } from "@/utils/i18n";
const
Timeline
=
()
=>
{
const
Timeline
=
()
=>
{
const
t
=
useTranslate
();
const
t
=
useTranslate
();
const
currentU
ser
=
useCurrentUser
();
const
u
ser
=
useCurrentUser
();
const
memoStore
=
useMemoV1Store
();
const
memoStore
=
useMemoV1Store
();
const
memoList
=
useMemoList
();
const
memoList
=
useMemoList
();
const
currentDateStamp
=
getDateStampByDate
(
getNormalizedDateString
())
as
number
;
const
currentDateStamp
=
getDateStampByDate
(
getNormalizedDateString
())
as
number
;
const
[
selectedDateStamp
,
setSelectedDateStamp
]
=
useState
<
number
>
(
currentDateStamp
as
number
);
const
[
selectedDateStamp
,
setSelectedDateStamp
]
=
useState
<
number
>
(
currentDateStamp
as
number
);
const
[
isRequesting
,
setIsRequesting
]
=
useState
(
true
);
const
[
showDatePicker
,
toggleShowDatePicker
]
=
useToggle
(
false
);
const
[
showDatePicker
,
toggleShowDatePicker
]
=
useToggle
(
false
);
const
sortedMemos
=
memoList
.
value
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
a
.
createTime
)
-
getTimeStampByDate
(
b
.
createTime
));
const
sortedMemos
=
memoList
.
value
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
a
.
createTime
)
-
getTimeStampByDate
(
b
.
createTime
));
useEffect
(()
=>
{
useEffect
(()
=>
{
memoList
.
reset
();
memoList
.
reset
();
fetchMemos
();
},
[
selectedDateStamp
]);
const
fetchMemos
=
async
()
=>
{
const
filters
=
[
const
filters
=
[
`creator == "
${
currentUser
.
name
}
"`
,
`creator == "
${
user
.
name
}
"`
,
`row_status == "NORMAL"`
,
`created_ts_after ==
${
selectedDateStamp
/
1000
}
`
,
`created_ts_after ==
${
selectedDateStamp
/
1000
}
`
,
`created_ts_before ==
${(
selectedDateStamp
+
DAILY_TIMESTAMP
)
/
1000
}
`
,
`created_ts_before ==
${(
selectedDateStamp
+
DAILY_TIMESTAMP
)
/
1000
}
`
,
];
];
memoStore
.
fetchMemos
({
setIsRequesting
(
true
);
await
memoStore
.
fetchMemos
({
offset
:
memoList
.
size
(),
filter
:
filters
.
join
(
" && "
),
filter
:
filters
.
join
(
" && "
),
});
});
},
[
selectedDateStamp
]);
setIsRequesting
(
false
);
};
const
handleDataPickerChange
=
(
datestamp
:
number
):
void
=>
{
const
handleDataPickerChange
=
(
datestamp
:
number
):
void
=>
{
setSelectedDateStamp
(
datestamp
);
setSelectedDateStamp
(
datestamp
);
...
@@ -73,12 +82,6 @@ const Timeline = () => {
...
@@ -73,12 +82,6 @@ const Timeline = () => {
/>
/>
</
div
>
</
div
>
<
div
className=
"w-full h-auto flex flex-col justify-start items-start px-2 pb-4 bg-white dark:bg-zinc-700"
>
<
div
className=
"w-full h-auto flex flex-col justify-start items-start px-2 pb-4 bg-white dark:bg-zinc-700"
>
{
sortedMemos
.
length
===
0
&&
(
<
div
className=
"w-full mt-4 mb-8 flex flex-col justify-center items-center italic"
>
<
Empty
/>
<
p
className=
"mt-4 text-gray-600 dark:text-gray-400"
>
{
t
(
"message.no-data"
)
}
</
p
>
</
div
>
)
}
<
div
className=
"flex flex-col justify-start items-start w-full mt-2"
>
<
div
className=
"flex flex-col justify-start items-start w-full mt-2"
>
{
sortedMemos
.
map
((
memo
,
index
)
=>
(
{
sortedMemos
.
map
((
memo
,
index
)
=>
(
<
div
<
div
...
@@ -102,6 +105,12 @@ const Timeline = () => {
...
@@ -102,6 +105,12 @@ const Timeline = () => {
</
div
>
</
div
>
)
}
)
}
</
div
>
</
div
>
{
!
isRequesting
&&
sortedMemos
.
length
===
0
&&
(
<
div
className=
"w-full mt-4 mb-8 flex flex-col justify-center items-center italic"
>
<
Empty
/>
<
p
className=
"mt-4 text-gray-600 dark:text-gray-400"
>
{
t
(
"message.no-data"
)
}
</
p
>
</
div
>
)
}
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
...
...
web/src/pages/UserProfile.tsx
View file @
29b540ad
...
@@ -6,10 +6,10 @@ import MemoView from "@/components/MemoView";
...
@@ -6,10 +6,10 @@ import MemoView from "@/components/MemoView";
import
MobileHeader
from
"@/components/MobileHeader"
;
import
MobileHeader
from
"@/components/MobileHeader"
;
import
UserAvatar
from
"@/components/UserAvatar"
;
import
UserAvatar
from
"@/components/UserAvatar"
;
import
{
DEFAULT_MEMO_LIMIT
}
from
"@/helpers/consts"
;
import
{
DEFAULT_MEMO_LIMIT
}
from
"@/helpers/consts"
;
import
{
getTimeStampByDate
}
from
"@/helpers/datetime"
;
import
useLoading
from
"@/hooks/useLoading"
;
import
useLoading
from
"@/hooks/useLoading"
;
import
{
useFilterStore
}
from
"@/store/module"
;
import
{
useFilterStore
}
from
"@/store/module"
;
import
{
useMemoV1Store
,
useUserV1Store
}
from
"@/store/v1"
;
import
{
useMemoList
,
useMemoV1Store
,
useUserV1Store
}
from
"@/store/v1"
;
import
{
Memo
}
from
"@/types/proto/api/v2/memo_service"
;
import
{
User
}
from
"@/types/proto/api/v2/user_service"
;
import
{
User
}
from
"@/types/proto/api/v2/user_service"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
import
{
useTranslate
}
from
"@/utils/i18n"
;
...
@@ -21,10 +21,13 @@ const UserProfile = () => {
...
@@ -21,10 +21,13 @@ const UserProfile = () => {
const
[
user
,
setUser
]
=
useState
<
User
>
();
const
[
user
,
setUser
]
=
useState
<
User
>
();
const
filterStore
=
useFilterStore
();
const
filterStore
=
useFilterStore
();
const
memoStore
=
useMemoV1Store
();
const
memoStore
=
useMemoV1Store
();
const
[
memos
,
setMemos
]
=
useState
<
Memo
[]
>
([]);
const
memoList
=
useMemoList
();
const
[
isRequesting
,
setIsRequesting
]
=
useState
(
true
);
const
[
isComplete
,
setIsComplete
]
=
useState
(
false
);
const
[
isComplete
,
setIsComplete
]
=
useState
(
false
);
const
[
isRequesting
,
setIsRequesting
]
=
useState
(
false
);
const
{
tag
:
tagQuery
,
text
:
textQuery
}
=
filterStore
.
state
;
const
{
tag
:
tagQuery
,
text
:
textQuery
}
=
filterStore
.
state
;
const
sortedMemos
=
memoList
.
value
.
sort
((
a
,
b
)
=>
getTimeStampByDate
(
b
.
displayTime
)
-
getTimeStampByDate
(
a
.
displayTime
))
.
sort
((
a
,
b
)
=>
Number
(
b
.
pinned
)
-
Number
(
a
.
pinned
));
useEffect
(()
=>
{
useEffect
(()
=>
{
const
username
=
params
.
username
;
const
username
=
params
.
username
;
...
@@ -45,6 +48,7 @@ const UserProfile = () => {
...
@@ -45,6 +48,7 @@ const UserProfile = () => {
},
[
params
.
username
]);
},
[
params
.
username
]);
useEffect
(()
=>
{
useEffect
(()
=>
{
memoList
.
reset
();
fetchMemos
();
fetchMemos
();
},
[
tagQuery
,
textQuery
]);
},
[
tagQuery
,
textQuery
]);
...
@@ -54,16 +58,23 @@ const UserProfile = () => {
...
@@ -54,16 +58,23 @@ const UserProfile = () => {
}
}
const
filters
=
[
`creator == "
${
user
.
name
}
"`
,
`row_status == "NORMAL"`
];
const
filters
=
[
`creator == "
${
user
.
name
}
"`
,
`row_status == "NORMAL"`
];
if
(
tagQuery
)
filters
.
push
(
`tags == "
${
tagQuery
}
"`
);
const
contentSearch
:
string
[]
=
[];
if
(
textQuery
)
filters
.
push
(
`content_search == "
${
textQuery
}
"`
);
if
(
tagQuery
)
{
contentSearch
.
push
(
`"#
${
tagQuery
}
"`
);
}
if
(
textQuery
)
{
contentSearch
.
push
(
`"
${
textQuery
}
"`
);
}
if
(
contentSearch
.
length
>
0
)
{
filters
.
push
(
`content_search == [
${
contentSearch
.
join
(
", "
)}
]`
);
}
setIsRequesting
(
true
);
setIsRequesting
(
true
);
const
data
=
await
memoStore
.
fetchMemos
({
const
data
=
await
memoStore
.
fetchMemos
({
limit
:
DEFAULT_MEMO_LIMIT
,
limit
:
DEFAULT_MEMO_LIMIT
,
offset
:
memo
s
.
length
,
offset
:
memo
List
.
size
()
,
filter
:
filters
.
join
(
" && "
),
filter
:
filters
.
join
(
" && "
),
});
});
setIsRequesting
(
false
);
setIsRequesting
(
false
);
setMemos
([...
memos
,
...
data
]);
setIsComplete
(
data
.
length
<
DEFAULT_MEMO_LIMIT
);
setIsComplete
(
data
.
length
<
DEFAULT_MEMO_LIMIT
);
};
};
...
@@ -78,16 +89,15 @@ const UserProfile = () => {
...
@@ -78,16 +89,15 @@ const UserProfile = () => {
<
UserAvatar
className=
"!w-20 !h-20 mb-2 drop-shadow"
avatarUrl=
{
user
?.
avatarUrl
}
/>
<
UserAvatar
className=
"!w-20 !h-20 mb-2 drop-shadow"
avatarUrl=
{
user
?.
avatarUrl
}
/>
<
p
className=
"text-3xl text-black opacity-80 dark:text-gray-200"
>
{
user
?.
nickname
}
</
p
>
<
p
className=
"text-3xl text-black opacity-80 dark:text-gray-200"
>
{
user
?.
nickname
}
</
p
>
</
div
>
</
div
>
{
m
emos
.
map
((
memo
)
=>
(
{
sortedM
emos
.
map
((
memo
)
=>
(
<
MemoView
key=
{
memo
.
id
}
memo=
{
memo
}
lazyRendering
showVisibility
showPinnedStyle
showParent
/>
<
MemoView
key=
{
memo
.
id
}
memo=
{
memo
}
lazyRendering
showVisibility
showPinnedStyle
showParent
/>
))
}
))
}
{
isRequesting
&&
(
{
isRequesting
?
(
<
div
className=
"flex flex-col justify-start items-center w-full my-8"
>
<
div
className=
"flex flex-col justify-start items-center w-full my-8"
>
<
p
className=
"text-sm text-gray-400 italic"
>
{
t
(
"memo.fetching-data"
)
}
</
p
>
<
p
className=
"text-sm text-gray-400 italic"
>
{
t
(
"memo.fetching-data"
)
}
</
p
>
</
div
>
</
div
>
)
}
)
:
isComplete
?
(
{
isComplete
?
(
sortedMemos
.
length
===
0
&&
(
memos
.
length
===
0
&&
(
<
div
className=
"w-full mt-12 mb-8 flex flex-col justify-center items-center italic"
>
<
div
className=
"w-full mt-12 mb-8 flex flex-col justify-center items-center italic"
>
<
Empty
/>
<
Empty
/>
<
p
className=
"mt-2 text-gray-600 dark:text-gray-400"
>
{
t
(
"message.no-data"
)
}
</
p
>
<
p
className=
"mt-2 text-gray-600 dark:text-gray-400"
>
{
t
(
"message.no-data"
)
}
</
p
>
...
...
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