Interceptor Beispiel: Signaturen speichern

Ich habe auf Basis einer Anfrage eines Kunden eine Variante erstellt, welche die Unterschriften per Custom Settings (AppConnector) benutzerspezifisch speichert und lädt. Diese Unterschriften sind dann Client unabhängig verfügbar.

signatureInterceptorAppConnector.js


/*
Signature Interceptor welcher die Signaturen in den Custom Settings des Benutzers speichert und lädt.
Details hierzu finden Sie in der AppConnector API unter https://help.optimal-systems.com/enaio_develop/pages/viewpage.action?pageId=1867869#SessionService(/session)-/osrest/api/session/settings/custom/load
*/

var signatureInterceptorAppConnector = {
  // Beim starten der Editor Instanz
  initEditorConfiguration(instance) {
    const { documentViewer } = instance.Core;

    // Signatur Tool holen
    const signatureTool = documentViewer.getTool('AnnotationCreateSignature');

    // Methode zum speichern der Signaturen definieren
    const saveSignature = async () => {
      const signatures = await signatureTool.exportSignatures();

      const data = {
        type: 80,
        name: 'ed-signatures',
        value: JSON.stringify(signatures),
      };

      const response = await fetch(`/osrest/api/session/settings/custom/save`, {
        method: 'POST',
        body: JSON.stringify(data),
        headers: {
          'Content-Type': 'application/json',
        },
      });
      // Prüfen ob die Signature gespeichert werden konnte
      if (response.status == 204) {
        console.log('Signature saved');
      } else {
        console.error(response);
      }
    };
    // Methode zum laden der Signaturen definieren
    const loadSignature = async () => {
      const currentSignatures = await signatureTool.exportSignatures();
      if(!currentSignatures?.length > 0){
        const response = await fetch(`/osrest/api/session/settings/custom/load?type=80&name=ed-signatures`);
        // Prüfen ob das laden erfolgreich war
        if (response.status == 200) {
          const signatures = await response.json();
          if (signatures.value) {
            // Import der Signaturen in embedded documents
            const signatureValue = JSON.parse(signatures.value);
            await signatureTool.importSignatures(signatureValue);
            console.log(signatureValue);
            console.log('Signature loaded');
         }
        } else {
            console.error(response);
        }
      } else {
        console.log('Signatures already loaded');
      }
    };

    // Immer speichern wenn eine Signatur erstellt oder gelöscht wird
    signatureTool.addEventListener('signatureSaved', saveSignature);
    signatureTool.addEventListener('signatureDeleted', saveSignature);
    // Nachdem das Dokument geladen wurde, prüfen ob die Signaturen schon importiert wurden. Darf nicht zuvor passieren, da diese ansonsten nicht auftauchen.
    documentViewer.addEventListener("documentLoaded",  loadSignature);
  },
};
3 „Gefällt mir“