aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-09-06 18:43:37 +0200
committerFlorian Dold <florian@dold.me>2023-09-06 18:43:37 +0200
commit1fcb55c84dc541e64ebbb2d16156bab275ff16c4 (patch)
tree2e0b3e3604cf70989b34c1b34f77ccf0e08d2060
parentcd9c3a143bc1ad88ce77d53c212a90f60660069a (diff)
downloadwallet-core-1fcb55c84dc541e64ebbb2d16156bab275ff16c4.tar.xz
remove ToS storage
-rw-r--r--packages/taler-util/src/wallet-types.ts17
-rw-r--r--packages/taler-wallet-core/src/db.ts7
-rw-r--r--packages/taler-wallet-core/src/operations/exchanges.ts45
-rw-r--r--packages/taler-wallet-core/src/operations/withdraw.ts1
-rw-r--r--packages/taler-wallet-core/src/wallet.ts86
-rw-r--r--packages/taler-wallet-webextension/src/cta/Withdraw/state.ts1
6 files changed, 10 insertions, 147 deletions
diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts
index 353fb900d..0d78b405a 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -1076,13 +1076,6 @@ export interface KnownBankAccounts {
accounts: KnownBankAccountsInfo[];
}
-export interface ExchangeTosStatusDetails {
- acceptedVersion?: string;
- currentVersion?: string;
- contentType?: string;
- content?: string;
-}
-
/**
* Wire fee for one wire method
*/
@@ -1253,7 +1246,6 @@ export interface ExchangeFullDetails {
exchangeBaseUrl: string;
currency: string;
paytoUris: string[];
- tos: ExchangeTosStatusDetails;
auditors: ExchangeAuditor[];
wireInfo: WireInfo;
denomFees: DenomOperationMap<FeeDescription[]>;
@@ -1317,14 +1309,6 @@ const codecForExchangeAuditor = (): Codec<ExchangeAuditor> =>
.property("denomination_keys", codecForList(codecForAuditorDenomSig()))
.build("codecForExchangeAuditor");
-const codecForExchangeTos = (): Codec<ExchangeTosStatusDetails> =>
- buildCodecForObject<ExchangeTosStatusDetails>()
- .property("acceptedVersion", codecOptional(codecForString()))
- .property("currentVersion", codecOptional(codecForString()))
- .property("contentType", codecOptional(codecForString()))
- .property("content", codecOptional(codecForString()))
- .build("ExchangeTos");
-
export const codecForFeeDescriptionPair = (): Codec<FeeDescriptionPair> =>
buildCodecForObject<FeeDescriptionPair>()
.property("group", codecForString())
@@ -1357,7 +1341,6 @@ export const codecForExchangeFullDetails = (): Codec<ExchangeFullDetails> =>
.property("currency", codecForString())
.property("exchangeBaseUrl", codecForString())
.property("paytoUris", codecForList(codecForString()))
- .property("tos", codecForExchangeTos())
.property("auditors", codecForList(codecForExchangeAuditor()))
.property("wireInfo", codecForWireInfo())
.property("denomFees", codecForFeesByOperations())
diff --git a/packages/taler-wallet-core/src/db.ts b/packages/taler-wallet-core/src/db.ts
index 4c0a6168d..2c7673267 100644
--- a/packages/taler-wallet-core/src/db.ts
+++ b/packages/taler-wallet-core/src/db.ts
@@ -2382,13 +2382,6 @@ export const WalletStoresV1 = {
byReservePub: describeIndex("byReservePub", "reservePub", {}),
},
),
- exchangeTos: describeStore(
- "exchangeTos",
- describeContents<ExchangeTosRecord>({
- keyPath: ["exchangeBaseUrl", "etag"],
- }),
- {},
- ),
config: describeStore(
"config",
describeContents<ConfigRecord>({ keyPath: "key" }),
diff --git a/packages/taler-wallet-core/src/operations/exchanges.ts b/packages/taler-wallet-core/src/operations/exchanges.ts
index 690bc3cec..13e89b16c 100644
--- a/packages/taler-wallet-core/src/operations/exchanges.ts
+++ b/packages/taler-wallet-core/src/operations/exchanges.ts
@@ -158,35 +158,6 @@ getExchangeDetails.makeContext = (db: DbAccess<typeof WalletStoresV1>) =>
db.mktx((x) => [x.exchanges, x.exchangeDetails]);
/**
- * Update the database based on the download of the terms of service.
- */
-export async function updateExchangeTermsOfService(
- ws: InternalWalletState,
- exchangeBaseUrl: string,
- tos: ExchangeTosDownloadResult,
-): Promise<void> {
- await ws.db
- .mktx((x) => [x.exchanges, x.exchangeTos, x.exchangeDetails])
- .runReadWrite(async (tx) => {
- const d = await getExchangeDetails(tx, exchangeBaseUrl);
- let tosRecord = await tx.exchangeTos.get([exchangeBaseUrl, tos.tosEtag]);
- if (!tosRecord) {
- tosRecord = {
- etag: tos.tosEtag,
- exchangeBaseUrl,
- termsOfServiceContentType: tos.tosContentType,
- termsOfServiceText: tos.tosText,
- };
- await tx.exchangeTos.put(tosRecord);
- }
- if (d) {
- d.tosCurrentEtag = tos.tosEtag;
- await tx.exchangeDetails.put(d);
- }
- });
-}
-
-/**
* Mark a ToS version as accepted by the user.
*
* @param etag version of the ToS to accept, or current ToS version of not given
@@ -740,7 +711,6 @@ export async function updateExchangeFromUrlHandler(
const updated = await ws.db
.mktx((x) => [
x.exchanges,
- x.exchangeTos,
x.exchangeDetails,
x.exchangeSignKeys,
x.denominations,
@@ -801,21 +771,6 @@ export async function updateExchangeFromUrlHandler(
const drRowId = await tx.exchangeDetails.put(newDetails);
checkDbInvariant(typeof drRowId.key === "number");
- let tosRecord = await tx.exchangeTos.get([
- exchangeBaseUrl,
- tosDownload.tosEtag,
- ]);
-
- if (!tosRecord || tosRecord.etag !== existingTosAccepted?.etag) {
- tosRecord = {
- etag: tosDownload.tosEtag,
- exchangeBaseUrl,
- termsOfServiceContentType: tosDownload.tosContentType,
- termsOfServiceText: tosDownload.tosText,
- };
- await tx.exchangeTos.put(tosRecord);
- }
-
for (const sk of keysInfo.signingKeys) {
// FIXME: validate signing keys before inserting them
await tx.exchangeSignKeys.put({
diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts
index 2b76613e7..b2b25144d 100644
--- a/packages/taler-wallet-core/src/operations/withdraw.ts
+++ b/packages/taler-wallet-core/src/operations/withdraw.ts
@@ -1856,7 +1856,6 @@ export async function getWithdrawalDetailsForUri(
.mktx((x) => [
x.exchanges,
x.exchangeDetails,
- x.exchangeTos,
x.denominations,
x.operationRetries,
])
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index 7a1bd5a4f..cb82a3a43 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -34,7 +34,6 @@ import {
Duration,
ExchangeDetailedResponse,
ExchangeListItem,
- ExchangeTosStatusDetails,
ExchangesListResponse,
FeeDescription,
GetExchangeTosResult,
@@ -202,7 +201,6 @@ import {
provideExchangeRecordInTx,
updateExchangeFromUrl,
updateExchangeFromUrlHandler,
- updateExchangeTermsOfService,
} from "./operations/exchanges.js";
import { getMerchantInfo } from "./operations/merchants.js";
import {
@@ -557,33 +555,6 @@ async function getExchangeTos(
): Promise<GetExchangeTosResult> {
// FIXME: download ToS in acceptable format if passed!
const { exchangeDetails } = await updateExchangeFromUrl(ws, exchangeBaseUrl);
- const tosDetails = await ws.db
- .mktx((x) => [x.exchangeTos])
- .runReadOnly(async (tx) => {
- return await getExchangeTosStatusDetails(tx, exchangeDetails);
- });
- const content = tosDetails.content;
- const currentEtag = tosDetails.currentVersion;
- const contentType = tosDetails.contentType;
- if (
- content === undefined ||
- currentEtag === undefined ||
- contentType === undefined
- ) {
- throw Error("exchange is in invalid state");
- }
- if (
- acceptedFormat &&
- acceptedFormat.findIndex((f) => f === contentType) !== -1
- ) {
- return {
- acceptedEtag: exchangeDetails.tosAccepted?.etag,
- currentEtag,
- content,
- contentType,
- tosStatus: getExchangeTosStatus(exchangeDetails),
- };
- }
const tosDownload = await downloadTosFromAcceptedFormat(
ws,
@@ -592,17 +563,15 @@ async function getExchangeTos(
acceptedFormat,
);
- if (tosDownload.tosContentType === contentType) {
- return {
- acceptedEtag: exchangeDetails.tosAccepted?.etag,
- currentEtag,
- content,
- contentType,
- tosStatus: getExchangeTosStatus(exchangeDetails),
- };
- }
-
- await updateExchangeTermsOfService(ws, exchangeBaseUrl, tosDownload);
+ await ws.db
+ .mktx((x) => [x.exchanges, x.exchangeDetails])
+ .runReadWrite(async (tx) => {
+ const d = await getExchangeDetails(tx, exchangeBaseUrl);
+ if (d) {
+ d.tosCurrentEtag = tosDownload.tosEtag;
+ await tx.exchangeDetails.put(d);
+ }
+ });
return {
acceptedEtag: exchangeDetails.tosAccepted?.etag,
@@ -683,32 +652,6 @@ async function forgetKnownBankAccounts(
return;
}
-async function getExchangeTosStatusDetails(
- tx: GetReadOnlyAccess<{ exchangeTos: typeof WalletStoresV1.exchangeTos }>,
- exchangeDetails: ExchangeDetailsRecord,
-): Promise<ExchangeTosStatusDetails> {
- let exchangeTos = await tx.exchangeTos.get([
- exchangeDetails.exchangeBaseUrl,
- exchangeDetails.tosCurrentEtag,
- ]);
-
- if (!exchangeTos) {
- exchangeTos = {
- etag: "not-available",
- termsOfServiceContentType: "text/plain",
- termsOfServiceText: "terms of service unavailable",
- exchangeBaseUrl: exchangeDetails.exchangeBaseUrl,
- };
- }
-
- return {
- acceptedVersion: exchangeDetails.tosAccepted?.etag,
- content: exchangeTos.termsOfServiceText,
- contentType: exchangeTos.termsOfServiceContentType,
- currentVersion: exchangeTos.etag,
- };
-}
-
async function getExchanges(
ws: InternalWalletState,
): Promise<ExchangesListResponse> {
@@ -717,7 +660,6 @@ async function getExchanges(
.mktx((x) => [
x.exchanges,
x.exchangeDetails,
- x.exchangeTos,
x.denominations,
x.operationRetries,
])
@@ -742,12 +684,7 @@ async function getExchangeDetailedInfo(
): Promise<ExchangeDetailedResponse> {
//TODO: should we use the forceUpdate parameter?
const exchange = await ws.db
- .mktx((x) => [
- x.exchanges,
- x.exchangeTos,
- x.exchangeDetails,
- x.denominations,
- ])
+ .mktx((x) => [x.exchanges, x.exchangeDetails, x.denominations])
.runReadOnly(async (tx) => {
const ex = await tx.exchanges.get(exchangeBaseurl);
const dp = ex?.detailsPointer;
@@ -769,8 +706,6 @@ async function getExchangeDetailedInfo(
return;
}
- const tos = await getExchangeTosStatusDetails(tx, exchangeDetails);
-
const denominations: DenominationInfo[] = denominationRecords.map((x) =>
DenominationRecord.toDenomInfo(x),
);
@@ -779,7 +714,6 @@ async function getExchangeDetailedInfo(
info: {
exchangeBaseUrl: ex.baseUrl,
currency,
- tos,
paytoUris: exchangeDetails.wireInfo.accounts.map((x) => x.payto_uri),
auditors: exchangeDetails.auditors,
wireInfo: exchangeDetails.wireInfo,
diff --git a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
index 72cabe5a4..a3855c2f4 100644
--- a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
@@ -23,7 +23,6 @@ import {
ExchangeTosStatus,
TalerError,
parseWithdrawExchangeUri,
- stringifyWithdrawUri,
} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { useEffect, useState } from "preact/hooks";