"use client"; import { IconCalendar, IconMailFilled } from "@tabler/icons-react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { Check, ExternalLink, Gift, Mail, Star, Zap } from "lucide-react"; import Link from "next/link"; import { useEffect } from "react"; import { toast } from "sonner"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Separator } from "@/components/ui/separator"; import { Skeleton } from "@/components/ui/skeleton"; import { Spinner } from "@/components/ui/spinner"; import type { IncentiveTaskInfo } from "@/contracts/types/incentive-tasks.types"; import { incentiveTasksApiService } from "@/lib/apis/incentive-tasks-api.service"; import { trackIncentiveContactOpened, trackIncentivePageViewed, trackIncentiveTaskClicked, trackIncentiveTaskCompleted, } from "@/lib/posthog/events"; import { cn } from "@/lib/utils"; export function MorePagesContent() { const queryClient = useQueryClient(); useEffect(() => { trackIncentivePageViewed(); }, []); const { data, isLoading } = useQuery({ queryKey: ["incentive-tasks"], queryFn: () => incentiveTasksApiService.getTasks(), }); const completeMutation = useMutation({ mutationFn: incentiveTasksApiService.completeTask, onSuccess: (response, taskType) => { if (response.success) { toast.success(response.message); const task = data?.tasks.find((t) => t.task_type === taskType); if (task) { trackIncentiveTaskCompleted(taskType, task.pages_reward); } queryClient.invalidateQueries({ queryKey: ["incentive-tasks"] }); queryClient.invalidateQueries({ queryKey: ["user"] }); } }, onError: () => { toast.error("Failed to complete task. Please try again."); }, }); const handleTaskClick = (task: IncentiveTaskInfo) => { if (!task.completed) { trackIncentiveTaskClicked(task.task_type); completeMutation.mutate(task.task_type); } }; return (
Complete tasks to earn additional pages
{task.title}
+{task.pages_reward} pages