// Lecture des réglages `arboretum.*` : module pur (aucun import vscode) pour rester testable.
// L'extension fournit un `ConfigSnapshot` lu depuis workspace.getConfiguration ; ce module
// normalise/dérive les valeurs (notamment l'URL WebSocket à partir de l'URL HTTP).
import { encodeWtKey } from '@arboretum/shared';

export interface ConfigSnapshot {
  url: string;
  showExternalSessions: boolean;
  showArchivedSessions: boolean;
  notifyOnWaiting: boolean;
}

/** Base REST normalisée (sans slash final) ; `http://127.0.0.1:7317` par défaut. */
export function normalizeBaseUrl(url: string): string {
  const trimmed = (url || '').trim().replace(/\/+$/, '');
  return trimmed || 'http://127.0.0.1:7317';
}

/** Dérive l'URL du endpoint WebSocket `/ws` (http→ws, https→wss). */
export function wsUrlFromBase(baseUrl: string): string {
  const base = normalizeBaseUrl(baseUrl);
  return `${base.replace(/^http/, 'ws')}/ws`;
}

/**
 * Construit l'URL de la vue IDE web d'un worktree : deep-link vers la route `/workspace/:repoId/:wt`
 * (le routeur web est en history mode). Le chemin du worktree est encodé en base64url via la source
 * partagée `encodeWtKey` (exactement comme le front), pour un décodage cohérent des deux côtés.
 */
export function workspaceUrl(baseUrl: string, repoId: string, worktreePath: string): string {
  const base = normalizeBaseUrl(baseUrl);
  return `${base}/workspace/${encodeURIComponent(repoId)}/${encodeWtKey(worktreePath)}`;
}
