aboutsummaryrefslogtreecommitdiff
path: root/packages/auditor-backoffice-ui/src/context
diff options
context:
space:
mode:
Diffstat (limited to 'packages/auditor-backoffice-ui/src/context')
-rw-r--r--packages/auditor-backoffice-ui/src/context/backend.test.ts163
-rw-r--r--packages/auditor-backoffice-ui/src/context/backend.ts60
-rw-r--r--packages/auditor-backoffice-ui/src/context/config.ts11
-rw-r--r--packages/auditor-backoffice-ui/src/context/entity.ts (renamed from packages/auditor-backoffice-ui/src/context/instance.ts)31
4 files changed, 55 insertions, 210 deletions
diff --git a/packages/auditor-backoffice-ui/src/context/backend.test.ts b/packages/auditor-backoffice-ui/src/context/backend.test.ts
deleted file mode 100644
index 359859819..000000000
--- a/packages/auditor-backoffice-ui/src/context/backend.test.ts
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- This file is part of GNU Taler
- (C) 2021-2023 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/>
- */
-
-/**
- *
- * @author Sebastian Javier Marchano (sebasjm)
- */
-
-import * as tests from "@gnu-taler/web-util/testing";
-import { ComponentChildren, h, VNode } from "preact";
-import { AccessToken, MerchantBackend } from "../declaration.js";
-import {
- useAdminAPI,
- useInstanceAPI,
- useManagementAPI,
-} from "../hooks/instance.js";
-import { expect } from "chai";
-import { ApiMockEnvironment } from "../hooks/testing.js";
-import {
- API_CREATE_INSTANCE,
- API_NEW_LOGIN,
- API_UPDATE_CURRENT_INSTANCE_AUTH,
- API_UPDATE_INSTANCE_AUTH_BY_ID,
-} from "../hooks/urls.js";
-
-interface TestingContextProps {
- children?: ComponentChildren;
-}
-
-describe("backend context api ", () => {
- it("should use new token after updating the instance token in the settings as user", async () => {
- const env = new ApiMockEnvironment();
-
- const hookBehavior = await tests.hookBehaveLikeThis(
- () => {
- const instance = useInstanceAPI();
- const management = useManagementAPI("default");
- const admin = useAdminAPI();
-
- return { instance, management, admin };
- },
- {},
- [
- ({ instance, management, admin }) => {
- env.addRequestExpectation(API_UPDATE_INSTANCE_AUTH_BY_ID("default"), {
- request: {
- method: "token",
- token: "another_token",
- },
- response: {
- name: "instance_name",
- } as MerchantBackend.Instances.QueryInstancesResponse,
- });
- env.addRequestExpectation(API_NEW_LOGIN, {
- auth: "another_token",
- request: {
- scope: "write",
- duration: {
- "d_us": "forever",
- },
- refreshable: true,
- },
-
- });
-
- management.setNewAccessToken(undefined,"another_token" as AccessToken);
- },
- ({ instance, management, admin }) => {
- expect(env.assertJustExpectedRequestWereMade()).deep.eq({
- result: "ok",
- });
-
- env.addRequestExpectation(API_CREATE_INSTANCE, {
- // auth: "another_token",
- request: {
- id: "new_instance_id",
- } as MerchantBackend.Instances.InstanceConfigurationMessage,
- });
-
- admin.createInstance({
- id: "new_instance_id",
- } as MerchantBackend.Instances.InstanceConfigurationMessage);
- },
- ],
- env.buildTestingContext(),
- );
-
- expect(hookBehavior).deep.eq({ result: "ok" });
- expect(env.assertJustExpectedRequestWereMade()).deep.eq({ result: "ok" });
- });
-
- it("should use new token after updating the instance token in the settings as admin", async () => {
- const env = new ApiMockEnvironment();
-
- const hookBehavior = await tests.hookBehaveLikeThis(
- () => {
- const instance = useInstanceAPI();
- const management = useManagementAPI("default");
- const admin = useAdminAPI();
-
- return { instance, management, admin };
- },
- {},
- [
- ({ instance, management, admin }) => {
- env.addRequestExpectation(API_UPDATE_CURRENT_INSTANCE_AUTH, {
- request: {
- method: "token",
- token: "another_token",
- },
- response: {
- name: "instance_name",
- } as MerchantBackend.Instances.QueryInstancesResponse,
- });
- env.addRequestExpectation(API_NEW_LOGIN, {
- auth: "another_token",
- request: {
- scope: "write",
- duration: {
- "d_us": "forever",
- },
- refreshable: true,
- },
- });
- instance.setNewAccessToken(undefined, "another_token" as AccessToken);
- },
- ({ instance, management, admin }) => {
- expect(env.assertJustExpectedRequestWereMade()).deep.eq({
- result: "ok",
- });
-
- env.addRequestExpectation(API_CREATE_INSTANCE, {
- // auth: "another_token",
- request: {
- id: "new_instance_id",
- } as MerchantBackend.Instances.InstanceConfigurationMessage,
- });
-
- admin.createInstance({
- id: "new_instance_id",
- } as MerchantBackend.Instances.InstanceConfigurationMessage);
- },
- ],
- env.buildTestingContext(),
- );
-
- expect(hookBehavior).deep.eq({ result: "ok" });
- expect(env.assertJustExpectedRequestWereMade()).deep.eq({ result: "ok" });
- });
-});
diff --git a/packages/auditor-backoffice-ui/src/context/backend.ts b/packages/auditor-backoffice-ui/src/context/backend.ts
index b13b92c42..ce321c3e6 100644
--- a/packages/auditor-backoffice-ui/src/context/backend.ts
+++ b/packages/auditor-backoffice-ui/src/context/backend.ts
@@ -17,54 +17,54 @@
/**
*
* @author Sebastian Javier Marchano (sebasjm)
+ * @author Nic Eigel
*/
-import { useMemoryStorage } from "@gnu-taler/web-util/browser";
import { createContext, h, VNode } from "preact";
import { useContext } from "preact/hooks";
-import { LoginToken } from "../declaration.js";
-import { useBackendDefaultToken, useBackendURL } from "../hooks/index.js";
+import { useBackendURL } from "../hooks/index.js";
interface BackendContextType {
- url: string,
- alreadyTriedLogin: boolean;
- token?: LoginToken;
- updateToken: (token: LoginToken | undefined) => void;
+ url: string,
}
const BackendContext = createContext<BackendContextType>({
- url: "",
- alreadyTriedLogin: false,
- token: undefined,
- updateToken: () => null,
+ url: "",
});
function useBackendContextState(
- defaultUrl?: string,
+ defaultUrl?: string,
): BackendContextType {
-const [url] = useBackendURL(defaultUrl);
- //const url = "http://localhost:8081";
- const [token, updateToken] = useBackendDefaultToken();
-
- return {
- url,
- token,
- alreadyTriedLogin: token !== undefined,
- updateToken,
- };
+ const [url] = useBackendURL(defaultUrl);
+
+ return {
+ url,
+ };
}
export const BackendContextProvider = ({
- children,
- defaultUrl,
-}: {
- children: any;
- defaultUrl?: string;
+ children,
+ defaultUrl,
+ }: {
+ children: any;
+ defaultUrl?: string;
}): VNode => {
- const value = useBackendContextState(defaultUrl);
+ const value = useBackendContextState(defaultUrl);
- return h(BackendContext.Provider, { value, children });
+ return h(BackendContext.Provider, { value, children });
};
+
+
export const useBackendContext = (): BackendContextType =>
- useContext(BackendContext);
+ useContext(BackendContext);
+
+interface BackendTokenType {
+ token: string;
+}
+
+const BackendTokenContext = createContext<BackendTokenType>({} as any);
+
+export const BackendTokenContextProvider = BackendTokenContext.Provider;
+
+export const useBackendTokenContext = (): BackendTokenType => useContext(BackendTokenContext); \ No newline at end of file
diff --git a/packages/auditor-backoffice-ui/src/context/config.ts b/packages/auditor-backoffice-ui/src/context/config.ts
index def45ea64..58ee5a594 100644
--- a/packages/auditor-backoffice-ui/src/context/config.ts
+++ b/packages/auditor-backoffice-ui/src/context/config.ts
@@ -1,6 +1,6 @@
/*
This file is part of GNU Taler
- (C) 2021-2024 Taler Systems S.A.
+ (C) 2021-2023 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
@@ -21,12 +21,9 @@
import { createContext } from "preact";
import { useContext } from "preact/hooks";
+import { AuditorBackend } from "../declaration.js";
-interface Type {
- currency: string;
- version: string;
-}
-const Context = createContext<Type>(null!);
+const Context = createContext<AuditorBackend.VersionResponse>(null!);
export const ConfigContextProvider = Context.Provider;
-export const useConfigContext = (): Type => useContext(Context);
+export const useConfigContext = (): AuditorBackend.VersionResponse => useContext(Context);
diff --git a/packages/auditor-backoffice-ui/src/context/instance.ts b/packages/auditor-backoffice-ui/src/context/entity.ts
index 5800ade7e..8181931c4 100644
--- a/packages/auditor-backoffice-ui/src/context/instance.ts
+++ b/packages/auditor-backoffice-ui/src/context/entity.ts
@@ -1,6 +1,6 @@
/*
This file is part of GNU Taler
- (C) 2021-2024 Taler Systems S.A.
+ (C) 2021-2023 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
@@ -17,20 +17,31 @@
/**
*
* @author Sebastian Javier Marchano (sebasjm)
+ * @author Nic Eigel
*/
import { createContext } from "preact";
import { useContext } from "preact/hooks";
-import { LoginToken } from "../declaration.js";
-interface Type {
- id: string;
- token?: LoginToken;
- admin?: boolean;
- changeToken: (t?: LoginToken) => void;
+interface EntityType {
+ title: string;
+ path: string;
+ endpoint: string;
+ entity: any;
}
-const Context = createContext<Type>({} as any);
+const EntityContext = createContext<EntityType>({} as any);
-export const InstanceContextProvider = Context.Provider;
-export const useInstanceContext = (): Type => useContext(Context);
+export const EntityContextProvider = EntityContext.Provider;
+
+export const useEntityContext = (): EntityType => useContext(EntityContext);
+
+interface EntityDataType {
+ data: any;
+}
+
+const EntityDataContext = createContext<EntityDataType>({} as any);
+
+export const EntityDataContextProvider = EntityDataContext.Provider;
+
+export const useEntityDataContext = (): EntityDataType => useContext(EntityDataContext);