mirror of
https://github.com/ngthanhvu/kr-phim.git
synced 2026-08-10 16:47:46 +00:00
84 lines
1.7 KiB
TypeScript
84 lines
1.7 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) {
|
||
|
|
try {
|
||
|
|
const data = await $fetch('/api/comments', {
|
||
|
|
query: { source, slug, userId },
|
||
|
|
})
|
||
|
|
return data.items as Comment[]
|
||
|
|
} catch {
|
||
|
|
return [] as Comment[]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
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 }
|
||
|
|
}
|