aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core
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 /packages/taler-wallet-core
parentcd9c3a143bc1ad88ce77d53c212a90f60660069a (diff)
downloadwallet-core-1fcb55c84dc541e64ebbb2d16156bab275ff16c4.tar.xz
remove ToS storage
Diffstat (limited to 'packages/taler-wallet-core')
-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
4 files changed, 10 insertions, 129 deletions
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,