export type SocialPlatformId =
  | "linkedin"
  | "facebook"
  | "instagram"
  | "twitter"
  | "threads"
  | "pinterest"
  | "youtube"
  | "tiktok";

export type PlatformAvailability = "active" | "coming_soon" | "disabled";

export interface PlatformConfig {
  id: SocialPlatformId;
  label: string;
  icon: string;
  iconClass: string;
  availability: PlatformAvailability;
  /** True when OAuth connect is live in this release. */
  supportsOAuth?: boolean;
  note?: string;
}

/** LinkedIn, Facebook, Instagram live; YouTube connect + validation (text posts need video API). */
export const SOCIAL_PLATFORMS: PlatformConfig[] = [
  {
    id: "linkedin",
    label: "LinkedIn",
    icon: "in",
    iconClass: "bg-[#0A66C2]",
    availability: "active",
    supportsOAuth: true,
  },
  {
    id: "facebook",
    label: "Facebook",
    icon: "f",
    iconClass: "bg-[#1877F2]",
    availability: "active",
    supportsOAuth: true,
    note: "Connects your Facebook Page for publishing",
  },
  {
    id: "instagram",
    label: "Instagram",
    icon: "📷",
    iconClass: "bg-gradient-to-br from-purple-500 via-pink-500 to-orange-400",
    availability: "active",
    supportsOAuth: true,
    note: "Uses Meta login (Facebook screen). Link IG Business to your Page first.",
  },
  {
    id: "youtube",
    label: "YouTube",
    icon: "▶",
    iconClass: "bg-[#FF0000]",
    availability: "active",
    supportsOAuth: true,
    note: "Uploads MP4 when VIDEO_PROVIDER=ffmpeg and post has generated video",
  },
  {
    id: "twitter",
    label: "X (Twitter)",
    icon: "𝕏",
    iconClass: "bg-gray-900",
    availability: "disabled",
    note: "Paid API — not available in this release",
  },
  {
    id: "threads",
    label: "Threads",
    icon: "@",
    iconClass: "bg-gray-800",
    availability: "coming_soon",
  },
  {
    id: "pinterest",
    label: "Pinterest",
    icon: "P",
    iconClass: "bg-[#E60023]",
    availability: "coming_soon",
  },
  {
    id: "tiktok",
    label: "TikTok",
    icon: "♪",
    iconClass: "bg-gray-900",
    availability: "coming_soon",
  },
];

export const PUBLISH_READY_PLATFORM_IDS = ["linkedin", "facebook", "instagram"] as const;

export function getPlatformConfig(id: string): PlatformConfig | undefined {
  return SOCIAL_PLATFORMS.find((p) => p.id === id);
}

export function isPlatformPublishReady(id: string): boolean {
  return (PUBLISH_READY_PLATFORM_IDS as readonly string[]).includes(id);
}

export function listVisiblePlatforms(): PlatformConfig[] {
  return SOCIAL_PLATFORMS.filter((p) => p.availability !== "disabled");
}

export function createDefaultAccount(platform: PlatformConfig) {
  return {
    platform: platform.id,
    label: platform.label,
    profileName: "Not connected",
    connected: false,
    connectionStatus: "disconnected" as const,
    accessToken: null,
    refreshToken: null,
    expiresAt: null,
    lastSyncedAt: null,
    externalId: null,
  };
}
