new exchange-added notifiaction and including tos information in the wxApi.listExchange api
This commit is contained in:
parent
b3b3c21acb
commit
f07436aa49
@ -45,6 +45,7 @@ export enum NotificationType {
|
||||
RefundQueried = "refund-queried",
|
||||
RefundFinished = "refund-finished",
|
||||
ExchangeOperationError = "exchange-operation-error",
|
||||
ExchangeAdded = "exchange-added",
|
||||
RefreshOperationError = "refresh-operation-error",
|
||||
RecoupOperationError = "recoup-operation-error",
|
||||
RefundApplyOperationError = "refund-apply-error",
|
||||
@ -150,6 +151,10 @@ export interface RefundFinishedNotification {
|
||||
type: NotificationType.RefundFinished;
|
||||
}
|
||||
|
||||
export interface ExchangeAddedNotification {
|
||||
type: NotificationType.ExchangeAdded;
|
||||
}
|
||||
|
||||
export interface ExchangeOperationErrorNotification {
|
||||
type: NotificationType.ExchangeOperationError;
|
||||
error: TalerErrorDetails;
|
||||
@ -243,6 +248,7 @@ export type WalletNotification =
|
||||
| BackupOperationErrorNotification
|
||||
| WithdrawOperationErrorNotification
|
||||
| ReserveOperationErrorNotification
|
||||
| ExchangeAddedNotification
|
||||
| ExchangeOperationErrorNotification
|
||||
| RefreshOperationErrorNotification
|
||||
| RefundStatusOperationErrorNotification
|
||||
|
@ -523,17 +523,32 @@ export interface ExchangesListRespose {
|
||||
exchanges: ExchangeListItem[];
|
||||
}
|
||||
|
||||
export interface ExchangeTos {
|
||||
acceptedVersion?: string;
|
||||
currentVersion?: string;
|
||||
contentType?: string;
|
||||
content?: string;
|
||||
}
|
||||
export interface ExchangeListItem {
|
||||
exchangeBaseUrl: string;
|
||||
currency: string;
|
||||
paytoUris: string[];
|
||||
tos: ExchangeTos;
|
||||
}
|
||||
|
||||
const codecForExchangeTos = (): Codec<ExchangeTos> => buildCodecForObject<ExchangeTos>()
|
||||
.property("acceptedVersion", codecOptional(codecForString()))
|
||||
.property("currentVersion", codecOptional(codecForString()))
|
||||
.property("contentType", codecOptional(codecForString()))
|
||||
.property("content", codecOptional(codecForString()))
|
||||
.build("ExchangeTos")
|
||||
|
||||
export const codecForExchangeListItem = (): Codec<ExchangeListItem> =>
|
||||
buildCodecForObject<ExchangeListItem>()
|
||||
.property("currency", codecForString())
|
||||
.property("exchangeBaseUrl", codecForString())
|
||||
.property("paytoUris", codecForList(codecForString()))
|
||||
.property("tos", codecForExchangeTos())
|
||||
.build("ExchangeListItem");
|
||||
|
||||
export const codecForExchangesListResponse = (): Codec<ExchangesListRespose> =>
|
||||
|
@ -494,11 +494,11 @@ async function updateExchangeFromUrlImpl(
|
||||
tosFound !== undefined
|
||||
? tosFound
|
||||
: await downloadExchangeWithTermsOfService(
|
||||
baseUrl,
|
||||
ws.http,
|
||||
timeout,
|
||||
"text/plain",
|
||||
);
|
||||
baseUrl,
|
||||
ws.http,
|
||||
timeout,
|
||||
"text/plain",
|
||||
);
|
||||
|
||||
let recoupGroupId: string | undefined = undefined;
|
||||
|
||||
@ -657,6 +657,9 @@ async function updateExchangeFromUrlImpl(
|
||||
|
||||
logger.trace("done updating exchange info in database");
|
||||
|
||||
ws.notify({
|
||||
type: NotificationType.ExchangeAdded,
|
||||
});
|
||||
return {
|
||||
exchange: updated.exchange,
|
||||
exchangeDetails: updated.exchangeDetails,
|
||||
|
@ -218,7 +218,7 @@ export function selectWithdrawalDenominations(
|
||||
for (const d of denoms) {
|
||||
let count = 0;
|
||||
const cost = Amounts.add(d.value, d.feeWithdraw).amount;
|
||||
for (;;) {
|
||||
for (; ;) {
|
||||
if (Amounts.cmp(remaining, cost) < 0) {
|
||||
break;
|
||||
}
|
||||
@ -746,8 +746,7 @@ export async function updateWithdrawalDenoms(
|
||||
denom.verificationStatus === DenominationVerificationStatus.Unverified
|
||||
) {
|
||||
logger.trace(
|
||||
`Validating denomination (${current + 1}/${
|
||||
denominations.length
|
||||
`Validating denomination (${current + 1}/${denominations.length
|
||||
}) signature of ${denom.denomPubHash}`,
|
||||
);
|
||||
const valid = await ws.cryptoApi.isValidDenom(
|
||||
@ -997,7 +996,7 @@ export async function getExchangeWithdrawalInfo(
|
||||
) {
|
||||
console.warn(
|
||||
`wallet's support for exchange protocol version ${WALLET_EXCHANGE_PROTOCOL_VERSION} might be outdated ` +
|
||||
`(exchange has ${exchangeDetails.protocolVersion}), checking for updates`,
|
||||
`(exchange has ${exchangeDetails.protocolVersion}), checking for updates`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1075,6 +1074,12 @@ export async function getWithdrawalDetailsForUri(
|
||||
exchanges.push({
|
||||
exchangeBaseUrl: details.exchangeBaseUrl,
|
||||
currency: details.currency,
|
||||
tos: {
|
||||
acceptedVersion: details.termsOfServiceAcceptedEtag,
|
||||
currentVersion: details.termsOfServiceLastEtag,
|
||||
contentType: details.termsOfServiceContentType,
|
||||
content: details.termsOfServiceText,
|
||||
},
|
||||
paytoUris: details.wireInfo.accounts.map((x) => x.payto_uri),
|
||||
});
|
||||
}
|
||||
|
@ -513,9 +513,16 @@ async function getExchanges(
|
||||
if (!exchangeDetails) {
|
||||
continue;
|
||||
}
|
||||
|
||||
exchanges.push({
|
||||
exchangeBaseUrl: r.baseUrl,
|
||||
currency,
|
||||
tos: {
|
||||
acceptedVersion: exchangeDetails.termsOfServiceAcceptedEtag,
|
||||
currentVersion: exchangeDetails.termsOfServiceLastEtag,
|
||||
contentType: exchangeDetails.termsOfServiceContentType,
|
||||
content: exchangeDetails.termsOfServiceText,
|
||||
},
|
||||
paytoUris: exchangeDetails.wireInfo.accounts.map((x) => x.payto_uri),
|
||||
});
|
||||
}
|
||||
@ -988,7 +995,7 @@ export async function handleCoreApiRequest(
|
||||
try {
|
||||
logger.error("Caught unexpected exception:");
|
||||
logger.error(e.stack);
|
||||
} catch (e) {}
|
||||
} catch (e) { }
|
||||
return {
|
||||
type: "error",
|
||||
operation,
|
||||
|
Loading…
Reference in New Issue
Block a user