gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] 01/02: update challenger api v2


From: gnunet
Subject: [taler-wallet-core] 01/02: update challenger api v2
Date: Fri, 28 Jun 2024 18:12:58 +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 5d8bdc3dd61157c6a2836f9b2651d23e557d9bc5
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Fri Jun 28 13:12:07 2024 -0300

    update challenger api v2
---
 packages/bank-ui/src/hooks/preferences.ts    |  2 +-
 packages/bank-ui/src/pages/BankFrame.tsx     |  1 -
 packages/taler-util/src/http-client/types.ts | 27 +++++++++++++--
 packages/taler-util/src/operation.ts         | 51 ++++++++++++++++++++++++----
 4 files changed, 71 insertions(+), 10 deletions(-)

diff --git a/packages/bank-ui/src/hooks/preferences.ts 
b/packages/bank-ui/src/hooks/preferences.ts
index fadbbc8c1..a03234634 100644
--- a/packages/bank-ui/src/hooks/preferences.ts
+++ b/packages/bank-ui/src/hooks/preferences.ts
@@ -43,7 +43,7 @@ export const codecForPreferences = (): Codec<Preferences> =>
     .property("showDebugInfo", codecForBoolean())
     .property("fastWithdrawalForm", codecForBoolean())
     .property("showCopyAccount", codecForBoolean())
-    .build("Settings");
+    .build("Preferences");
 
 const defaultPreferences: Preferences = {
   showWithdrawalSuccess: true,
diff --git a/packages/bank-ui/src/pages/BankFrame.tsx 
b/packages/bank-ui/src/pages/BankFrame.tsx
index 62b5c6f90..e969caaa7 100644
--- a/packages/bank-ui/src/pages/BankFrame.tsx
+++ b/packages/bank-ui/src/pages/BankFrame.tsx
@@ -162,7 +162,6 @@ export function BankFrame({
       <div class="fixed z-20 top-14 w-full">
         <div class="mx-auto w-4/5">
           <ToastBanner />
-          {/* <Attention type="success" title={"hola" as TranslatedString} 
onClose={() => { }} /> */}
         </div>
       </div>
 
diff --git a/packages/taler-util/src/http-client/types.ts 
b/packages/taler-util/src/http-client/types.ts
index 6e758773c..a91e8cc71 100644
--- a/packages/taler-util/src/http-client/types.ts
+++ b/packages/taler-util/src/http-client/types.ts
@@ -1580,8 +1580,12 @@ export const codecForChallengeStatus =
     buildCodecForObject<ChallengerApi.ChallengeStatus>()
       .property("restrictions", codecOptional(codecForMap(codecForAny())))
       .property("fix_address", codecForBoolean())
+      .property("solved", codecForBoolean())
       .property("last_address", codecOptional(codecForMap(codecForAny())))
       .property("changes_left", codecForNumber())
+      .property("retransmission_time", codecForTimestamp)
+      .property("pin_transmissions_left", codecForNumber())
+      .property("auth_attempts_left", codecForNumber())
       .build("ChallengerApi.ChallengeStatus");
 
 export const codecForChallengeResponse =
@@ -1599,7 +1603,7 @@ export const codecForChallengeCreateResponse =
       .property("address", codecForAny())
       .property("type", codecForConstString("created"))
       .property("transmitted", codecForBoolean())
-      .property("next_tx_time", codecForString())
+      .property("next_tx_time", codecForTimestamp)
       .build("ChallengerApi.ChallengeCreateResponse");
 
 export const codecForChallengeRedirect =
@@ -5420,6 +5424,25 @@ export namespace ChallengerApi {
     // number of times the address can still be changed, may or may not be
     // shown to the user
     changes_left: Integer;
+
+    // if the challenge has already been solved
+    solved: boolean;
+
+    // when we would re-transmit the challenge the next
+    // time (at the earliest) if requested by the user
+    // only present if challenge already created
+    // @since v2
+    retransmission_time: Timestamp;
+
+    // how many times might the PIN still be retransmitted
+    // only present if challenge already created
+    // @since v2
+    pin_transmissions_left: Integer;
+
+    // how many times might the user still try entering the PIN code
+    // only present if challenge already created
+    // @since v2
+    auth_attempts_left: Integer;
   }
 
   export type ChallengeResponse = ChallengeRedirect | ChallengeCreateResponse;
@@ -5447,7 +5470,7 @@ export namespace ChallengerApi {
 
     // timestamp explaining when we would re-transmit the challenge the next
     // time (at the earliest) if requested by the user
-    next_tx_time: string;
+    next_tx_time: TalerProtocolTimestamp;
   }
 
   export type ChallengeSolveResponse = ChallengeRedirect | InvalidPinResponse;
diff --git a/packages/taler-util/src/operation.ts 
b/packages/taler-util/src/operation.ts
index e2ab9d4e4..2d17238dc 100644
--- a/packages/taler-util/src/operation.ts
+++ b/packages/taler-util/src/operation.ts
@@ -146,7 +146,10 @@ export function opKnownTalerFailure<T extends 
TalerErrorCode>(
   return { type: "fail", case: s, detail };
 }
 
-export function opUnknownFailure(resp: HttpResponse, error: TalerErrorDetail): 
never {
+export function opUnknownFailure(
+  resp: HttpResponse,
+  error: TalerErrorDetail,
+): never {
   throw TalerError.fromDetail(
     TalerErrorCode.WALLET_UNEXPECTED_REQUEST_ERROR,
     {
@@ -179,15 +182,51 @@ export function narrowOpSuccessOrThrow<Body, ErrorEnum>(
   }
 }
 
+export async function succeedOrThrow<R, E>(
+  promise: Promise<OperationResult<R, E>>,
+): Promise<R> {
+  const resp = await promise;
+  if (isOperationOk(resp)) {
+    return resp.body;
+  }
+
+  if (isOperationFail(resp)) {
+    throw TalerError.fromUncheckedDetail({ ...resp, case: resp.case } as any);
+  }
+  throw TalerError.fromException(resp);
+}
+
+export async function failOrThrow<E>(
+  s: E,
+  promise: Promise<OperationResult<unknown, E>>,
+): Promise<TalerErrorDetail | undefined> {
+  const resp = await promise;
+  if (isOperationOk(resp)) {
+    throw TalerError.fromException(
+      new Error(`request succeed but failure "${s}" was expected`),
+    );
+  }
+  if (isOperationFail(resp) && resp.case === s) {
+    return resp.detail;
+  }
+  throw TalerError.fromException(
+    new Error(
+      `request failed with "${JSON.stringify(
+        resp,
+      )}" but case "${s}" was expected`,
+    ),
+  );
+}
+
 export type ResultByMethod<
   TT extends object,
   p extends keyof TT,
 > = TT[p] extends (...args: any[]) => infer Ret
   ? Ret extends Promise<infer Result>
-  ? Result extends OperationResult<any, any>
-  ? Result
-  : never
-  : never //api always use Promises
+    ? Result extends OperationResult<any, any>
+      ? Result
+      : never
+    : never //api always use Promises
   : never; //error cases just for functions
 
 export type FailCasesByMethod<TT extends object, p extends keyof TT> = Exclude<
@@ -195,4 +234,4 @@ export type FailCasesByMethod<TT extends object, p extends 
keyof TT> = Exclude<
   OperationOk<any>
 >;
 
-export type RedirectResult = { redirectURL: URL }
+export type RedirectResult = { redirectURL: URL };

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