diff --git a/client/src/pages/mobile/new-post.tsx b/client/src/pages/mobile/new-post.tsx index 5ab88ae..ec2ff76 100644 --- a/client/src/pages/mobile/new-post.tsx +++ b/client/src/pages/mobile/new-post.tsx @@ -110,6 +110,7 @@ export default function NewPostMobile() { const [productInfo, setProductInfo] = useState(''); const [selectedMedia, setSelectedMedia] = useState([]); + const [recentUploads, setRecentUploads] = useState([]); const [selectedPages, setSelectedPages] = useState([]); const [scheduledDate, setScheduledDate] = useState(undefined); const [generatedVariants, setGeneratedVariants] = useState([]); @@ -126,14 +127,16 @@ export default function NewPostMobile() { }); const mediaList = useMemo(() => { - return [...allMedia] - .sort((a, b) => { - const dateA = a.createdAt ? new Date(a.createdAt).getTime() : 0; - const dateB = b.createdAt ? new Date(b.createdAt).getTime() : 0; - return dateB - dateA; - }) - .slice(0, 12); - }, [allMedia]); + const combined = [ + ...recentUploads, + ...allMedia.filter(m => !recentUploads.some(r => r.id === m.id)), + ]; + return combined.sort((a, b) => { + const dateA = a.createdAt ? new Date(a.createdAt).getTime() : 0; + const dateB = b.createdAt ? new Date(b.createdAt).getTime() : 0; + return dateB - dateA; + }); + }, [allMedia, recentUploads]); const { data: scheduledPosts = [] } = useQuery({ queryKey: ['/api/scheduled-posts'], @@ -150,7 +153,8 @@ export default function NewPostMobile() { if (!response.ok) throw new Error("Upload failed"); return response.json(); }, - onSuccess: (data) => { + onSuccess: (data: Media) => { + setRecentUploads(prev => [data, ...prev.filter(m => m.id !== data.id)]); queryClient.invalidateQueries({ queryKey: ["/api/media"] }); setSelectedMedia(prev => { if (prev.length >= 10) {