mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-23 13:11:12 -05:00
feat: Execute complete production readiness plan
This commit is contained in:
@@ -9,6 +9,8 @@
|
||||
import { SupabaseClient } from '@supabase/supabase-js';
|
||||
import { createTableQuery } from '@/lib/supabaseHelpers';
|
||||
import type { ModerationItem } from '@/types/moderation';
|
||||
import { logger } from '@/lib/logger';
|
||||
import { getErrorMessage } from '@/lib/errorHandler';
|
||||
|
||||
/**
|
||||
* Type-safe update data for review moderation
|
||||
@@ -150,12 +152,17 @@ export async function approvePhotoSubmission(
|
||||
message: `Successfully approved and published ${photoSubmission.items.length} photo(s)`,
|
||||
shouldRemoveFromQueue: true,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Photo approval error:', error);
|
||||
} catch (error: unknown) {
|
||||
const errorMessage = getErrorMessage(error);
|
||||
logger.error('Photo approval failed', {
|
||||
action: 'approve_photo',
|
||||
submissionId: config.submissionId,
|
||||
error: errorMessage
|
||||
});
|
||||
return {
|
||||
success: false,
|
||||
message: 'Failed to approve photo submission',
|
||||
error: error as Error,
|
||||
error: new Error(errorMessage),
|
||||
shouldRemoveFromQueue: false,
|
||||
};
|
||||
}
|
||||
@@ -196,12 +203,18 @@ export async function approveSubmissionItems(
|
||||
message: `Successfully processed ${itemIds.length} item(s)`,
|
||||
shouldRemoveFromQueue: true,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Submission items approval error:', error);
|
||||
} catch (error: unknown) {
|
||||
const errorMessage = getErrorMessage(error);
|
||||
logger.error('Submission items approval failed', {
|
||||
action: 'approve_submission_items',
|
||||
submissionId,
|
||||
itemCount: itemIds.length,
|
||||
error: errorMessage
|
||||
});
|
||||
return {
|
||||
success: false,
|
||||
message: 'Failed to approve submission items',
|
||||
error: error as Error,
|
||||
error: new Error(errorMessage),
|
||||
shouldRemoveFromQueue: false,
|
||||
};
|
||||
}
|
||||
@@ -234,8 +247,12 @@ export async function rejectSubmissionItems(
|
||||
.eq('status', 'pending');
|
||||
|
||||
if (rejectError) {
|
||||
console.error('Failed to cascade rejection:', rejectError);
|
||||
// Don't fail the whole operation, just log it
|
||||
const errorMessage = getErrorMessage(rejectError);
|
||||
logger.error('Item rejection cascade failed', {
|
||||
action: 'reject_submission_items',
|
||||
submissionId,
|
||||
error: errorMessage
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
@@ -243,12 +260,17 @@ export async function rejectSubmissionItems(
|
||||
message: 'Submission items rejected',
|
||||
shouldRemoveFromQueue: false, // Parent rejection will handle removal
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Submission items rejection error:', error);
|
||||
} catch (error: unknown) {
|
||||
const errorMessage = getErrorMessage(error);
|
||||
logger.error('Submission items rejection failed', {
|
||||
action: 'reject_submission_items',
|
||||
submissionId,
|
||||
error: errorMessage
|
||||
});
|
||||
return {
|
||||
success: false,
|
||||
message: 'Failed to reject submission items',
|
||||
error: error as Error,
|
||||
error: new Error(errorMessage),
|
||||
shouldRemoveFromQueue: false,
|
||||
};
|
||||
}
|
||||
@@ -366,12 +388,18 @@ export async function performModerationAction(
|
||||
message: `Content ${action}`,
|
||||
shouldRemoveFromQueue: action === 'approved' || action === 'rejected',
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Moderation action error:', error);
|
||||
} catch (error: unknown) {
|
||||
const errorMessage = getErrorMessage(error);
|
||||
logger.error('Moderation action failed', {
|
||||
action: config.action,
|
||||
itemType: item.type,
|
||||
itemId: item.id,
|
||||
error: errorMessage
|
||||
});
|
||||
return {
|
||||
success: false,
|
||||
message: `Failed to ${action} content`,
|
||||
error: error as Error,
|
||||
message: `Failed to ${config.action} content`,
|
||||
error: new Error(errorMessage),
|
||||
shouldRemoveFromQueue: false,
|
||||
};
|
||||
}
|
||||
@@ -456,8 +484,13 @@ export async function deleteSubmission(
|
||||
method: 'DELETE',
|
||||
body: { imageId },
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(`Failed to delete photo ${imageId}:`, error);
|
||||
} catch (photoDeleteError: unknown) {
|
||||
const errorMessage = getErrorMessage(photoDeleteError);
|
||||
logger.error('Photo deletion failed', {
|
||||
action: 'delete_submission_photo',
|
||||
imageId,
|
||||
error: errorMessage
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user