/**
 * Prefix FRONTEND_URL to social share links stored as relative paths.
 * - Deep-clones the input and only modifies values under `social.shareLinks` that
 *   are strings starting with '/'.
 * - Leaves absolute URLs (http/https) unchanged.
 * - Normalizes to avoid double slashes between FRONTEND_URL and the path.
 *
 * @param {Object} data - object that may contain `social.shareLinks` (e.g., blog object)
 * @returns {Object} - deep-cloned object with prefixed share links
 */
function addFrontendUrlToShareLinks(data) {
  const FRONTEND_URL = (process.env.FRONTEND_URL || '').replace(/\/$/, '');

  if (!data || typeof data !== 'object') return data;

  // Deep clone to avoid mutating original
  const cloned = JSON.parse(JSON.stringify(data));

  try {
    if (cloned.social && typeof cloned.social === 'object') {
      const share = cloned.social.shareLinks;
      if (share && typeof share === 'object') {
        Object.keys(share).forEach(key => {
          const val = share[key];
          if (typeof val === 'string' && val.length > 0) {
            // If already absolute URL, leave it
            if (/^https?:\/\//i.test(val)) return;

            // Only prefix relative paths that start with '/'
            if (val.startsWith('/')) {
              // Avoid double slashes
              share[key] = FRONTEND_URL ? `${FRONTEND_URL}${val}` : val;
            }
          }
        });
      }
    }
  } catch (err) {
    // In case of unexpected structure, return cloned original
    console.error('addFrontendUrlToShareLinks error:', err);
    return cloned;
  }

  return cloned;
}

module.exports = {
  addFrontendUrlToShareLinks,
};
