feat: introduce new app routes with modular structure and enhanced features
Added modular app routes including `login`, `dashboard`, `categories`, `trends`, and `upload`. Introduced reusable components such as `ContentList`, `ContentSkeleton`, and `AppSidebar` for improved UI consistency. Enhanced authentication with `AuthProvider` and implemented lazy loading, dynamic layouts, and infinite scrolling for better performance.
This commit is contained in:
54
frontend/src/services/content.service.ts
Normal file
54
frontend/src/services/content.service.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import api from "@/lib/api";
|
||||
import type { Content, PaginatedResponse } from "@/types/content";
|
||||
|
||||
export const ContentService = {
|
||||
async getExplore(params: {
|
||||
limit?: number;
|
||||
offset?: number;
|
||||
sort?: "trend" | "recent";
|
||||
tag?: string;
|
||||
category?: string;
|
||||
query?: string;
|
||||
}): Promise<PaginatedResponse<Content>> {
|
||||
const { data } = await api.get<PaginatedResponse<Content>>("/contents/explore", {
|
||||
params,
|
||||
});
|
||||
return data;
|
||||
},
|
||||
|
||||
async getTrends(limit = 10, offset = 0): Promise<PaginatedResponse<Content>> {
|
||||
const { data } = await api.get<PaginatedResponse<Content>>("/contents/trends", {
|
||||
params: { limit, offset },
|
||||
});
|
||||
return data;
|
||||
},
|
||||
|
||||
async getRecent(limit = 10, offset = 0): Promise<PaginatedResponse<Content>> {
|
||||
const { data } = await api.get<PaginatedResponse<Content>>("/contents/recent", {
|
||||
params: { limit, offset },
|
||||
});
|
||||
return data;
|
||||
},
|
||||
|
||||
async getOne(idOrSlug: string): Promise<Content> {
|
||||
const { data } = await api.get<Content>(`/contents/${idOrSlug}`);
|
||||
return data;
|
||||
},
|
||||
|
||||
async incrementViews(id: string): Promise<void> {
|
||||
await api.post(`/contents/${id}/view`);
|
||||
},
|
||||
|
||||
async incrementUsage(id: string): Promise<void> {
|
||||
await api.post(`/contents/${id}/use`);
|
||||
},
|
||||
|
||||
async upload(formData: FormData): Promise<Content> {
|
||||
const { data } = await api.post<Content>("/contents/upload", formData, {
|
||||
headers: {
|
||||
"Content-Type": "multipart/form-data",
|
||||
},
|
||||
});
|
||||
return data;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user