import { createFileRoute } from '@tanstack/react-router' import { useState } from 'react' import { Dropzone } from '../../app/features/watermark/components/Dropzone' import { Button } from '@imphnen-frontend-service/ui/atoms' import { toast } from 'sonner' import { api } from '../../app/features/auth/api/auth.service' export const Route = createFileRoute('/_authenticated/')({ component: HomePage, }) function HomePage() { const [imageFile, setImageFile] = useState(null) const [generatedImage, setGeneratedImage] = useState(null) const [isLoading, setIsLoading] = useState(false) const handleImageDropped = (file: File) => { setImageFile(file) setGeneratedImage(null) toast.success('Image selected ready for generation!') } const handleReset = () => { setImageFile(null) setGeneratedImage(null) } const handleGenerate = async () => { if (!imageFile) return setIsLoading(true) const formData = new FormData() formData.append('image', imageFile) try { const response = await api.post('/campaigns/process-image', formData, { headers: { 'Content-Type': 'multipart/form-data', }, responseType: 'blob', }) const imageUrl = URL.createObjectURL(response.data) setGeneratedImage(imageUrl) toast.success('QR Code generated successfully!') } catch (error: any) { console.error(error) const message = error.response?.data?.message || 'Failed to generate QR code.' toast.error(message) } finally { setIsLoading(false) } } const handleDownload = () => { if (!generatedImage) return const link = document.createElement('a') link.href = generatedImage link.download = `qr-campaign-${Date.now()}.png` document.body.appendChild(link) link.click() document.body.removeChild(link) } return (

QR Code Generator

Upload your image to add the campaign QR code watermark.

{!imageFile ? ( ) : (
{isLoading ? (

Processing image...

) : generatedImage ? ( Generated with QR ) : (
Original
Original Image
)}
{!generatedImage && !isLoading && ( <> )} {generatedImage && ( <> )}
)}
) }