aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/anastasis-core/src/crypto.ts16
-rw-r--r--packages/anastasis-core/src/index.ts32
-rw-r--r--packages/anastasis-core/src/provider-types.ts18
-rw-r--r--packages/anastasis-core/src/reducer-types.ts16
-rw-r--r--packages/anastasis-webui/preact.config.js30
-rw-r--r--packages/anastasis-webui/src/components/menu/NavigationBar.tsx8
-rw-r--r--packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts26
-rw-r--r--packages/taler-wallet-webextension/src/context/devContext.ts23
8 files changed, 125 insertions, 44 deletions
diff --git a/packages/anastasis-core/src/crypto.ts b/packages/anastasis-core/src/crypto.ts
index 37e8c4f54..9f412c6dc 100644
--- a/packages/anastasis-core/src/crypto.ts
+++ b/packages/anastasis-core/src/crypto.ts
@@ -1,3 +1,19 @@
+/*
+ This file is part of GNU Anastasis
+ (C) 2021-2022 Anastasis SARL
+
+ GNU Anastasis is free software; you can redistribute it and/or modify it under the
+ terms of the GNU Affero General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Anastasis 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 Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with
+ GNU Anastasis; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
import {
canonicalJson,
decodeCrock,
diff --git a/packages/anastasis-core/src/index.ts b/packages/anastasis-core/src/index.ts
index 5a9199e02..542e7eafb 100644
--- a/packages/anastasis-core/src/index.ts
+++ b/packages/anastasis-core/src/index.ts
@@ -74,6 +74,7 @@ import {
DiscoveryResult,
PolicyMetaInfo,
ChallengeInfo,
+ AggregatedPolicyMetaInfo,
} from "./reducer-types.js";
import fetchPonyfill from "fetch-ponyfill";
import {
@@ -1451,6 +1452,37 @@ async function updateSecretExpiration(
});
}
+export function mergeDiscoveryAggregate(
+ newPolicies: PolicyMetaInfo[],
+ oldAgg: AggregatedPolicyMetaInfo[],
+): AggregatedPolicyMetaInfo[] {
+ const aggregatedPolicies: AggregatedPolicyMetaInfo[] = [...oldAgg] ?? [];
+ const polHashToIndex: Record<string, number> = {};
+ for (const pol of newPolicies) {
+ const oldIndex = polHashToIndex[pol.policy_hash];
+ if (oldIndex != null) {
+ aggregatedPolicies[oldIndex].providers.push({
+ provider_url: pol.provider_url,
+ version: pol.version,
+ });
+ } else {
+ aggregatedPolicies.push({
+ attribute_mask: pol.attribute_mask,
+ policy_hash: pol.policy_hash,
+ providers: [
+ {
+ provider_url: pol.provider_url,
+ version: pol.version,
+ },
+ ],
+ secret_name: pol.secret_name,
+ });
+ polHashToIndex[pol.policy_hash] = aggregatedPolicies.length - 1;
+ }
+ }
+ return aggregatedPolicies;
+}
+
const backupTransitions: Record<
BackupStates,
Transition<ReducerStateBackup>
diff --git a/packages/anastasis-core/src/provider-types.ts b/packages/anastasis-core/src/provider-types.ts
index fe6292b02..b788f629d 100644
--- a/packages/anastasis-core/src/provider-types.ts
+++ b/packages/anastasis-core/src/provider-types.ts
@@ -1,7 +1,21 @@
+/*
+ This file is part of GNU Anastasis
+ (C) 2021-2022 Anastasis SARL
+
+ GNU Anastasis is free software; you can redistribute it and/or modify it under the
+ terms of the GNU Affero General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Anastasis 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 Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with
+ GNU Anastasis; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
import {
- Amounts,
AmountString,
- TalerProtocolDuration,
TalerProtocolTimestamp,
} from "@gnu-taler/taler-util";
diff --git a/packages/anastasis-core/src/reducer-types.ts b/packages/anastasis-core/src/reducer-types.ts
index 47238cd3f..7e8d4da25 100644
--- a/packages/anastasis-core/src/reducer-types.ts
+++ b/packages/anastasis-core/src/reducer-types.ts
@@ -1,3 +1,19 @@
+/*
+ This file is part of GNU Anastasis
+ (C) 2021-2022 Anastasis SARL
+
+ GNU Anastasis is free software; you can redistribute it and/or modify it under the
+ terms of the GNU Affero General Public License as published by the Free Software
+ Foundation; either version 3, or (at your option) any later version.
+
+ GNU Anastasis 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 Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License along with
+ GNU Anastasis; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
+ */
+
import {
AmountString,
buildCodecForObject,
diff --git a/packages/anastasis-webui/preact.config.js b/packages/anastasis-webui/preact.config.js
index 8d6da1911..f9a8d6cba 100644
--- a/packages/anastasis-webui/preact.config.js
+++ b/packages/anastasis-webui/preact.config.js
@@ -15,31 +15,31 @@
*/
/**
-*
-* @author Sebastian Javier Marchano (sebasjm)
-*/
+ *
+ * @author Sebastian Javier Marchano (sebasjm)
+ */
-import { DefinePlugin } from 'webpack';
+import { DefinePlugin } from "webpack";
-import pack from './package.json';
-import * as cp from 'child_process';
+import pack from "./package.json";
+import * as cp from "child_process";
-const commitHash = cp.execSync('git rev-parse --short HEAD').toString();
+const commitHash = cp.execSync("git rev-parse --short HEAD").toString();
export default {
webpack(config, env, helpers) {
// add __VERSION__ to be use in the html
config.plugins.push(
new DefinePlugin({
- 'process.env.__VERSION__': JSON.stringify(env.isProd ? pack.version : `dev-${commitHash}`),
+ "process.env.__VERSION__": JSON.stringify(
+ env.isProd ? pack.version : `dev-${commitHash}`,
+ ),
}),
);
- const crittersWrapper = helpers.getPluginsByName(config, 'Critters')
+ const crittersWrapper = helpers.getPluginsByName(config, "Critters");
if (crittersWrapper && crittersWrapper.length > 0) {
- const [{ index }] = crittersWrapper
- config.plugins.splice(index, 1)
+ const [{ index }] = crittersWrapper;
+ config.plugins.splice(index, 1);
}
-
- }
-}
-
+ },
+};
diff --git a/packages/anastasis-webui/src/components/menu/NavigationBar.tsx b/packages/anastasis-webui/src/components/menu/NavigationBar.tsx
index bc6d923d7..650ebd991 100644
--- a/packages/anastasis-webui/src/components/menu/NavigationBar.tsx
+++ b/packages/anastasis-webui/src/components/menu/NavigationBar.tsx
@@ -51,6 +51,14 @@ export function NavigationBar({ onMobileMenu, title }: Props): VNode {
>
Report a bug
</a>
+ <a
+ style={{
+ alignSelf: "center",
+ padding: "0.5em",
+ }}
+ >
+ Settings
+ </a>
{/* <a
role="button"
class="navbar-burger"
diff --git a/packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts b/packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts
index 321cf3f0a..b1c17eb96 100644
--- a/packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts
+++ b/packages/anastasis-webui/src/hooks/use-anastasis-reducer.ts
@@ -6,6 +6,7 @@ import {
DiscoveryCursor,
getBackupStartState,
getRecoveryStartState,
+ mergeDiscoveryAggregate,
PolicyMetaInfo,
RecoveryStates,
reduceAction,
@@ -255,30 +256,7 @@ export function useAnastasisReducer(): AnastasisReducerApi {
},
async discoverStart(): Promise<void> {
const res = await discoverPolicies(this.currentReducerState!, undefined);
- const aggregatedPolicies: AggregatedPolicyMetaInfo[] = [];
- const polHashToIndex: Record<string, number> = {};
- for (const pol of res.policies) {
- const oldIndex = polHashToIndex[pol.policy_hash];
- if (oldIndex != null) {
- aggregatedPolicies[oldIndex].providers.push({
- provider_url: pol.provider_url,
- version: pol.version,
- });
- } else {
- aggregatedPolicies.push({
- attribute_mask: pol.attribute_mask,
- policy_hash: pol.policy_hash,
- providers: [
- {
- provider_url: pol.provider_url,
- version: pol.version,
- },
- ],
- secret_name: pol.secret_name,
- });
- polHashToIndex[pol.policy_hash] = aggregatedPolicies.length - 1;
- }
- }
+ const aggregatedPolicies = mergeDiscoveryAggregate(res.policies, []);
setAnastasisState({
...anastasisState,
discoveryState: {
diff --git a/packages/taler-wallet-webextension/src/context/devContext.ts b/packages/taler-wallet-webextension/src/context/devContext.ts
index edd52c11d..1ce483d8d 100644
--- a/packages/taler-wallet-webextension/src/context/devContext.ts
+++ b/packages/taler-wallet-webextension/src/context/devContext.ts
@@ -34,14 +34,31 @@ const Context = createContext<Type>({
export const useDevContext = (): Type => useContext(Context);
-export const DevContextProviderForTesting = ({ value, children }: { value: boolean, children: any }): VNode => {
- return h(Context.Provider, { value: { devMode: value, toggleDevMode: () => { null } }, children });
+export const DevContextProviderForTesting = ({
+ value,
+ children,
+}: {
+ value: boolean;
+ children: any;
+}): VNode => {
+ return h(Context.Provider, {
+ value: {
+ devMode: value,
+ toggleDevMode: () => {
+ null;
+ },
+ },
+ children,
+ });
};
export const DevContextProvider = ({ children }: { children: any }): VNode => {
const [value, setter] = useLocalStorage("devMode");
const devMode = value === "true";
const toggleDevMode = (): void => setter((v) => (!v ? "true" : undefined));
- children = children.length === 1 && typeof children === "function" ? children({ devMode }) : children;
+ children =
+ children.length === 1 && typeof children === "function"
+ ? children({ devMode })
+ : children;
return h(Context.Provider, { value: { devMode, toggleDevMode }, children });
};