add reusable per-user contract signatures with profile prefill and approval

This commit is contained in:
Marshal
2026-06-16 13:26:45 +00:00
parent 64fad99bdc
commit 366a335f85
9 changed files with 285 additions and 7 deletions

View File

@@ -80,6 +80,11 @@ export interface ContractView {
signedAt: string;
signatureImageUrl?: string | null;
}>;
/** Current viewer's reusable saved signature, if they have one. */
savedSignature?: {
signerDisplayName: string;
signatureImageUrl?: string | null;
} | null;
}
export interface SignContractPayload {

View File

@@ -0,0 +1,32 @@
import { api as client } from "../auth/http";
import { unwrap } from "@/utils/endpoint";
const SIGNATURE_URL = "/me/signature";
export interface SavedSignature {
signerDisplayName: string;
signatureImageUrl?: string | null;
}
export interface SaveSignaturePayload {
signerDisplayName: string;
signatureImageBase64: string;
}
export const signaturesService = {
/** Returns the current user's reusable signature, or null if none saved. */
getMySignature: async (): Promise<SavedSignature | null> => {
const response = await client.get<SavedSignature | null>(SIGNATURE_URL);
return (unwrap(response.data) as SavedSignature | null) ?? null;
},
saveMySignature: async (
payload: SaveSignaturePayload,
): Promise<SavedSignature | null> => {
const response = await client.put<SavedSignature | null>(
SIGNATURE_URL,
payload,
);
return (unwrap(response.data) as SavedSignature | null) ?? null;
},
};