feat: add ViewCounter enhancements and file upload progress tracking
- Improved `ViewCounter` with visibility-based view increment using `IntersectionObserver` and 50% video progress tracking. - Added real-time file upload progress updates via Socket.io, including status and percentage feedback. - Integrated `ViewCounter` dynamically into `ContentCard` and removed redundant instances from static pages. - Updated backend upload logic to emit progress updates at different stages via the `EventsGateway`.
This commit is contained in:
@@ -36,6 +36,7 @@ import { ContentService } from "@/services/content.service";
|
||||
import { FavoriteService } from "@/services/favorite.service";
|
||||
import type { Content } from "@/types/content";
|
||||
import { UserContentEditDialog } from "./user-content-edit-dialog";
|
||||
import { ViewCounter } from "./view-counter";
|
||||
|
||||
interface ContentCardProps {
|
||||
content: Content;
|
||||
@@ -98,6 +99,8 @@ export function ContentCard({ content, onUpdate }: ContentCardProps) {
|
||||
await FavoriteService.add(content.id);
|
||||
setIsLiked(true);
|
||||
setLikesCount((prev) => prev + 1);
|
||||
// Considérer un like comme une vue
|
||||
ContentService.incrementViews(content.id).catch(() => {});
|
||||
}
|
||||
} catch (_error) {
|
||||
toast.error("Une erreur est survenue");
|
||||
@@ -146,6 +149,7 @@ export function ContentCard({ content, onUpdate }: ContentCardProps) {
|
||||
|
||||
return (
|
||||
<>
|
||||
<ViewCounter contentId={content.id} videoRef={videoRef} />
|
||||
<Card className="overflow-hidden border-none gap-0 shadow-none bg-transparent">
|
||||
<CardHeader className="p-3 flex flex-row items-center space-y-0 gap-3">
|
||||
<Avatar className="h-8 w-8 border">
|
||||
|
||||
Reference in New Issue
Block a user