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