gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] 02/02: fix #7090 dowload personal info as PDF


From: gnunet
Subject: [taler-wallet-core] 02/02: fix #7090 dowload personal info as PDF
Date: Fri, 24 Jun 2022 18:27:50 +0200

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

commit cc01417a9983111fed775d80edef53e07f25aa9d
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Fri Jun 24 13:27:39 2022 -0300

    fix #7090 dowload personal info as PDF
---
 packages/anastasis-webui/clean_and_build.sh        |  3 +--
 packages/anastasis-webui/html/ui-dev.html          | 26 ++++++++++----------
 packages/anastasis-webui/package.json              |  4 ++--
 .../src/pages/home/AttributeEntryScreen.tsx        | 28 ++++++++++++++++++++--
 4 files changed, 42 insertions(+), 19 deletions(-)

diff --git a/packages/anastasis-webui/clean_and_build.sh 
b/packages/anastasis-webui/clean_and_build.sh
index c0e93e47..5f308e67 100755
--- a/packages/anastasis-webui/clean_and_build.sh
+++ b/packages/anastasis-webui/clean_and_build.sh
@@ -54,12 +54,11 @@ if [ "WATCH" == "$1" ]; then
   echo watch mode
   echo Writting any file in the src directory will trigger a browser reload.
   echo Be sure that the watcher server is running.
+  echo ./watch/serve.sh
   inotifywait -e close_write -r src -q -m | while read line; do
     echo $(date) $line
     build_js src/main.ts
     bundle ui-dev
-    #CONTENT=$(echo 'alert("hola")' | base64)
     ./watch/send.sh '{"type":"RELOAD"}'
-    #./watch/send.sh '{"type":"UPDATE","content":"'$CONTENT'"}'
   done;
 fi
diff --git a/packages/anastasis-webui/html/ui-dev.html 
b/packages/anastasis-webui/html/ui-dev.html
index 5b1dd31c..2790d567 100644
--- a/packages/anastasis-webui/html/ui-dev.html
+++ b/packages/anastasis-webui/html/ui-dev.html
@@ -14,7 +14,7 @@
       
href="data:;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////////////////7//v38//78/P/+/fz//vz7///+/v/+/f3//vz7///+/v/+/fz//v38///////////////////////+/v3///7+/////////////////////////////////////////////////////////v3//v79///////+/v3///////r28v/ct5//06SG/9Gffv/Xqo7/7N/V/9e2nf/bsJb/6uDW/9Sskf/euKH/+/j2///////+/v3//////+3azv+/eE3/2rWd/9Kkhv/Vr5T/48i2/8J+VP/
 [...]
     />
     <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon" />
-    <style type="text/css">
+    <style id="style-id" type="text/css">
       /* <![CDATA[ */
       ANASTASIS_STYLE_CONTENT
       /* <![CDATA[ */
@@ -29,7 +29,7 @@
     <script type="application/javascript">
       function setupLiveReload() {
         const socketPath = `ws://localhost:8003/socket`;
-        console.log("connecting to ", socketPath)
+        console.log("connecting to ", socketPath);
         const ws = new WebSocket(socketPath);
         ws.onmessage = (message) => {
           const event = JSON.parse(message.data);
@@ -40,23 +40,23 @@
             window.location.reload();
           }
           if (event.type === "UPDATE") {
-            document.body.removeChild(document.getElementById("container"))
-            const d = document.createElement('div')
-            d.setAttribute('id',"container")
-            d.setAttribute('class',"anastasis-container");
-            document.body.appendChild(d)
-            const s = document.createElement('script')
-            s.setAttribute('id',"code")
-            s.setAttribute('type',"application/javascript");
-            s.textContent = atob(event.content)
-            document.body.appendChild(s)
+            document.body.removeChild(document.getElementById("container"));
+            const d = document.createElement("div");
+            d.setAttribute("id", "container");
+            d.setAttribute("class", "anastasis-container");
+            document.body.appendChild(d);
+            const s = document.createElement("script");
+            s.setAttribute("id", "code");
+            s.setAttribute("type", "application/javascript");
+            s.textContent = atob(event.content);
+            document.body.appendChild(s);
           }
         };
         ws.onerror = (error) => {
           console.error(error);
         };
         ws.onclose = (e) => {
-          setTimeout(setupLiveReload, 500)
+          setTimeout(setupLiveReload, 500);
         };
       }
       setupLiveReload();
diff --git a/packages/anastasis-webui/package.json 
b/packages/anastasis-webui/package.json
index 551ae54b..949440bc 100644
--- a/packages/anastasis-webui/package.json
+++ b/packages/anastasis-webui/package.json
@@ -6,7 +6,7 @@
   "scripts": {
     "build": "./clean_and_build.sh",
     "compile": "tsc",
-    "dev": "./dev.mjs",
+    "dev": "./clean_and_build.sh WATCH",
     "prepare": "pnpm compile",
     "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'",
     "test": "mocha --enable-source-maps 'dist/**/*test.js'",
@@ -49,4 +49,4 @@
     "typescript": "^4.5.4",
     "ws": "7.4.5"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx 
b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx
index ed46aa09..228186a2 100644
--- a/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx
+++ b/packages/anastasis-webui/src/pages/home/AttributeEntryScreen.tsx
@@ -94,6 +94,25 @@ export function AttributeEntryScreen(): VNode {
     });
   };
 
+  function saveAsPDF(): void {
+    const printWindow = window.open("", "", "height=400,width=800");
+    const divContents = document.getElementById("printThis");
+    const styleContents = document.getElementById("style-id");
+
+    if (!printWindow || !divContents || !styleContents) return;
+    printWindow.document.write(
+      "<html><head><title>Anastasis Recovery Document</title><style>",
+    );
+    printWindow.document.write(styleContents.innerHTML);
+    printWindow.document.write("</style></head><body>&nbsp;</body></html>");
+    printWindow.document.close();
+    printWindow.document.body.appendChild(divContents.cloneNode(true));
+    printWindow.addEventListener("load", () => {
+      printWindow.print();
+      printWindow.close();
+    });
+  }
+
   return (
     <AnastasisClientFrame
       title={withProcessLabel(reducer, "Who are you?")}
@@ -112,11 +131,16 @@ export function AttributeEntryScreen(): VNode {
           You personal information is used to define the location where your
           secret will be safely stored. If you forget what you have entered or
           if there is a misspell you will be unable to recover your secret.
+          <p>
+            <a onClick={saveAsPDF}>Save the personal information as PDF</a>
+          </p>
         </ConfirmModal>
-      ) : null}
+      ) : undefined}
 
       <div class="columns" style={{ maxWidth: "unset" }}>
-        <div class="column">{fieldList}</div>
+        <div class="column" id="printThis">
+          {fieldList}
+        </div>
         <div class="column">
           <p>This personal information will help to locate your secret.</p>
           <h1 class="title">This stays private</h1>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]