commit 921eadd6348812a138fbdd716524af5b23ac6b72
parent 2f287ba08f59c64e370a1ffa12d3551cec3e01a1
Author: Sebastian <sebasjm@gmail.com>
Date: Sat, 1 Mar 2025 18:55:17 -0300
fix rare compilation error:
src/Routing.tsx:47:14 - error TS2742: The inferred type of 'publicPages' cannot be named without a reference to '../node_modules/@gnu-taler/web-util/src/index.browser.js'. This is likely not portable. A type annotation is necessary.
Diffstat:
4 files changed, 34 insertions(+), 14 deletions(-)
diff --git a/packages/bank-ui/src/Routing.tsx b/packages/bank-ui/src/Routing.tsx
@@ -16,6 +16,7 @@
import {
LocalNotificationBanner,
+ RouteDefinition,
urlPattern,
useBankCoreApiContext,
useCurrentLocation,
@@ -122,10 +123,11 @@ export function Routing(): VNode {
}, [refreshSession]);
if (session.state.status === "loggedIn") {
- const { isUserAdministrator, username, expiration } = session.state;
+ const { isUserAdministrator, username } = session.state;
return (
<BankFrame
account={username}
+ routeNotifications={privatePages.notifications}
routeAccountDetails={privatePages.myAccountDetails}
>
<PrivateRouting username={username} isAdmin={isUserAdministrator} />
@@ -133,7 +135,7 @@ export function Routing(): VNode {
);
}
return (
- <BankFrame>
+ <BankFrame routeNotifications={privatePages.notifications}>
<PublicRounting
onLoggedUser={(username, token, expiration) => {
session.logIn({ username, token, expiration });
@@ -266,7 +268,7 @@ function PublicRounting({
}
}
-export const privatePages = {
+const privatePages = {
homeChargeWallet: urlPattern(
/\/account\/charge-wallet/,
() => "#/account/charge-wallet",
diff --git a/packages/bank-ui/src/pages/BankFrame.tsx b/packages/bank-ui/src/pages/BankFrame.tsx
@@ -35,7 +35,6 @@ import {
} from "@gnu-taler/web-util/browser";
import { ComponentChildren, Fragment, VNode, h } from "preact";
import { useEffect, useErrorBoundary, useState } from "preact/hooks";
-import { privatePages } from "../Routing.js";
import { useSettingsContext } from "../context/settings.js";
import { useAccountDetails } from "../hooks/account.js";
import { useBankState } from "../hooks/bank-state.js";
@@ -57,9 +56,11 @@ export function BankFrame({
children,
account,
routeAccountDetails,
+ routeNotifications,
}: {
account?: string;
routeAccountDetails?: RouteDefinition;
+ routeNotifications?: RouteDefinition;
children: ComponentChildren;
}): VNode {
const { i18n } = useTranslationContext();
@@ -99,8 +100,8 @@ export function BankFrame({
iconLinkURL={settings.iconLinkURL ?? "#"}
profileURL={routeAccountDetails?.url({})}
notificationURL={
- preferences.showDebugInfo
- ? privatePages.notifications.url({})
+ preferences.showDebugInfo && routeNotifications
+ ? routeNotifications.url({})
: undefined
}
onLogout={
@@ -109,7 +110,8 @@ export function BankFrame({
: () => {
if (session.state.status === "loggedIn" && authenticator) {
// FIXME: This returns a promise, should await on it!
- authenticator.deleteAccessToken(session.state.username,
+ authenticator.deleteAccessToken(
+ session.state.username,
session.state.token,
);
}
diff --git a/packages/kyc-ui/src/Routing.tsx b/packages/kyc-ui/src/Routing.tsx
@@ -35,13 +35,21 @@ export function Routing(): VNode {
// check session and defined if this is
// public routing or private
return (
- <Frame>
+ <Frame
+ routeTestForms={publicPages.triggerForm}
+ routeTestKyc={publicPages.triggerKyc}
+ >
<PublicRounting />
</Frame>
);
}
-export const publicPages = {
+/**
+ * FIXME: Exporting this constant make typescript throw an error
+ *
+ * src/Routing.tsx:47:14 - error TS2742: The inferred type of 'publicPages' cannot be named without a reference to '../node_modules/@gnu-taler/web-util/src/index.browser.js'. This is likely not portable. A type annotation is necessary.
+ */
+const publicPages = {
completed: urlPattern(/\/completed/, () => `#/completed`),
start: urlPattern(/\/start/, () => `#/start`),
triggerKyc: urlPattern(/\/test\/trigger-kyc/, () => `#/test/trigger-kyc`),
diff --git a/packages/kyc-ui/src/pages/Frame.tsx b/packages/kyc-ui/src/pages/Frame.tsx
@@ -18,6 +18,7 @@ import { TranslatedString } from "@gnu-taler/taler-util";
import {
Footer,
Header,
+ RouteDefinition,
ToastBanner,
notifyError,
notifyException,
@@ -31,7 +32,6 @@ import {
usePreferences,
} from "../context/preferences.js";
import { useSettingsContext } from "../context/settings.js";
-import { publicPages } from "../Routing.js";
import { useNotifierContext } from "../context/notifier.js";
const TALER_SCREEN_ID = 108;
@@ -39,7 +39,15 @@ const TALER_SCREEN_ID = 108;
const GIT_HASH = typeof __GIT_HASH__ !== "undefined" ? __GIT_HASH__ : undefined;
const VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : undefined;
-export function Frame({ children }: { children: ComponentChildren }): VNode {
+export function Frame({
+ children,
+ routeTestForms,
+ routeTestKyc,
+}: {
+ routeTestKyc?: RouteDefinition;
+ routeTestForms?: RouteDefinition;
+ children: ComponentChildren;
+}): VNode {
const settings = useSettingsContext();
const [preferences, updatePreferences] = usePreferences();
const [title, setTitle] = useState<string>();
@@ -79,11 +87,11 @@ export function Frame({ children }: { children: ComponentChildren }): VNode {
onLogout={undefined}
iconLinkURL="#"
sites={
- !preferences.showDebugInfo
+ !preferences.showDebugInfo || !routeTestKyc || !routeTestForms
? []
: [
- ["Test kyc", publicPages.triggerKyc.url({})],
- ["Test Forms", publicPages.triggerForm.url({})],
+ ["Test kyc", routeTestKyc.url({})],
+ ["Test Forms", routeTestForms.url({})],
]
}
>