Skip to content

Commit 4ce9e0c

Browse files
committed
refactor(app): requests about followers
1 parent 9c79c67 commit 4ce9e0c

File tree

2 files changed

+41
-6
lines changed

2 files changed

+41
-6
lines changed

src/app/u/[handle]/[follow]/page.js

+11-6
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,16 @@ import { Button } from '@/components/Button';
2626
import { SvgIcon } from '@/components/Image';
2727
import Loader from '@/components/Loader';
2828
import { NoData } from '@/components/NoData';
29-
import { post, get } from '@/utils/request';
3029

30+
import { fetchFollowerList, fetchFollowedList, followUser, unfollowUser } from '#/domain/profile/repository';
3131
import TabBarWidget from '#/domain/profile/widgets/tab-bar';
3232
import { useUser } from '#/state/application/hooks';
3333

34+
const followFetchMap = {
35+
followers: fetchFollowerList,
36+
following: fetchFollowedList,
37+
};
38+
3439
export default function Follow({ params }) {
3540
const { status } = useSession();
3641
const router = useRouter();
@@ -47,7 +52,7 @@ export default function Follow({ params }) {
4752
const fetchList = useCallback(async () => {
4853
// handle
4954
setLoading(true);
50-
const data = await get(`ts/v1/user/${params.handle}/${params.follow}?&skip=${(page - 1) * 20}&take=${20}`);
55+
const data = await followFetchMap[params.follow]({ handle: params.handle, pageNum: page });
5156
setLoading(false);
5257
if (page === 1) {
5358
setList(data.data.list);
@@ -66,9 +71,9 @@ export default function Follow({ params }) {
6671
router.push(`/signin?from=${pathname}`);
6772
} else {
6873
setFollowLoading(index);
69-
const res = await post(`ts/v1/user/follow/${item.user.user_id}`);
74+
const res = await followUser(item.user.user_id);
7075
setFollowLoading(null);
71-
if (res.code === 200) {
76+
if (res.success) {
7277
const _prevList = [...list];
7378
_prevList[index].mutual = type;
7479
setList(_prevList);
@@ -83,9 +88,9 @@ export default function Follow({ params }) {
8388
router.push(`/signin?from=${pathname}`);
8489
} else {
8590
setFollowLoading(index);
86-
const res = await post(`ts/v1/user/follow/${item.user.user_id}/del`);
91+
const res = await unfollowUser(item.user.user_id);
8792
setFollowLoading(null);
88-
if (res.code === 200) {
93+
if (res.success) {
8994
const _prevList = [...list];
9095
_prevList[index].mutual = type;
9196
setList(_prevList);

src/domain/profile/repository.js

+30
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,35 @@ async function fetchUserActivityList(uid) {
4141
return httpClient.get(`/user/info/${uid}/creator/activity`);
4242
}
4343

44+
function resolvePaginationParams(pageNum) {
45+
const pageSize = 20;
46+
47+
return {
48+
skip: (pageNum - 1) * pageSize,
49+
take: pageSize,
50+
};
51+
}
52+
53+
async function fetchFollowerList(params = {}) {
54+
const { handle, pageNum } = params;
55+
56+
return httpClient.get(`/user/${handle}/followers`, { params: resolvePaginationParams(pageNum) });
57+
}
58+
59+
async function fetchFollowedList(params = {}) {
60+
const { handle, pageNum } = params;
61+
62+
return httpClient.get(`/user/${handle}/following`, { params: resolvePaginationParams(pageNum) });
63+
}
64+
65+
async function followUser(uid) {
66+
return httpClient.post(`/user/follow/${uid}`);
67+
}
68+
69+
async function unfollowUser(uid) {
70+
return httpClient.post(`/user/follow/${uid}/del`);
71+
}
72+
4473
async function fetchBlockContent(uid) {
4574
return httpClient.get('/user/devplaza', { params: { uid } }).then(res => res.success ? ({
4675
...res,
@@ -54,5 +83,6 @@ async function updateBlockContent(data) {
5483

5584
export {
5685
fetchUser, fetchUserActivityList,
86+
fetchFollowerList, fetchFollowedList, followUser, unfollowUser,
5787
fetchBlockContent, updateBlockContent,
5888
};

0 commit comments

Comments
 (0)