import { WebApiClient } from '../web-api/web-api-client'; import { Signable } from '../web-api/api-query'; import { RequestSigner } from './request-signer'; import { FilledSigningObject } from './filled-signing-object'; /** * @export * @class SigningObject */ export class SigningObject { public state: string; public signId: string; public order: Signable; protected requestSigner: RequestSigner; /** * Creates an instance of SigningObject. * @param {any} order * @param {WebApiClient} client * @param {string} url * * @memberOf SigningObject */ constructor(order: any, client: WebApiClient, url: string) { this.state = order.signInfo.state; this.signId = order.signInfo.signId; this.order = order; // construct new RequestSigner for every order this.requestSigner = new RequestSigner(client, url); } /** * Obtains current signing info with full details from the API. This method always fetches fresh `FilledSigningObject` from the API. * @returns {Promise} * * @memberOf SigningObject */ refreshSigningInfo = (): Promise => this.requestSigner.getSigningInfo(this.signId, this.order); /** * Obtains current signing info with full details from the API OR it returns itself if this signing object is already a `FilledSigningObject` * @returns {Promise} * * * @memberOf SigningObject */ getInfo = (): Promise => this.requestSigner.getSigningInfo(this.signId, this.order); /** * Returns true or false based on state property * @returns {boolean} * * @memberOf SigningObject */ isDone = (): boolean => this.state === 'DONE'; /** * Returns true or false based on state property * @returns {boolean} * * @memberOf SigningObject */ isOpen = (): boolean => this.state === 'OPEN'; /** * Returns true or false based on state property * @returns {boolean} * * @memberOf SigningObject */ isCanceled = (): boolean => this.state === 'CANCELED'; }