aboutsummaryrefslogtreecommitdiff
path: root/packages/anastasis-webui/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/anastasis-webui/src')
-rw-r--r--packages/anastasis-webui/src/components/picker/DurationPicker.tsx2
-rw-r--r--packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts4
-rw-r--r--packages/anastasis-webui/src/pages/home/AddingProviderScreen.tsx58
-rw-r--r--packages/anastasis-webui/src/pages/home/style.css0
-rw-r--r--packages/anastasis-webui/src/utils/index.tsx44
5 files changed, 49 insertions, 59 deletions
diff --git a/packages/anastasis-webui/src/components/picker/DurationPicker.tsx b/packages/anastasis-webui/src/components/picker/DurationPicker.tsx
index 8a1faf4d0..dc4a13a44 100644
--- a/packages/anastasis-webui/src/components/picker/DurationPicker.tsx
+++ b/packages/anastasis-webui/src/components/picker/DurationPicker.tsx
@@ -21,7 +21,7 @@
import { h, VNode } from "preact";
import { useState } from "preact/hooks";
-import { useTranslator } from "../../i18n";
+import { useTranslator } from "../../i18n/index.js";
import "../../scss/DurationPicker.scss";
export interface Props {
diff --git a/packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts b/packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts
index 1b77db38f..1ff3f66fa 100644
--- a/packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts
+++ b/packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts
@@ -323,7 +323,7 @@ export function useAnastasisReducer(): AnastasisReducerApi {
},
});
},
- async discoverMore(): Promise<void> {},
+ async discoverMore(): Promise<void> { },
async startRecover() {
let s: ReducerState;
if (remoteReducer) {
@@ -403,7 +403,7 @@ export function useAnastasisReducer(): AnastasisReducerApi {
}
class ReducerTxImpl implements ReducerTransactionHandle {
- constructor(public transactionState: ReducerState) {}
+ constructor(public transactionState: ReducerState) { }
async transition(action: string, args: any): Promise<ReducerState> {
let s: ReducerState;
if (remoteReducer) {
diff --git a/packages/anastasis-webui/src/pages/home/AddingProviderScreen.tsx b/packages/anastasis-webui/src/pages/home/AddingProviderScreen.tsx
index d85aa5974..3f3abdb54 100644
--- a/packages/anastasis-webui/src/pages/home/AddingProviderScreen.tsx
+++ b/packages/anastasis-webui/src/pages/home/AddingProviderScreen.tsx
@@ -59,6 +59,26 @@ export function AddingProviderScreen({ providerType, onCancel }: Props): VNode {
? authMethods[providerType].label
: undefined;
+ const allAuthProviders =
+ !reducer ||
+ !reducer.currentReducerState ||
+ reducer.currentReducerState.reducer_type === "error" ||
+ !reducer.currentReducerState.authentication_providers
+ ? {}
+ : reducer.currentReducerState.authentication_providers;
+ const authProviders = Object.keys(allAuthProviders).filter((provUrl) => {
+ const p = allAuthProviders[provUrl];
+ if (!providerLabel) {
+ return p && "currency" in p;
+ } else {
+ return (
+ p &&
+ "currency" in p &&
+ p.methods.findIndex((m) => m.type === providerType) !== -1
+ );
+ }
+ });
+
//FIXME: move this timeout logic into a hook
const timeout = useRef<number | undefined>(undefined);
useEffect(() => {
@@ -69,17 +89,22 @@ export function AddingProviderScreen({ providerType, onCancel }: Props): VNode {
try {
setTesting(true);
await testProvider(url, providerType);
- // this is use as tested but everything when ok
- // undefined will mean that the field is not dirty
setError("");
} catch (e) {
- console.log("tuvieja", e);
if (e instanceof Error) setError(e.message);
}
setTesting(false);
}, 200);
}, [providerURL, reducer]);
+ async function addProvider(provider_url: string): Promise<void> {
+ await reducer?.transition("add_provider", { provider_url });
+ onCancel();
+ }
+ function deleteProvider(provider_url: string): void {
+ reducer?.transition("delete_provider", { provider_url });
+ }
+
if (!reducer) {
return <div>no reducer in context</div>;
}
@@ -91,29 +116,6 @@ export function AddingProviderScreen({ providerType, onCancel }: Props): VNode {
return <div>invalid state</div>;
}
- async function addProvider(provider_url: string): Promise<void> {
- await reducer?.transition("add_provider", { provider_url });
- onCancel();
- }
- function deleteProvider(provider_url: string): void {
- reducer?.transition("delete_provider", { provider_url });
- }
-
- const allAuthProviders =
- reducer.currentReducerState.authentication_providers || {};
- const authProviders = Object.keys(allAuthProviders).filter((provUrl) => {
- const p = allAuthProviders[provUrl];
- if (!providerLabel) {
- return p && "currency" in p;
- } else {
- return (
- p &&
- "currency" in p &&
- p.methods.findIndex((m) => m.type === providerType) !== -1
- );
- }
- });
-
let errors = !providerURL ? "Add provider URL" : undefined;
let url: string | undefined;
try {
@@ -190,7 +192,9 @@ export function AddingProviderScreen({ providerType, onCancel }: Props): VNode {
{authProviders.map((k) => {
const p = allAuthProviders[k] as AuthenticationProviderStatusOk;
- return <TableRow url={k} info={p} onDelete={deleteProvider} />;
+ return (
+ <TableRow key={k} url={k} info={p} onDelete={deleteProvider} />
+ );
})}
</div>
</AnastasisClientFrame>
diff --git a/packages/anastasis-webui/src/pages/home/style.css b/packages/anastasis-webui/src/pages/home/style.css
deleted file mode 100644
index e69de29bb..000000000
--- a/packages/anastasis-webui/src/pages/home/style.css
+++ /dev/null
diff --git a/packages/anastasis-webui/src/utils/index.tsx b/packages/anastasis-webui/src/utils/index.tsx
index 2e502cacb..a59b19323 100644
--- a/packages/anastasis-webui/src/utils/index.tsx
+++ b/packages/anastasis-webui/src/utils/index.tsx
@@ -1,6 +1,4 @@
-/* eslint-disable @typescript-eslint/camelcase */
import {
- AuthenticationProviderStatus,
AuthenticationProviderStatusError,
AuthenticationProviderStatusOk,
BackupStates,
@@ -9,7 +7,11 @@ import {
ReducerStateRecovery,
} from "@gnu-taler/anastasis-core";
import { FunctionalComponent, h, VNode } from "preact";
-import { AnastasisProvider } from "../context/anastasis";
+import { AnastasisProvider } from "../context/anastasis.js";
+
+const noop = async (): Promise<void> => {
+ return;
+};
export function createExample<Props>(
Component: FunctionalComponent<Props>,
@@ -21,39 +23,23 @@ export function createExample<Props>(
<AnastasisProvider
value={{
currentReducerState,
- discoverMore: async () => {},
- discoverStart: async () => {},
+ discoverMore: noop,
+ discoverStart: noop,
discoveryState: {
state: "none",
},
currentError: undefined,
- back: async () => {
- null;
- },
- dismissError: async () => {
- null;
- },
- reset: () => {
- null;
- },
- runTransaction: async () => {
- null;
- },
- startBackup: () => {
- null;
- },
- startRecover: () => {
- null;
- },
- transition: async () => {
- null;
- },
+ back: noop,
+ dismissError: noop,
+ reset: noop,
+ runTransaction: noop,
+ startBackup: noop,
+ startRecover: noop,
+ transition: noop,
exportState: () => {
return "{}";
},
- importState(s: string) {
- /* do nothing */
- },
+ importState: noop,
}}
>
<Component {...args} />