[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-wallet-core] branch master updated: transition when withdrawal op
From: |
gnunet |
Subject: |
[taler-wallet-core] branch master updated: transition when withdrawal operation updated |
Date: |
Wed, 06 Mar 2024 16:29:40 +0100 |
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 2e3440933 transition when withdrawal operation updated
2e3440933 is described below
commit 2e344093305ddf72f97e099cba107356970bb1e4
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Wed Mar 6 12:29:33 2024 -0300
transition when withdrawal operation updated
---
packages/taler-util/src/notifications.ts | 12 ++++
packages/taler-wallet-core/src/pay-merchant.ts | 6 +-
packages/taler-wallet-core/src/withdraw.ts | 18 +++---
.../src/components/WalletActivity.tsx | 66 ++++++++++++++++------
.../src/cta/Withdraw/state.ts | 4 +-
.../src/hooks/useSettings.ts | 2 +-
.../src/wallet/AddBackupProvider/test.ts | 1 +
packages/taler-wallet-webextension/src/wxApi.ts | 4 ++
.../taler-wallet-webextension/src/wxBackend.ts | 6 ++
9 files changed, 86 insertions(+), 33 deletions(-)
diff --git a/packages/taler-util/src/notifications.ts
b/packages/taler-util/src/notifications.ts
index 023eb8ef4..ab28cc2ee 100644
--- a/packages/taler-util/src/notifications.ts
+++ b/packages/taler-util/src/notifications.ts
@@ -29,6 +29,7 @@ export enum NotificationType {
BalanceChange = "balance-change",
BackupOperationError = "backup-error",
TransactionStateTransition = "transaction-state-transition",
+ WithdrawalOperationTransition = "withdrawal-operation-transition",
ExchangeStateTransition = "exchange-state-transition",
TaskObservabilityEvent = "task-observability-event",
RequestObservabilityEvent = "request-observability-event",
@@ -205,9 +206,20 @@ export interface BackupOperationErrorNotification {
type: NotificationType.BackupOperationError;
error: TalerErrorDetail;
}
+/**
+ * This notification is required to signal UI that
+ * the withdrawal operation changed the state.
+ *
+ * https://bugs.gnunet.org/view.php?id=8099
+ */
+export interface WithdrawalOperationTransitionNotification {
+ type: NotificationType.WithdrawalOperationTransition;
+ uri: string;
+}
export type WalletNotification =
| BalanceChangeNotification
+ | WithdrawalOperationTransitionNotification
| BackupOperationErrorNotification
| ExchangeStateTransitionNotification
| TransactionStateTransitionNotification
diff --git a/packages/taler-wallet-core/src/pay-merchant.ts
b/packages/taler-wallet-core/src/pay-merchant.ts
index c5af25307..a3623e6d2 100644
--- a/packages/taler-wallet-core/src/pay-merchant.ts
+++ b/packages/taler-wallet-core/src/pay-merchant.ts
@@ -617,8 +617,7 @@ async function processDownloadProposal(
if (proposal.purchaseStatus != PurchaseStatus.PendingDownloadingProposal) {
logger.error(
- `unexpected state ${proposal.purchaseStatus}/${
- PurchaseStatus[proposal.purchaseStatus]
+ `unexpected state
${proposal.purchaseStatus}/${PurchaseStatus[proposal.purchaseStatus]
} for ${ctx.transactionId} in processDownloadProposal`,
);
return TaskRunResult.finished();
@@ -874,8 +873,7 @@ async function createOrReusePurchase(
oldProposal.claimToken === claimToken
) {
logger.info(
- `Found old proposal (status=${
- PurchaseStatus[oldProposal.purchaseStatus]
+ `Found old proposal (status=${PurchaseStatus[oldProposal.purchaseStatus]
}) for order ${orderId} at ${merchantBaseUrl}`,
);
if (oldProposal.purchaseStatus === PurchaseStatus.DialogShared) {
diff --git a/packages/taler-wallet-core/src/withdraw.ts
b/packages/taler-wallet-core/src/withdraw.ts
index e3c4e66a2..853a5e0df 100644
--- a/packages/taler-wallet-core/src/withdraw.ts
+++ b/packages/taler-wallet-core/src/withdraw.ts
@@ -1922,22 +1922,20 @@ export async function getWithdrawalDetailsForUri(
info.apiBaseUrl,
wex.http,
);
- console.log(
- `waiting operation (${info.operationId}) to change from pending`,
- );
+
bankApi
.getWithdrawalOperationById(info.operationId, {
old_state: "pending",
timeoutMs: opts.notifyChangeFromPendingTimeoutMs,
})
.then((resp) => {
- console.log(
- `operation (${info.operationId}) to change to ${JSON.stringify(
- resp,
- undefined,
- 2,
- )}`,
- );
+ if (resp.type === "ok" && resp.body.status !== "pending") {
+ wex.ws.notify({
+ type: NotificationType.WithdrawalOperationTransition,
+ uri: talerWithdrawUri,
+ });
+ }
+ }).finally(() => {
ongoingChecks[talerWithdrawUri] = false;
});
}
diff --git
a/packages/taler-wallet-webextension/src/components/WalletActivity.tsx
b/packages/taler-wallet-webextension/src/components/WalletActivity.tsx
index 48a562098..316596fb4 100644
--- a/packages/taler-wallet-webextension/src/components/WalletActivity.tsx
+++ b/packages/taler-wallet-webextension/src/components/WalletActivity.tsx
@@ -35,7 +35,7 @@ import { useSettings } from "../hooks/useSettings.js";
import { Button } from "../mui/Button.js";
import { Modal } from "./Modal.js";
import { Time } from "./Time.js";
-import { WalletEvent } from "../wxApi.js";
+import { WalletEvent, WxApiType } from "../wxApi.js";
interface Props extends JSX.HTMLAttributes {
}
@@ -587,6 +587,27 @@ function getNotificationFor(id: string, event:
WalletNotification, start: Absolu
MoreInfo: ShowObservabilityEvent
})
}
+ case NotificationType.WithdrawalOperationTransition: {
+ const found = list.find(a => a.reference?.eventType === event.type &&
a.reference.id === event.uri)
+ if (found) {
+ found.end = start;
+ found.events.unshift(eventWithTime)
+ return undefined
+ }
+ return ({
+ id,
+ events: [eventWithTime],
+ reference: {
+ eventType: event.type,
+ referenceType: "task",
+ id: event.uri,
+ },
+ description: `Withdrawal operation updated`,
+ start,
+ end: AbsoluteTime.never(),
+ MoreInfo: ShowObservabilityEvent
+ })
+ }
case NotificationType.RequestObservabilityEvent: {
const found = list.find(a => a.reference?.eventType === event.type &&
a.reference.id === event.requestId)
if (found) {
@@ -614,6 +635,29 @@ function getNotificationFor(id: string, event:
WalletNotification, start: Absolu
}
}
+
+function refresh(api: WxApiType, onUpdate: (list: Notif[]) => void) {
+ api.background.call("getNotifications", undefined).then(notif => {
+
+ const list: Notif[] = []
+ for (const n of notif) {
+ if (n.notification.type === NotificationType.RequestObservabilityEvent &&
+ n.notification.operation === "getActiveTasks") {
+ //ignore monitor request
+ continue;
+ }
+ const event = getNotificationFor(String(list.length), n.notification,
n.when, list)
+ // pepe.
+ if (event) {
+ list.unshift(event)
+ }
+ }
+ onUpdate(list);
+ }).catch(error => {
+ console.log(error)
+ })
+}
+
export function ObservabilityEventsTable({ }: {}): VNode {
const { i18n } = useTranslationContext()
const api = useBackendContext();
@@ -624,20 +668,8 @@ export function ObservabilityEventsTable({ }: {}): VNode {
useEffect(() => {
let lastTimeout: ReturnType<typeof setTimeout>;
function periodicRefresh() {
- api.background.call("getNotifications", undefined).then(notif => {
-
- const list: Notif[] = []
- for (const pepe of notif) {
- const event = getNotificationFor(String(list.length),
pepe.notification, pepe.when, list)
- // pepe.
- if (event) {
- list.unshift(event)
- }
- }
- setNotifications(list);
- }).catch(error => {
- console.log(error)
- })
+
+ refresh(api, setNotifications)
lastTimeout = setTimeout(() => {
periodicRefresh();
@@ -653,7 +685,9 @@ export function ObservabilityEventsTable({ }: {}): VNode {
<div style={{ display: "flex", justifyContent: "space-between" }}>
<div style={{ padding: 4, margin: 2, border: "solid 1px black" }}
onClick={() => {
- setNotifications([])
+ api.background.call("clearNotifications", undefined).then(d => {
+ refresh(api, setNotifications)
+ })
}}>
clear
</div>
diff --git a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
index e52b9faec..05aef690e 100644
--- a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
@@ -243,8 +243,8 @@ export function useComponentStateFromURI({
return;
}
return api.listener.onUpdateNotification(
- [NotificationType.TransactionStateTransition],
- () => {
+ [NotificationType.WithdrawalOperationTransition],
+ (asd) => {
uriInfoHook.retry();
},
);
diff --git a/packages/taler-wallet-webextension/src/hooks/useSettings.ts
b/packages/taler-wallet-webextension/src/hooks/useSettings.ts
index 37d2f13d7..a79a71087 100644
--- a/packages/taler-wallet-webextension/src/hooks/useSettings.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useSettings.ts
@@ -59,6 +59,6 @@ export function useSettings(): [
function updateField<T extends keyof Settings>(k: T, v: Settings[T]) {
update({ ...value, [k]: v });
}
- console.log("ASDeeeeASD")
+
return [value, updateField];
}
diff --git
a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts
b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts
index 66f64d82e..9c68b28cf 100644
--- a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts
@@ -45,6 +45,7 @@ describe("AddBackupProvider states", () => {
expect(state.name.value).eq("");
expect(state.url.value).eq("");
},
+ //FIXME: this shouldn't take 2 updates, just
(state) => {
expect(state.status).equal("select-provider");
if (state.status !== "select-provider") return;
diff --git a/packages/taler-wallet-webextension/src/wxApi.ts
b/packages/taler-wallet-webextension/src/wxApi.ts
index 90522f662..495f015ff 100644
--- a/packages/taler-wallet-webextension/src/wxApi.ts
+++ b/packages/taler-wallet-webextension/src/wxApi.ts
@@ -78,6 +78,10 @@ export interface BackgroundOperations {
request: void;
response: WalletEvent[];
};
+ clearNotifications: {
+ request: void;
+ response: void;
+ };
setLoggingLevel: {
request: {
tag?: string;
diff --git a/packages/taler-wallet-webextension/src/wxBackend.ts
b/packages/taler-wallet-webextension/src/wxBackend.ts
index c7408ed87..195e05687 100644
--- a/packages/taler-wallet-webextension/src/wxBackend.ts
+++ b/packages/taler-wallet-webextension/src/wxBackend.ts
@@ -100,6 +100,11 @@ async function getNotifications(): Promise<WalletEvent[]> {
return notifications
}
+async function clearNotifications(): Promise<void> {
+ notifications.splice(0,notifications.length)
+}
+
+
async function runGarbageCollector(): Promise<void> {
const dbBeforeGc = currentDatabase;
if (!dbBeforeGc) {
@@ -139,6 +144,7 @@ const backendHandlers: BackendHandlerType = {
resetDb,
runGarbageCollector,
getNotifications,
+ clearNotifications,
reinitWallet,
setLoggingLevel,
};
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-wallet-core] branch master updated: transition when withdrawal operation updated,
gnunet <=