mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 12:11:17 -05:00
Refactor: Enhance submission notification payload
This commit is contained in:
@@ -11,6 +11,11 @@ interface NotificationPayload {
|
||||
submission_type: string;
|
||||
submitter_name: string;
|
||||
action: string;
|
||||
content_preview: string;
|
||||
submitted_at: string;
|
||||
has_photos: boolean;
|
||||
item_count: number;
|
||||
is_escalated: boolean;
|
||||
}
|
||||
|
||||
serve(async (req) => {
|
||||
@@ -25,9 +30,44 @@ serve(async (req) => {
|
||||
const supabase = createClient(supabaseUrl, supabaseServiceKey);
|
||||
|
||||
const payload: NotificationPayload = await req.json();
|
||||
const { submission_id, submission_type, submitter_name, action } = payload;
|
||||
const {
|
||||
submission_id,
|
||||
submission_type,
|
||||
submitter_name,
|
||||
action,
|
||||
content_preview,
|
||||
submitted_at,
|
||||
has_photos,
|
||||
item_count,
|
||||
is_escalated
|
||||
} = payload;
|
||||
|
||||
console.log('Notifying moderators about submission via topic:', { submission_id, submission_type });
|
||||
console.log('Notifying moderators about submission via topic:', {
|
||||
submission_id,
|
||||
submission_type,
|
||||
content_preview
|
||||
});
|
||||
|
||||
// Calculate relative time and priority
|
||||
const submittedDate = new Date(submitted_at);
|
||||
const now = new Date();
|
||||
const waitTimeMs = now.getTime() - submittedDate.getTime();
|
||||
const waitTimeHours = waitTimeMs / (1000 * 60 * 60);
|
||||
|
||||
// Format relative time
|
||||
const relativeTime = (() => {
|
||||
const minutes = Math.floor(waitTimeMs / (1000 * 60));
|
||||
const hours = Math.floor(waitTimeMs / (1000 * 60 * 60));
|
||||
const days = Math.floor(waitTimeMs / (1000 * 60 * 60 * 24));
|
||||
|
||||
if (minutes < 1) return 'just now';
|
||||
if (minutes < 60) return `${minutes} minute${minutes !== 1 ? 's' : ''} ago`;
|
||||
if (hours < 24) return `${hours} hour${hours !== 1 ? 's' : ''} ago`;
|
||||
return `${days} day${days !== 1 ? 's' : ''} ago`;
|
||||
})();
|
||||
|
||||
// Determine priority based on wait time
|
||||
const priority = waitTimeHours >= 24 ? 'urgent' : 'normal';
|
||||
|
||||
// Get the moderation-alert workflow
|
||||
const { data: workflow, error: workflowError } = await supabase
|
||||
@@ -51,13 +91,27 @@ serve(async (req) => {
|
||||
);
|
||||
}
|
||||
|
||||
// Prepare notification payload
|
||||
// Prepare enhanced notification payload
|
||||
const notificationPayload = {
|
||||
// Basic info
|
||||
itemType: submission_type,
|
||||
submitterName: submitter_name,
|
||||
submissionId: submission_id,
|
||||
action: action || 'create',
|
||||
moderationUrl: `https://ydvtmnrszybqnbcqbdcy.supabase.co/admin/moderation`,
|
||||
|
||||
// Enhanced content
|
||||
contentPreview: content_preview,
|
||||
|
||||
// Timing information
|
||||
submittedAt: submitted_at,
|
||||
relativeTime: relativeTime,
|
||||
priority: priority,
|
||||
|
||||
// Additional metadata
|
||||
hasPhotos: has_photos,
|
||||
itemCount: item_count,
|
||||
isEscalated: is_escalated,
|
||||
};
|
||||
|
||||
// Send ONE notification to the moderation-submissions topic
|
||||
|
||||
Reference in New Issue
Block a user