mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-30 12:18:11 +00:00
add reusable per-user contract signatures with profile prefill and approval
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user