block-reason.ts824 BView on GitHub
import type { RoadmapBlockReason } from '../types';

const PREFIX = 'roadmap-domain-blocked:';

/**
 * Parse the `roadmap-domain-blocked:<reason>` token a member-write FORBIDDEN
 * error carries. Returns null when the error is something else (so the caller
 * can fall back to a generic error toast).
 */
export function parseBlockReason(err: unknown): RoadmapBlockReason | null {
  const message =
    typeof err === 'string'
      ? err
      : err && typeof err === 'object' && 'message' in err
        ? String((err as { message: unknown }).message)
        : '';
  const idx = message.indexOf(PREFIX);
  if (idx === -1) return null;
  const reason = message.slice(idx + PREFIX.length).trim();
  if (reason === 'generic' || reason === 'disposable' || reason === 'invalid') {
    return reason;
  }
  return 'generic';
}