mirror of
https://github.com/ngthanhvu/kr-phim.git
synced 2026-08-10 16:07:47 +00:00
84 lines
1.8 KiB
TypeScript
84 lines
1.8 KiB
TypeScript
export type CommentReply = {
|
|
id: number
|
|
userId: number
|
|
userName: string
|
|
userAvatar?: string
|
|
parentId: number
|
|
content: string
|
|
likeCount: number
|
|
dislikeCount: number
|
|
createdAt: string
|
|
userVote: number
|
|
pinned: boolean
|
|
spoiler: boolean
|
|
anonymous: boolean
|
|
}
|
|
|
|
export type Comment = {
|
|
id: number
|
|
userId: number
|
|
userName: string
|
|
userAvatar?: string
|
|
source: string
|
|
slug: string
|
|
movieName?: string
|
|
content: string
|
|
likeCount: number
|
|
dislikeCount: number
|
|
createdAt: string
|
|
userVote: number
|
|
replies: CommentReply[]
|
|
pinned: boolean
|
|
spoiler: boolean
|
|
anonymous: boolean
|
|
}
|
|
|
|
export function useComments() {
|
|
async function fetchComments(source: string, slug: string, userId?: number, limit?: number, offset?: number) {
|
|
try {
|
|
const data = await $fetch('/api/comments', {
|
|
query: { source, slug, userId, limit, offset },
|
|
})
|
|
return data as { items: Comment[], total: number }
|
|
} catch {
|
|
return { items: [] as Comment[], total: 0 }
|
|
}
|
|
}
|
|
|
|
async function postComment(
|
|
source: string,
|
|
slug: string,
|
|
content: string,
|
|
movieName?: string,
|
|
parentId?: number,
|
|
spoiler?: boolean,
|
|
anonymous?: boolean,
|
|
) {
|
|
return $fetch('/api/comments', {
|
|
method: 'POST',
|
|
body: { source, slug, content, movieName, parentId, spoiler, anonymous },
|
|
})
|
|
}
|
|
|
|
async function deleteComment(id: number) {
|
|
return $fetch(`/api/comments/${id}`, {
|
|
method: 'DELETE',
|
|
})
|
|
}
|
|
|
|
async function voteComment(commentId: number, vote: number) {
|
|
return $fetch('/api/comments/vote', {
|
|
method: 'POST',
|
|
body: { commentId, vote },
|
|
})
|
|
}
|
|
|
|
async function togglePinComment(id: number) {
|
|
return $fetch(`/api/comments/${id}/pin`, {
|
|
method: 'POST',
|
|
})
|
|
}
|
|
|
|
return { fetchComments, postComment, deleteComment, voteComment, togglePinComment }
|
|
}
|