import { CategoryChannel, Channel } from "discord.js";
import { isDmChannel } from "./isDmChannel.js";
import { isGuildChannel } from "./isGuildChannel.js";
import { isThreadChannel } from "./isThreadChannel.js";

type ResolvedChannelIds = {
  category: string | null;
  channel: string | null;
  thread: string | null;
};

export function resolveChannelIds(channel: Channel): ResolvedChannelIds {
  if (isDmChannel(channel)) {
    return {
      category: null,
      channel: channel.id,
      thread: null,
    };
  }

  if (isThreadChannel(channel)) {
    return {
      category: channel.parent?.parentId || null,
      channel: channel.parentId,
      thread: channel.id,
    };
  }

  if (channel instanceof CategoryChannel) {
    return {
      category: channel.id,
      channel: null,
      thread: null,
    };
  }

  if (isGuildChannel(channel)) {
    return {
      category: channel.parentId,
      channel: channel.id,
      thread: null,
    };
  }

  return {
    category: null,
    channel: channel.id,
    thread: null,
  };
}
