messages-CREATE_VAULT_FROM_ROOT_KEY.ts

1.3 KB · raw

1// DRAFT DESTINATION: src/background/messages.ts and src/shared/types.ts2// Phase 2: vault-less CREATE_VAULT_FROM_ROOT_KEY handler.34// In src/shared/types.ts, add near CREATE_VAULT:5//   | "CREATE_VAULT_FROM_ROOT_KEY"6//7// Optional documented payload type:8export interface CreateVaultFromRootKeyPayload {9  password: string;10  rootKeyHex: string;11}1213// In src/shared/types.ts ErrorCode, add:14//   | "adopt_invalid_root_key"15//   | "adopt_vault_id_mismatch"1617// In src/background/messages.ts switch, place immediately after CREATE_VAULT:18async function draftCreateVaultFromRootKeyHandler(19  msg: { payload?: unknown },20): Promise<{ ok: true; vaultId: string } | { ok: false; error: string }> {21  const { password, rootKeyHex } = (msg.payload ?? {}) as Partial<CreateVaultFromRootKeyPayload>;22  if (typeof password !== "string" || password.length === 0 || typeof rootKeyHex !== "string") {23    return { ok: false, error: "invalid_payload" };24  }2526  try {27    const { vaultId } = await vault.createVaultFromRootKey(password, rootKeyHex);28    await setupAutoLock();29    broadcastToContentScripts({ type: "VAULT_UNLOCKED" });30    onVaultUnlocked();31    return { ok: true, vaultId };32  } catch (err) {33    const message = err instanceof Error ? err.message : String(err);34    return { ok: false, error: message };35  }36}3738void draftCreateVaultFromRootKeyHandler;39