mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-24 14:51:12 -05:00
Fix frontend JSONB references
This commit is contained in:
@@ -322,14 +322,30 @@ export async function fetchSystemActivities(
|
||||
}
|
||||
|
||||
// Fetch admin audit log (admin actions)
|
||||
// Note: Details are now in admin_audit_details table
|
||||
const { data: auditLogs, error: auditError } = await supabase
|
||||
.from('admin_audit_log')
|
||||
.select('id, admin_user_id, target_user_id, action, details, created_at')
|
||||
.select(`
|
||||
id,
|
||||
admin_user_id,
|
||||
target_user_id,
|
||||
action,
|
||||
created_at,
|
||||
admin_audit_details(detail_key, detail_value)
|
||||
`)
|
||||
.order('created_at', { ascending: false })
|
||||
.limit(limit);
|
||||
|
||||
if (!auditError && auditLogs) {
|
||||
for (const log of auditLogs) {
|
||||
// Convert relational details back to object format
|
||||
const details: Record<string, any> = {};
|
||||
if (log.admin_audit_details) {
|
||||
for (const detail of log.admin_audit_details as any[]) {
|
||||
details[detail.detail_key] = detail.detail_value;
|
||||
}
|
||||
}
|
||||
|
||||
activities.push({
|
||||
id: log.id,
|
||||
type: 'admin_action',
|
||||
@@ -339,16 +355,24 @@ export async function fetchSystemActivities(
|
||||
details: {
|
||||
action: log.action,
|
||||
target_user_id: log.target_user_id,
|
||||
details: log.details,
|
||||
details,
|
||||
} as AdminActionDetails,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Fetch submission reviews (approved/rejected submissions)
|
||||
// Note: Content is now in submission_metadata table, but entity_name is cached in view
|
||||
const { data: submissions, error: submissionsError } = await supabase
|
||||
.from('content_submissions')
|
||||
.select('id, submission_type, status, reviewer_id, reviewed_at, content')
|
||||
.select(`
|
||||
id,
|
||||
submission_type,
|
||||
status,
|
||||
reviewer_id,
|
||||
reviewed_at,
|
||||
submission_metadata(name)
|
||||
`)
|
||||
.not('reviewed_at', 'is', null)
|
||||
.in('status', ['approved', 'rejected', 'partially_approved'])
|
||||
.order('reviewed_at', { ascending: false })
|
||||
@@ -385,7 +409,12 @@ export async function fetchSystemActivities(
|
||||
);
|
||||
|
||||
for (const submission of submissions) {
|
||||
const contentData = submission.content as SubmissionContent;
|
||||
// Get name from submission_metadata
|
||||
const metadata = submission.submission_metadata as any;
|
||||
const entityName = Array.isArray(metadata) && metadata.length > 0
|
||||
? metadata[0]?.name
|
||||
: undefined;
|
||||
|
||||
const submissionItem = itemsMap.get(submission.id);
|
||||
const itemData = submissionItem?.item_data as any;
|
||||
|
||||
@@ -394,7 +423,7 @@ export async function fetchSystemActivities(
|
||||
submission_id: submission.id,
|
||||
submission_type: submission.submission_type,
|
||||
status: submission.status,
|
||||
entity_name: contentData?.name,
|
||||
entity_name: entityName,
|
||||
};
|
||||
|
||||
// Enrich with photo-specific data for photo submissions
|
||||
@@ -600,7 +629,14 @@ export async function fetchSystemActivities(
|
||||
// 3. User bans/unbans from admin audit log
|
||||
const { data: banActions, error: banError } = await supabase
|
||||
.from('admin_audit_log')
|
||||
.select('id, admin_user_id, target_user_id, action, details, created_at')
|
||||
.select(`
|
||||
id,
|
||||
admin_user_id,
|
||||
target_user_id,
|
||||
action,
|
||||
created_at,
|
||||
admin_audit_details(detail_key, detail_value)
|
||||
`)
|
||||
.in('action', ['user_banned', 'user_unbanned'])
|
||||
.order('created_at', { ascending: false })
|
||||
.limit(limit);
|
||||
@@ -608,6 +644,15 @@ export async function fetchSystemActivities(
|
||||
if (!banError && banActions) {
|
||||
for (const action of banActions) {
|
||||
const activityType = action.action === 'user_banned' ? 'user_banned' : 'user_unbanned';
|
||||
|
||||
// Convert relational details back to object format
|
||||
const details: Record<string, any> = {};
|
||||
if (action.admin_audit_details) {
|
||||
for (const detail of action.admin_audit_details as any[]) {
|
||||
details[detail.detail_key] = detail.detail_value;
|
||||
}
|
||||
}
|
||||
|
||||
activities.push({
|
||||
id: action.id,
|
||||
type: activityType,
|
||||
@@ -617,7 +662,7 @@ export async function fetchSystemActivities(
|
||||
details: {
|
||||
user_id: action.target_user_id,
|
||||
action: action.action === 'user_banned' ? 'banned' : 'unbanned',
|
||||
reason: typeof action.details === 'object' && action.details && 'reason' in action.details ? String(action.details.reason) : undefined,
|
||||
reason: details.reason,
|
||||
} as AccountLifecycleDetails,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user