import { randomUUID } from "node:crypto";
import { MOBILE, MOBILE_T3_HOME } from "../e2e.config.ts";
import { makeState, runPromise } from "./t3.ts";

export async function mobileProjectUpdate(title: string, changes: {pinned?: boolean; archived?: boolean}) {
  const {cli} = makeState(MOBILE_T3_HOME);
  const issued = await runPromise(cli(["auth", "session", "issue", "--token-only", "--ttl", "15m"]));
  const headers = {authorization: `Bearer ${issued.stdout.trim()}`, "content-type": "application/json"};
  const origin = `http://127.0.0.1:${MOBILE.serverPort}`;
  const snapshot = await (await fetch(`${origin}/api/projects`, {headers})).json();
  const project = snapshot.projects.find((p: {title:string}) => p.title === title);
  if (!project) throw new Error(`Missing synthetic project ${title}`);
  const response = await fetch(`${origin}/api/projects/mutate`, {method:"POST", headers, body:JSON.stringify({type:"project.update", commandId:randomUUID(), projectId:project.id, ...changes})});
  if (!response.ok) throw new Error(`Project update failed: ${response.status}`);
}
