From 5a9b6c4c7f6dfaa019becce5be480c9a8fc8b0e2 Mon Sep 17 00:00:00 2001 From: houseassassin Date: Sun, 10 May 2026 17:23:10 +0300 Subject: [PATCH] feat: photo attachments for orders via Supabase Storage Co-Authored-By: Claude Sonnet 4.6 --- src/admin/orders/OrderModal.jsx | 58 ++++++++++++++++++- src/admin/orders/useOrderPhotos.js | 47 +++++++++++++++ .../migrations/003_order_photos_bucket.sql | 22 +++++++ 3 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 src/admin/orders/useOrderPhotos.js create mode 100644 supabase/migrations/003_order_photos_bucket.sql diff --git a/src/admin/orders/OrderModal.jsx b/src/admin/orders/OrderModal.jsx index 089e59a..d42e581 100644 --- a/src/admin/orders/OrderModal.jsx +++ b/src/admin/orders/OrderModal.jsx @@ -1,5 +1,6 @@ import React, { useState, useEffect } from 'react'; -import { X, Save, FileText } from 'lucide-react'; +import { X, Save, FileText, Camera, X as XIcon } from 'lucide-react'; +import { useOrderPhotos } from './useOrderPhotos'; import { pdf } from '@react-pdf/renderer'; import { supabase } from '../../lib/supabase'; import { useAuth } from '../auth/useAuth'; @@ -51,6 +52,7 @@ const OrderModal = ({ order, onClose, onSaved, mode = 'edit' }) => { address: order?.address || '', }); const [events, setEvents] = useState([]); + const { photos, uploading, uploadPhotos, deletePhoto } = useOrderPhotos(mode === 'edit' ? order?.id : null); const [saving, setSaving] = useState(false); const [downloading, setDownloading] = useState(false); const [error, setError] = useState(''); @@ -277,6 +279,60 @@ const OrderModal = ({ order, onClose, onSaved, mode = 'edit' }) => {