remove diag, check tos

This commit is contained in:
Sebastian 2023-09-08 11:15:13 -03:00
parent 1f7d2a9cd2
commit 036f8a463f
No known key found for this signature in database
GPG Key ID: 173909D1A5F66069
9 changed files with 19 additions and 129 deletions

View File

@ -28,12 +28,10 @@ import {
FormProvider, FormProvider,
} from "../../../../components/form/FormProvider.js"; } from "../../../../components/form/FormProvider.js";
import { Input } from "../../../../components/form/Input.js"; import { Input } from "../../../../components/form/Input.js";
import { useBackendContext } from "../../../../context/backend.js";
import { MerchantBackend } from "../../../../declaration.js";
import { InputPaytoForm } from "../../../../components/form/InputPaytoForm.js"; import { InputPaytoForm } from "../../../../components/form/InputPaytoForm.js";
import { parsePayUri, stringifyPaytoUri } from "@gnu-taler/taler-util";
import { undefinedIfEmpty } from "../../../../utils/table.js";
import { InputSelector } from "../../../../components/form/InputSelector.js"; import { InputSelector } from "../../../../components/form/InputSelector.js";
import { MerchantBackend } from "../../../../declaration.js";
import { undefinedIfEmpty } from "../../../../utils/table.js";
type Entity = MerchantBackend.BankAccounts.AccountAddDetails & { repeatPassword: string }; type Entity = MerchantBackend.BankAccounts.AccountAddDetails & { repeatPassword: string };

View File

@ -99,7 +99,7 @@ export function ShowButtonsNonAcceptedTosView({
</WarningText> </WarningText>
</section> </section>
)} */} )} */}
{terms.status === ExchangeTosStatus.Pending && ( {terms.status === ExchangeTosStatus.Accepted && (
<section style={{ justifyContent: "space-around", display: "flex" }}> <section style={{ justifyContent: "space-around", display: "flex" }}>
<Button <Button
variant="contained" variant="contained"
@ -181,7 +181,7 @@ export function ShowTosContentView({
</LinkSuccess> </LinkSuccess>
</section> </section>
)} )}
{termsAccepted && terms.status !== ExchangeTosStatus.Proposed && ( {termsAccepted && terms.status !== ExchangeTosStatus.Accepted && (
<section style={{ justifyContent: "space-around", display: "flex" }}> <section style={{ justifyContent: "space-around", display: "flex" }}>
<CheckboxOutlined <CheckboxOutlined
name="terms" name="terms"

View File

@ -118,8 +118,8 @@ export function useComponentState({
subject === undefined subject === undefined
? undefined ? undefined
: !subject : !subject
? "Can't be empty" ? "Can't be empty"
: undefined, : undefined,
value: subject ?? "", value: subject ?? "",
onInput: pushAlertOnError(async (e) => setSubject(e)), onInput: pushAlertOnError(async (e) => setSubject(e)),
}, },
@ -172,6 +172,10 @@ async function checkPeerPushDebitAndCheckMax(
//a good response that allow us to try again //a good response that allow us to try again
throw e; throw e;
} }
if (Amounts.cmp(newAmount, amount) === 1) {
//how can this happen?
throw e;
}
return checkPeerPushDebitAndCheckMax(api, Amounts.stringify(newAmount)); return checkPeerPushDebitAndCheckMax(api, Amounts.stringify(newAmount));
} }
} }

View File

@ -1,44 +0,0 @@
/*
This file is part of GNU Taler
(C) 2022 Taler Systems S.A.
GNU Taler is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation; either version 3, or (at your option) any later version.
GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
import { WalletDiagnostics } from "@gnu-taler/taler-util";
import { useEffect, useState } from "preact/hooks";
import { useBackendContext } from "../context/backend.js";
export function useDiagnostics(): [WalletDiagnostics | undefined, boolean] {
const [timedOut, setTimedOut] = useState(false);
const api = useBackendContext();
const [diagnostics, setDiagnostics] = useState<WalletDiagnostics | undefined>(
undefined,
);
useEffect(() => {
let gotDiagnostics = false;
setTimeout(() => {
if (!gotDiagnostics) {
console.error("timed out");
setTimedOut(true);
}
}, 1000);
const doFetch = async (): Promise<void> => {
const d = await api.background.call("getDiagnostics", undefined);
gotDiagnostics = true;
setDiagnostics(d);
};
doFetch();
}, []);
return [diagnostics, timedOut];
}

View File

@ -27,24 +27,21 @@ import {
PendingTaskInfo, PendingTaskInfo,
WalletApiOperation, WalletApiOperation,
} from "@gnu-taler/taler-wallet-core"; } from "@gnu-taler/taler-wallet-core";
import { format } from "date-fns";
import { Fragment, h, VNode } from "preact";
import { useEffect, useRef, useState } from "preact/hooks";
import { Diagnostics } from "../components/Diagnostics.js";
import { SelectList } from "../components/SelectList.js";
import { NotifyUpdateFadeOut } from "../components/styled/index.js";
import { Time } from "../components/Time.js";
import { useBackendContext } from "../context/backend.js";
import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { format } from "date-fns";
import { Fragment, VNode, h } from "preact";
import { useEffect, useRef, useState } from "preact/hooks";
import { SelectList } from "../components/SelectList.js";
import { Time } from "../components/Time.js";
import { NotifyUpdateFadeOut } from "../components/styled/index.js";
import { useBackendContext } from "../context/backend.js";
import { useAsyncAsHook } from "../hooks/useAsyncAsHook.js"; import { useAsyncAsHook } from "../hooks/useAsyncAsHook.js";
import { useDiagnostics } from "../hooks/useDiagnostics.js";
import { Button } from "../mui/Button.js"; import { Button } from "../mui/Button.js";
import { Grid } from "../mui/Grid.js"; import { Grid } from "../mui/Grid.js";
import { Paper } from "../mui/Paper.js"; import { Paper } from "../mui/Paper.js";
import { TextField } from "../mui/TextField.js"; import { TextField } from "../mui/TextField.js";
export function DeveloperPage(): VNode { export function DeveloperPage(): VNode {
const [status, timedOut] = useDiagnostics();
const listenAllEvents = Array.from<NotificationType>({ length: 1 }); const listenAllEvents = Array.from<NotificationType>({ length: 1 });
@ -73,13 +70,11 @@ export function DeveloperPage(): VNode {
response === undefined response === undefined
? nonResponse ? nonResponse
: response.hasError : response.hasError
? nonResponse ? nonResponse
: response.response; : response.response;
return ( return (
<View <View
status={status}
timedOut={timedOut}
operations={operations} operations={operations}
coins={coins} coins={coins}
exchanges={exchanges} exchanges={exchanges}
@ -108,8 +103,6 @@ type SplitedCoinInfo = {
}; };
export interface Props { export interface Props {
status: any;
timedOut: boolean;
operations: PendingTaskInfo[]; operations: PendingTaskInfo[];
coins: CoinsInfo; coins: CoinsInfo;
exchanges: ExchangeListItem[]; exchanges: ExchangeListItem[];
@ -121,8 +114,6 @@ function hashObjectId(o: any): string {
} }
export function View({ export function View({
status,
timedOut,
operations, operations,
coins, coins,
onDownloadDatabase, onDownloadDatabase,
@ -458,7 +449,6 @@ export function View({
); );
})} })}
<br /> <br />
<Diagnostics diagnostics={status} timedOut={timedOut} />
{operations && operations.length > 0 && ( {operations && operations.length > 0 && (
<Fragment> <Fragment>
<p> <p>

View File

@ -29,17 +29,9 @@ export default {
export const Normal = tests.createExample(TestedComponent, { export const Normal = tests.createExample(TestedComponent, {
permissionToggle: { value: true, button: {} }, permissionToggle: { value: true, button: {} },
diagnostics: {
errors: [],
walletManifestVersion: "1.0",
walletManifestDisplayVersion: "1.0",
firefoxIdbProblem: false,
dbOutdated: false,
},
}); });
export const TimedoutDiagnostics = tests.createExample(TestedComponent, { export const TimedoutDiagnostics = tests.createExample(TestedComponent, {
timedOut: true,
permissionToggle: { value: true, button: {} }, permissionToggle: { value: true, button: {} },
}); });

View File

@ -25,7 +25,6 @@ import { Fragment, h, VNode } from "preact";
import { Checkbox } from "../components/Checkbox.js"; import { Checkbox } from "../components/Checkbox.js";
import { SubTitle, Title } from "../components/styled/index.js"; import { SubTitle, Title } from "../components/styled/index.js";
import { useTranslationContext } from "@gnu-taler/web-util/browser"; import { useTranslationContext } from "@gnu-taler/web-util/browser";
import { useDiagnostics } from "../hooks/useDiagnostics.js";
import { useSettings } from "../hooks/useSettings.js"; import { useSettings } from "../hooks/useSettings.js";
import { ToggleHandler } from "../mui/handlers.js"; import { ToggleHandler } from "../mui/handlers.js";
import { platform } from "../platform/foreground.js"; import { platform } from "../platform/foreground.js";
@ -34,7 +33,6 @@ import { useAlertContext } from "../context/alert.js";
export function WelcomePage(): VNode { export function WelcomePage(): VNode {
const [settings, updateSettings] = useSettings(); const [settings, updateSettings] = useSettings();
const { safely } = useAlertContext(); const { safely } = useAlertContext();
const [diagnostics, timedOut] = useDiagnostics();
return ( return (
<View <View
permissionToggle={{ permissionToggle={{
@ -45,21 +43,15 @@ export function WelcomePage(): VNode {
), ),
}, },
}} }}
diagnostics={diagnostics}
timedOut={timedOut}
/> />
); );
} }
export interface ViewProps { export interface ViewProps {
permissionToggle: ToggleHandler; permissionToggle: ToggleHandler;
diagnostics: WalletDiagnostics | undefined;
timedOut: boolean;
} }
export function View({ export function View({
permissionToggle, permissionToggle,
diagnostics,
timedOut,
}: ViewProps): VNode { }: ViewProps): VNode {
const { i18n } = useTranslationContext(); const { i18n } = useTranslationContext();
return ( return (

View File

@ -70,10 +70,6 @@ export interface BackgroundOperations {
request: void; request: void;
response: void; response: void;
}; };
getDiagnostics: {
request: void;
response: WalletDiagnostics;
};
runGarbageCollector: { runGarbageCollector: {
request: void; request: void;
response: void; response: void;

View File

@ -76,43 +76,6 @@ const walletInit: OpenedPromise<void> = openPromise<void>();
const logger = new Logger("wxBackend.ts"); const logger = new Logger("wxBackend.ts");
async function getDiagnostics(): Promise<WalletDiagnostics> {
const manifestData = platform.getWalletWebExVersion();
const errors: string[] = [];
let firefoxIdbProblem = false;
let dbOutdated = false;
try {
await walletInit.promise;
} catch (e) {
errors.push("Error during wallet initialization: " + e);
if (
currentDatabase === undefined &&
outdatedDbVersion === undefined &&
platform.isFirefox()
) {
firefoxIdbProblem = true;
}
}
if (!currentWallet) {
errors.push("Could not create wallet backend.");
}
if (!currentDatabase) {
errors.push("Could not open database");
}
if (outdatedDbVersion !== undefined) {
errors.push(`Outdated DB version: ${outdatedDbVersion}`);
dbOutdated = true;
}
const diagnostics: WalletDiagnostics = {
walletManifestDisplayVersion: manifestData.version_name || "(undefined)",
walletManifestVersion: manifestData.version,
errors,
firefoxIdbProblem,
dbOutdated,
};
return diagnostics;
}
type BackendHandlerType = { type BackendHandlerType = {
[Op in keyof BackgroundOperations]: ( [Op in keyof BackgroundOperations]: (
req: BackgroundOperations[Op]["request"], req: BackgroundOperations[Op]["request"],
@ -172,7 +135,6 @@ async function isInjectionEnabled(): Promise<boolean> {
const backendHandlers: BackendHandlerType = { const backendHandlers: BackendHandlerType = {
freeze, freeze,
sum, sum,
getDiagnostics,
resetDb, resetDb,
runGarbageCollector, runGarbageCollector,
setLoggingLevel, setLoggingLevel,