/**
 * Resolve the list of admin support notification recipients.
 *
 * Priority:
 *  1. `support_notification_emails` from system_config (stored as JSON array)
 *  2. `ADMIN_EMAIL` env var as fallback
 *  3. [] if both are absent / malformed
 */

import type { DrizzleClient } from '@/server/db/client.js';
import { getSystemConfig } from '@/server/db/queries/system-config.js';
import { captureCaught } from '@/server/observability/capture.server';

export async function resolveAdminSupportRecipients(
  db: DrizzleClient,
  env: { ADMIN_EMAIL?: string },
): Promise<string[]> {
  const raw = (await getSystemConfig(db, 'support_notification_emails')) ?? '[]';
  let parsed: unknown;
  try {
    parsed = JSON.parse(raw);
  } catch (err) {
    captureCaught(err, { scope: 'server.support.notifications-admin', severity: 'warning' });
    parsed = [];
  }
  if (Array.isArray(parsed) && parsed.length > 0 && parsed.every((e) => typeof e === 'string')) {
    return parsed as string[];
  }
  return env.ADMIN_EMAIL ? [env.ADMIN_EMAIL] : [];
}
