export interface MessageLinkTarget {
  workspaceId: string | number;
  channelId: string | number;
  messageId: string | number;
  threadRootId?: string | number | null;
}

/** Build a stable link that can reveal a message even when it is outside the
 * channel's initial scrollback page. Thread replies carry their root id so the
 * receiver can open the thread before highlighting the reply. */
export function buildMessagePermalink(origin: string, target: MessageLinkTarget): string {
  const url = new URL("/channel", origin);
  url.searchParams.set("workspaceId", String(target.workspaceId));
  url.searchParams.set("channelId", String(target.channelId));
  url.searchParams.set("messageId", String(target.messageId));
  if (target.threadRootId != null) url.searchParams.set("threadId", String(target.threadRootId));
  return url.toString();
}
