From d8d6de9fca1e62a979de9b6f629dcd00827c216c Mon Sep 17 00:00:00 2001 From: boojack Date: Wed, 26 Jul 2023 22:41:21 +0800 Subject: [PATCH] fix: get user by username api (#2034) --- api/v1/memo.go | 7 ------ api/v1/user.go | 5 +++-- web/src/components/ResourceItemDropdown.tsx | 6 +---- web/src/helpers/api.ts | 2 +- web/src/pages/Archived.tsx | 2 +- web/src/pages/Explore.tsx | 25 +++++++++------------ web/src/pages/Home.tsx | 8 +++---- web/src/router/index.tsx | 2 +- web/src/store/module/memo.ts | 6 +---- web/src/types/modules/shortcut.d.ts | 1 - 10 files changed, 21 insertions(+), 43 deletions(-) diff --git a/api/v1/memo.go b/api/v1/memo.go index 393fe609..4945df77 100644 --- a/api/v1/memo.go +++ b/api/v1/memo.go @@ -542,13 +542,6 @@ func (s *APIV1Service) registerMemoRoutes(g *echo.Group) { findMemoMessage.Pinned = &pinned } - if username := c.QueryParam("creatorUsername"); username != "" { - user, _ := s.Store.GetUser(ctx, &store.FindUser{Username: &username}) - if user != nil { - findMemoMessage.CreatorID = &user.ID - } - } - contentSearch := []string{} tag := c.QueryParam("tag") if tag != "" { diff --git a/api/v1/user.go b/api/v1/user.go index b8434138..3a49044f 100644 --- a/api/v1/user.go +++ b/api/v1/user.go @@ -258,8 +258,9 @@ func (s *APIV1Service) registerUserRoutes(g *echo.Group) { return c.JSON(http.StatusOK, userMessage) }) - // GET /user/:username - Get user by username. - g.GET("/user/:username", func(c echo.Context) error { + // GET /user/name/:username - Get user by username. + // NOTE: This should be moved to /api/v2/user/:username + g.GET("/user/name/:username", func(c echo.Context) error { ctx := c.Request().Context() username := c.Param("username") user, err := s.Store.GetUser(ctx, &store.FindUser{Username: &username}) diff --git a/web/src/components/ResourceItemDropdown.tsx b/web/src/components/ResourceItemDropdown.tsx index 2b7877ae..0e4abe90 100644 --- a/web/src/components/ResourceItemDropdown.tsx +++ b/web/src/components/ResourceItemDropdown.tsx @@ -17,15 +17,11 @@ interface Props { const ResourceItemDropdown = ({ resource }: Props) => { const t = useTranslate(); const resourceStore = useResourceStore(); - const resources = resourceStore.state.resources; const handlePreviewBtnClick = (resource: Resource) => { const resourceUrl = getResourceUrl(resource); if (resource.type.startsWith("image")) { - showPreviewImageDialog( - resources.filter((r) => r.type.startsWith("image")).map((r) => getResourceUrl(r)), - resources.findIndex((r) => r.id === resource.id) - ); + showPreviewImageDialog([getResourceUrl(resource)], 0); } else { window.open(resourceUrl); } diff --git a/web/src/helpers/api.ts b/web/src/helpers/api.ts index 2fb17442..59c59b93 100644 --- a/web/src/helpers/api.ts +++ b/web/src/helpers/api.ts @@ -57,7 +57,7 @@ export function getUserList() { } export function getUserByUsername(username: string) { - return axios.get(`/api/v1/user/${username}`); + return axios.get(`/api/v1/user/name/${username}`); } export function upsertUserSetting(upsert: UserSettingUpsert) { diff --git a/web/src/pages/Archived.tsx b/web/src/pages/Archived.tsx index e9088a62..160f4231 100644 --- a/web/src/pages/Archived.tsx +++ b/web/src/pages/Archived.tsx @@ -40,7 +40,7 @@ const Archived = () => {
-
+
diff --git a/web/src/pages/Explore.tsx b/web/src/pages/Explore.tsx index 1a73da5e..bc3bd9be 100644 --- a/web/src/pages/Explore.tsx +++ b/web/src/pages/Explore.tsx @@ -2,7 +2,7 @@ import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; import { useTranslate } from "@/utils/i18n"; import { useLocation } from "react-router-dom"; -import { useFilterStore, useMemoStore, useUserStore } from "@/store/module"; +import { useFilterStore, useGlobalStore, useMemoStore } from "@/store/module"; import { TAG_REG } from "@/labs/marked/parser"; import { DEFAULT_MEMO_LIMIT } from "@/helpers/consts"; import useLoading from "@/hooks/useLoading"; @@ -15,9 +15,9 @@ import SearchBar from "@/components/SearchBar"; const Explore = () => { const t = useTranslate(); const location = useLocation(); + const globalStore = useGlobalStore(); const filterStore = useFilterStore(); const memoStore = useMemoStore(); - const userStore = useUserStore(); const filter = filterStore.state; const { memos } = memoStore.state; const [isComplete, setIsComplete] = useState(false); @@ -55,19 +55,13 @@ const Explore = () => { }) : memos; - const username = userStore.getUsernameFromPath(); - let sortedMemos = fetchedMemos + const sortedMemos = fetchedMemos .filter((m) => m.rowStatus === "NORMAL" && m.visibility !== "PRIVATE") .sort((mi, mj) => mj.displayTs - mi.displayTs); - if (username != undefined) { - sortedMemos = sortedMemos.filter((m) => m.creatorUsername === username); - } - useEffect(() => { - const username = userStore.getUsernameFromPath(); memoStore - .fetchAllMemos(DEFAULT_MEMO_LIMIT, 0, username) + .fetchAllMemos(DEFAULT_MEMO_LIMIT, 0) .then((fetchedMemos) => { if (fetchedMemos.length < DEFAULT_MEMO_LIMIT) { setIsComplete(true); @@ -82,8 +76,7 @@ const Explore = () => { const handleFetchMoreClick = async () => { try { - const username = userStore.getUsernameFromPath(); - const fetchedMemos = await memoStore.fetchAllMemos(DEFAULT_MEMO_LIMIT, memos.length, username); + const fetchedMemos = await memoStore.fetchAllMemos(DEFAULT_MEMO_LIMIT, memos.length); if (fetchedMemos.length < DEFAULT_MEMO_LIMIT) { setIsComplete(true); } else { @@ -98,9 +91,11 @@ const Explore = () => { return (
-
- -
+ {globalStore.isDev() && ( +
+ +
+ )} {!loadingState.isLoading && (
diff --git a/web/src/pages/Home.tsx b/web/src/pages/Home.tsx index 1d4ff909..16369209 100644 --- a/web/src/pages/Home.tsx +++ b/web/src/pages/Home.tsx @@ -16,11 +16,9 @@ const Home = () => { useEffect(() => { const currentUsername = userStore.getCurrentUsername(); - userStore.getUserByUsername(currentUsername).then((user) => { - if (!user) { - toast.error(t("message.user-not-found")); - return; - } + userStore.getUserByUsername(currentUsername).catch((error) => { + console.error(error); + toast.error(t("message.user-not-found")); }); }, [userStore.getCurrentUsername()]); diff --git a/web/src/router/index.tsx b/web/src/router/index.tsx index eae2501b..6136796b 100644 --- a/web/src/router/index.tsx +++ b/web/src/router/index.tsx @@ -81,7 +81,7 @@ const router = createBrowserRouter([ }, { path: "u/:username", - element: , + element: , loader: async () => { await initialGlobalStateLoader(); diff --git a/web/src/store/module/memo.ts b/web/src/store/module/memo.ts index a8a6942f..be0c366e 100644 --- a/web/src/store/module/memo.ts +++ b/web/src/store/module/memo.ts @@ -54,7 +54,7 @@ export const useMemoStore = () => { return fetchedMemos; }, - fetchAllMemos: async (limit = DEFAULT_MEMO_LIMIT, offset?: number, username?: string) => { + fetchAllMemos: async (limit = DEFAULT_MEMO_LIMIT, offset?: number) => { store.dispatch(setIsFetching(true)); const memoFind: MemoFind = { rowStatus: "NORMAL", @@ -62,10 +62,6 @@ export const useMemoStore = () => { offset, }; - if (username != undefined) { - memoFind.creatorUsername = username; - } - const { data } = await api.getAllMemos(memoFind); const fetchedMemos = data.map((m) => convertResponseModelMemo(m)); store.dispatch(upsertMemos(fetchedMemos)); diff --git a/web/src/types/modules/shortcut.d.ts b/web/src/types/modules/shortcut.d.ts index 02c58a08..078a9e28 100644 --- a/web/src/types/modules/shortcut.d.ts +++ b/web/src/types/modules/shortcut.d.ts @@ -3,7 +3,6 @@ type ShortcutId = number; interface Shortcut { id: ShortcutId; - creatorUsername: string; rowStatus: RowStatus; createdTs: TimeStamp; updatedTs: TimeStamp;