gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: take backup info from wallet-


From: gnunet
Subject: [taler-wallet-core] branch master updated: take backup info from wallet-core
Date: Thu, 01 Jul 2021 05:36:00 +0200

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

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

The following commit(s) were added to refs/heads/master by this push:
     new a8e4f2d6 take backup info from wallet-core
a8e4f2d6 is described below

commit a8e4f2d612fcf29c1b19bed999441211ed51ac08
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Thu Jul 1 00:35:41 2021 -0300

    take backup info from wallet-core
---
 .../src/hooks/useProvidersByCurrency.ts            | 106 ++++++---------------
 .../src/popup/Backup.stories.tsx                   |   5 +-
 .../src/popup/BackupPage.tsx                       |   9 +-
 packages/taler-wallet-webextension/src/wxApi.ts    |  41 +++++++-
 4 files changed, 76 insertions(+), 85 deletions(-)

diff --git 
a/packages/taler-wallet-webextension/src/hooks/useProvidersByCurrency.ts 
b/packages/taler-wallet-webextension/src/hooks/useProvidersByCurrency.ts
index 9b600ee2..dedaf6f8 100644
--- a/packages/taler-wallet-webextension/src/hooks/useProvidersByCurrency.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useProvidersByCurrency.ts
@@ -1,88 +1,44 @@
 import { Amounts } from "@gnu-taler/taler-util";
-// import { ProviderInfo } from 
"@gnu-taler/taler-wallet-core/src/operations/backup/index.js";
+import { ProviderInfo } from 
"@gnu-taler/taler-wallet-core/src/operations/backup";
+import { useEffect, useState } from "preact/hooks";
 
+import * as wxApi from "../wxApi";
 
 export interface ProvidersByCurrency {
-  [s:string] : any | undefined
+  [s: string]: ProviderInfo | undefined
 }
-
-const list = {
-  "trustedAuditors": [],
-  "trustedExchanges": [
-    {
-      "currency": "ARS",
-      "exchangeBaseUrl": "http://exchange.taler:8081/";,
-      "exchangeMasterPub": 
"WHA6G542TW8B10N3E857M3P252HV7B896TSP1HP6NREG96ADA4MG"
-    },
-    {
-      "currency": "KUDOS",
-      "exchangeBaseUrl": "https://exchange.demo.taler.net/";,
-      "exchangeMasterPub": 
"FH1Y8ZMHCTPQ0YFSZECDH8C9407JR3YN0MF1706PTG24Q4NEWGV0"
-    },
-    {
-      "currency": "USD",
-      "exchangeBaseUrl": "https://exchange.demo.taler.net/";,
-      "exchangeMasterPub": 
"FH1Y8ZMHCTPQ0YFSZECDH8C9407JR3YN0MF1706PTG24Q4NEWGV0"
-    },
-    {
-      "currency": "EUR",
-      "exchangeBaseUrl": "https://exchange.demo.taler.net/";,
-      "exchangeMasterPub": 
"FH1Y8ZMHCTPQ0YFSZECDH8C9407JR3YN0MF1706PTG24Q4NEWGV0"
-    }
-  ]
+export interface BackupStatus {
+  deviceName: string;
+  providers: ProvidersByCurrency
 }
 
-const status = {
-  "deviceId": "thenameofthisdevice",
-  "walletRootPub": "83DYRKK262TG72H1SD09CTWXQFC151P2DXF9WYH30J8EQ7EAZMCG",
-  "providers": [
-    {
-      "active": false,
-      "syncProviderBaseUrl": "http://sync.demo.taler.net/";,
-      "paymentProposalIds": [],
-      "paymentStatus": {
-        "type": "unpaid"
-      },
-      "terms": {
-        "annualFee": "KUDOS:0.1",
-        "storageLimitInMegabytes": 16,
-        "supportedProtocolVersion": "0.0"
-      }
-    }, {
-      "active": true,
-      "syncProviderBaseUrl": "http://sync.taler:9967/";,
-      "lastSuccessfulBackupTimestamp": {
-        "t_ms": 1625063925078
-      },
-      "paymentProposalIds": [
-        "43Q5WWRJPNS4SE9YKS54H9THDS94089EDGXW9EHBPN6E7M184XEG"
-      ],
-      "paymentStatus": {
-        "type": "paid",
-        "paidUntil": {
-          "t_ms": 1656599921000
+export function useBackupStatus(): BackupStatus | undefined {
+  const [status, setStatus] = useState<BackupStatus | undefined>(undefined)
+  useEffect(() => {
+    async function run() {
+      //create a first list of backup info by currency
+      const status = await wxApi.getBackupInfo()
+      const providers = status.providers.reduce((p, c) => {
+        if (c.terms) {
+          p[Amounts.parseOrThrow(c.terms.annualFee).currency] = c
         }
-      },
-      "terms": {
-        "annualFee": "ARS:1",
-        "storageLimitInMegabytes": 16,
-        "supportedProtocolVersion": "0.0"
-      }
-    }
-
-  ] 
-}
+        return p
+      }, {} as ProvidersByCurrency)
+
+      //add all the known currency with no backup info
+      const list = await wxApi.listKnownCurrencies()
+      const currencies = list.exchanges.map(e => 
e.name).concat(list.auditors.map(a => a.name))
+      currencies.forEach(c => {
+        if (!providers[c]) {
+          providers[c] = undefined
+        }
+      })
 
-export function useProvidersByCurrency(): ProvidersByCurrency {
-  const currencies = list.trustedExchanges.map(e => e.currency)
-  const providerByCurrency = status.providers.reduce((p, c) => {
-    if (c.terms) {
-      p[Amounts.parseOrThrow(c.terms.annualFee).currency] = c
+      setStatus({ deviceName: status.deviceId, providers })
     }
-    return p
-  }, {} as Record<string, any | undefined>)
+    run()
+  }, [])
 
-  
-  return providerByCurrency
+  return status
 }
 
diff --git a/packages/taler-wallet-webextension/src/popup/Backup.stories.tsx 
b/packages/taler-wallet-webextension/src/popup/Backup.stories.tsx
index 0f51f389..856360eb 100644
--- a/packages/taler-wallet-webextension/src/popup/Backup.stories.tsx
+++ b/packages/taler-wallet-webextension/src/popup/Backup.stories.tsx
@@ -19,6 +19,7 @@
 * @author Sebastian Javier Marchano (sebasjm)
 */
 
+import { ProviderPaymentType } from 
'@gnu-taler/taler-wallet-core/src/operations/backup';
 import { FunctionalComponent } from 'preact';
 import { BackupView as TestedComponent } from './BackupPage';
 
@@ -52,7 +53,7 @@ export const Example = createExample(TestedComponent, {
         "43Q5WWRJPNS4SE9YKS54H9THDS94089EDGXW9EHBPN6E7M184XEG"
       ],
       "paymentStatus": {
-        "type": 'paid',
+        "type": ProviderPaymentType.Paid,
         "paidUntil": {
           "t_ms": 1656599921000
         }
@@ -68,7 +69,7 @@ export const Example = createExample(TestedComponent, {
       "syncProviderBaseUrl": "http://sync.demo.taler.net/";,
       "paymentProposalIds": [],
       "paymentStatus": {
-        "type": 'unpaid',
+        "type": ProviderPaymentType.Unpaid,
       },
       "terms": {
         "annualFee": "KUDOS:0.1",
diff --git a/packages/taler-wallet-webextension/src/popup/BackupPage.tsx 
b/packages/taler-wallet-webextension/src/popup/BackupPage.tsx
index d13f5244..9900720d 100644
--- a/packages/taler-wallet-webextension/src/popup/BackupPage.tsx
+++ b/packages/taler-wallet-webextension/src/popup/BackupPage.tsx
@@ -19,11 +19,14 @@ import { Timestamp } from "@gnu-taler/taler-util";
 // import { ProviderPaymentStatus } from 
"@gnu-taler/taler-wallet-core/src/operations/backup";
 import { formatDuration, intervalToDuration } from "date-fns";
 import { JSX, VNode } from "preact";
-import { ProvidersByCurrency, useProvidersByCurrency } from 
"../hooks/useProvidersByCurrency";
+import { ProvidersByCurrency, useBackupStatus } from 
"../hooks/useProvidersByCurrency";
 
 export function BackupPage(): VNode {
-  const providers = useProvidersByCurrency()
-  return <BackupView deviceName={"thisdevicename"} providers={providers}/>;
+  const status = useBackupStatus()
+  if (!status) {
+    return <div>Loading...</div>
+  }
+  return <BackupView deviceName={status.deviceName} 
providers={status.providers}/>;
 }
 
 export interface ViewProps {
diff --git a/packages/taler-wallet-webextension/src/wxApi.ts 
b/packages/taler-wallet-webextension/src/wxApi.ts
index bba8ea1d..81f418d4 100644
--- a/packages/taler-wallet-webextension/src/wxApi.ts
+++ b/packages/taler-wallet-webextension/src/wxApi.ts
@@ -38,7 +38,8 @@ import {
   DeleteTransactionRequest,
   RetryTransactionRequest,
 } from "@gnu-taler/taler-util";
-import { OperationFailedError } from "@gnu-taler/taler-wallet-core";
+import { BackupProviderState, OperationFailedError } from 
"@gnu-taler/taler-wallet-core";
+import { BackupInfo } from 
"@gnu-taler/taler-wallet-core/src/operations/backup";
 
 export interface ExtendedPermissionsResponse {
   newValue: boolean;
@@ -132,18 +133,48 @@ export function getTransactions(): 
Promise<TransactionsResponse> {
   return callBackend("getTransactions", {});
 }
 
+interface CurrencyInfo {
+  name: string;
+  baseUrl: string;
+  pub: string;
+}
+interface ListOfKnownCurrencies {
+  auditors: CurrencyInfo[],
+  exchanges: CurrencyInfo[],
+}
+
+/**
+ * Get a list of currencies from known auditors and exchanges
+ */
+export function listKnownCurrencies(): Promise<ListOfKnownCurrencies> {
+  return callBackend("listCurrencies", {}).then(result => {
+    console.log("result list", result)
+    const auditors = result.trustedAuditors.map((a: Record<string, string>) => 
({
+      name: a.currency,
+      baseUrl: a.auditorBaseUrl,
+      pub: a.auditorPub,
+    }))
+    const exchanges = result.trustedExchanges.map((a: Record<string, string>) 
=> ({
+      name: a.currency,
+      baseUrl: a.exchangeBaseUrl,
+      pub: a.exchangeMasterPub,
+    }))
+    return { auditors, exchanges }
+  });
+}
+
 /**
- * Get currency from known auditors and exchanges
+ * Get information about the current state of wallet backups.
  */
- export function listCurrencies(): Promise<TransactionsResponse> {
-  return callBackend("listCurrencies", {});
+ export function getBackupInfo(): Promise<BackupInfo> {
+  return callBackend("getBackupInfo", {})
 }
 /**
  * Retry a transaction
  * @param transactionId 
  * @returns 
  */
- export function retryTransaction(transactionId: string): Promise<void> {
+export function retryTransaction(transactionId: string): Promise<void> {
   return callBackend("retryTransaction", {
     transactionId
   } as RetryTransactionRequest);

-- 
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]