feat: Use forwardemail_proxy function

This commit is contained in:
gpt-engineer-app[bot]
2025-09-30 18:33:10 +00:00
parent 026a4e9362
commit 3d8bd5e0f7
5 changed files with 634 additions and 13 deletions

View File

@@ -150,13 +150,38 @@ export function SubmissionReviewManager({
setLoading(true);
try {
const selectedItems = items.filter(item => selectedItemIds.has(item.id));
await approveSubmissionItems(selectedItems, user.id);
// Use edge function for complex approval processing
const { supabase } = await import('@/integrations/supabase/client');
toast({
title: 'Success',
description: `Approved ${selectedItems.length} item(s)`,
const { data, error } = await supabase.functions.invoke('process-selective-approval', {
body: {
submissionId,
selectedItemIds: Array.from(selectedItemIds),
moderatorId: user.id,
}
});
if (error) throw error;
const result = data as {
success: boolean;
processedItems: any[];
successCount: number;
failureCount: number;
};
if (result.failureCount > 0) {
toast({
title: 'Partial Success',
description: `Approved ${result.successCount} of ${result.processedItems.length} item(s). ${result.failureCount} failed.`,
variant: 'default',
});
} else {
toast({
title: 'Success',
description: `Approved ${result.successCount} item(s)`,
});
}
onComplete();
onOpenChange(false);
@@ -226,7 +251,7 @@ export function SubmissionReviewManager({
}
};
const handleEscalate = async (reason: string) => {
const handleEscalate = async (reason: string, additionalNotes?: string) => {
if (!user?.id) {
toast({
title: 'Authentication Required',
@@ -238,12 +263,35 @@ export function SubmissionReviewManager({
setLoading(true);
try {
// Update submission escalation status
await escalateSubmission(submissionId, reason, user.id);
toast({
title: 'Escalated',
description: 'Submission escalated to admin for review',
// Send email notifications via edge function
const { supabase } = await import('@/integrations/supabase/client');
const { data, error: emailError } = await supabase.functions.invoke('send-escalation-notification', {
body: {
submissionId,
escalationReason: reason,
escalatedBy: user.id,
additionalNotes,
}
});
if (emailError) {
console.error('Failed to send escalation emails:', emailError);
toast({
title: 'Escalated',
description: 'Submission escalated but email notifications failed',
variant: 'default',
});
} else {
const result = data as { emailsSent: number; totalRecipients: number };
toast({
title: 'Escalated',
description: `Submission escalated to admin. ${result.emailsSent} of ${result.totalRecipients} admin(s) notified.`,
});
}
onComplete();
onOpenChange(false);