From 655c5fc18a22ae167160dd93e53d87e130fa9afa Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 8 Jul 2021 15:23:53 -0300 Subject: add more backup stories, sync by one provider --- .../src/hooks/useBackupStatus.ts | 55 ++++++++++++++++++++++ .../src/hooks/useProviderStatus.ts | 34 +++++++++++++ .../src/hooks/useProvidersByCurrency.ts | 50 -------------------- 3 files changed, 89 insertions(+), 50 deletions(-) create mode 100644 packages/taler-wallet-webextension/src/hooks/useBackupStatus.ts create mode 100644 packages/taler-wallet-webextension/src/hooks/useProviderStatus.ts delete mode 100644 packages/taler-wallet-webextension/src/hooks/useProvidersByCurrency.ts (limited to 'packages/taler-wallet-webextension/src/hooks') diff --git a/packages/taler-wallet-webextension/src/hooks/useBackupStatus.ts b/packages/taler-wallet-webextension/src/hooks/useBackupStatus.ts new file mode 100644 index 000000000..2d51cb303 --- /dev/null +++ b/packages/taler-wallet-webextension/src/hooks/useBackupStatus.ts @@ -0,0 +1,55 @@ +import { ProviderInfo, ProviderPaymentPaid, ProviderPaymentStatus, ProviderPaymentType } from "@gnu-taler/taler-wallet-core"; +import { useEffect, useState } from "preact/hooks"; +import * as wxApi from "../wxApi"; + + +export interface BackupStatus { + deviceName: string; + providers: ProviderInfo[]; + sync: () => Promise; +} + +function getStatusTypeOrder(t: ProviderPaymentStatus) { + return [ + ProviderPaymentType.InsufficientBalance, + ProviderPaymentType.TermsChanged, + ProviderPaymentType.Unpaid, + ProviderPaymentType.Paid, + ProviderPaymentType.Pending, + ].indexOf(t.type) +} + +function getStatusPaidOrder(a: ProviderPaymentPaid, b: ProviderPaymentPaid) { + return a.paidUntil.t_ms === 'never' ? -1 : + b.paidUntil.t_ms === 'never' ? 1 : + a.paidUntil.t_ms - b.paidUntil.t_ms +} + +export function useBackupStatus(): BackupStatus | undefined { + const [status, setStatus] = useState(undefined) + + useEffect(() => { + async function run() { + //create a first list of backup info by currency + const status = await wxApi.getBackupInfo() + + const providers = status.providers.sort((a, b) => { + if (a.paymentStatus.type === ProviderPaymentType.Paid && b.paymentStatus.type === ProviderPaymentType.Paid) { + return getStatusPaidOrder(a.paymentStatus, b.paymentStatus) + } + return getStatusTypeOrder(a.paymentStatus) - getStatusTypeOrder(b.paymentStatus) + }) + + async function sync() { + await wxApi.syncAllProviders() + } + + setStatus({ deviceName: status.deviceId, providers, sync }) + } + run() + }, []) + + return status +} + + diff --git a/packages/taler-wallet-webextension/src/hooks/useProviderStatus.ts b/packages/taler-wallet-webextension/src/hooks/useProviderStatus.ts new file mode 100644 index 000000000..42eab5d80 --- /dev/null +++ b/packages/taler-wallet-webextension/src/hooks/useProviderStatus.ts @@ -0,0 +1,34 @@ +import { ProviderInfo } from "@gnu-taler/taler-wallet-core"; +import { useEffect, useState } from "preact/hooks"; +import * as wxApi from "../wxApi"; + +export interface ProviderStatus { + info?: ProviderInfo; + sync: () => Promise; +} + +export function useProviderStatus(url: string): ProviderStatus | undefined { + const [status, setStatus] = useState(undefined); + + useEffect(() => { + async function run() { + //create a first list of backup info by currency + const status = await wxApi.getBackupInfo(); + + const providers = status.providers.filter(p => p.syncProviderBaseUrl === url); + const info = providers.length ? providers[0] : undefined; + + async function sync() { + console.log("que tiene info", info) + if (info) { + await wxApi.syncOneProvider(info.syncProviderBaseUrl); + } + } + + setStatus({ info, sync }); + } + run(); + }, []); + + return status; +} diff --git a/packages/taler-wallet-webextension/src/hooks/useProvidersByCurrency.ts b/packages/taler-wallet-webextension/src/hooks/useProvidersByCurrency.ts deleted file mode 100644 index 09f61e468..000000000 --- a/packages/taler-wallet-webextension/src/hooks/useProvidersByCurrency.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Amounts } from "@gnu-taler/taler-util"; -import { ProviderInfo, ProviderPaymentPaid, ProviderPaymentStatus, ProviderPaymentType } from "@gnu-taler/taler-wallet-core"; -import { useEffect, useState } from "preact/hooks"; - -import * as wxApi from "../wxApi"; - -export interface BackupStatus { - deviceName: string; - providers: ProviderInfo[] -} - -function getStatusTypeOrder(t: ProviderPaymentStatus) { - return [ - ProviderPaymentType.InsufficientBalance, - ProviderPaymentType.TermsChanged, - ProviderPaymentType.Unpaid, - ProviderPaymentType.Paid, - ProviderPaymentType.Pending, - ].indexOf(t.type) -} - -function getStatusPaidOrder(a: ProviderPaymentPaid, b: ProviderPaymentPaid) { - return a.paidUntil.t_ms === 'never' ? -1 : - b.paidUntil.t_ms === 'never' ? 1 : - a.paidUntil.t_ms - b.paidUntil.t_ms -} - -export function useBackupStatus(): BackupStatus | undefined { - const [status, setStatus] = useState(undefined) - - useEffect(() => { - async function run() { - //create a first list of backup info by currency - const status = await wxApi.getBackupInfo() - - const providers = status.providers.sort((a, b) => { - if (a.paymentStatus.type === ProviderPaymentType.Paid && b.paymentStatus.type === ProviderPaymentType.Paid) { - return getStatusPaidOrder(a.paymentStatus, b.paymentStatus) - } - return getStatusTypeOrder(a.paymentStatus) - getStatusTypeOrder(b.paymentStatus) - }) - - setStatus({ deviceName: status.deviceId, providers }) - } - run() - }, []) - - return status -} - -- cgit v1.2.3