feed.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. 'use server';
  2. import { fetchJson } from '@/lib/utils/server';
  3. import { ResultDto } from '@/types/response/common';
  4. import {
  5. FeedTimelineResponse,
  6. FeedTagPageResponse
  7. } from '@/types/feed/card';
  8. export async function fetchTimeline(page = 1, perPage = 20): Promise<ResultDto<FeedTimelineResponse>> {
  9. return await fetchJson<FeedTimelineResponse>(`/api/feed/timeline?page=${page}&perPage=${perPage}`, {
  10. method: 'GET',
  11. headers: { 'Accept': 'application/json' }
  12. });
  13. }
  14. export async function fetchForYou(page = 1, perPage = 20): Promise<ResultDto<FeedTimelineResponse>> {
  15. return await fetchJson<FeedTimelineResponse>(`/api/feed/foryou?page=${page}&perPage=${perPage}`, {
  16. method: 'GET',
  17. headers: { 'Accept': 'application/json' }
  18. });
  19. }
  20. export async function fetchAll(page = 1, perPage = 20): Promise<ResultDto<FeedTimelineResponse>> {
  21. return await fetchJson<FeedTimelineResponse>(`/api/feed/all?page=${page}&perPage=${perPage}`, {
  22. method: 'GET',
  23. headers: { 'Accept': 'application/json' }
  24. });
  25. }
  26. export async function fetchByTag(slug: string, page = 1, perPage = 20): Promise<ResultDto<FeedTagPageResponse>> {
  27. return await fetchJson<FeedTagPageResponse>(`/api/feed/tag/${encodeURIComponent(slug)}?page=${page}&perPage=${perPage}`, {
  28. method: 'GET',
  29. headers: { 'Accept': 'application/json' }
  30. });
  31. }