wallet-core: sort transactions ASC by default to not break tests
This commit is contained in:
parent
6a4e0ffd85
commit
529993da2f
@ -1006,8 +1006,8 @@ export class WithdrawOperationStatusResponse {
|
||||
/**
|
||||
* Response from the merchant.
|
||||
*/
|
||||
export class TipPickupGetResponse {
|
||||
tip_amount: string;
|
||||
export class RewardPickupGetResponse {
|
||||
reward_amount: string;
|
||||
|
||||
exchange_url: string;
|
||||
|
||||
@ -1566,9 +1566,9 @@ export const codecForWithdrawOperationStatusResponse =
|
||||
.property("wire_types", codecForList(codecForString()))
|
||||
.build("WithdrawOperationStatusResponse");
|
||||
|
||||
export const codecForTipPickupGetResponse = (): Codec<TipPickupGetResponse> =>
|
||||
buildCodecForObject<TipPickupGetResponse>()
|
||||
.property("tip_amount", codecForString())
|
||||
export const codecForRewardPickupGetResponse = (): Codec<RewardPickupGetResponse> =>
|
||||
buildCodecForObject<RewardPickupGetResponse>()
|
||||
.property("reward_amount", codecForString())
|
||||
.property("exchange_url", codecForString())
|
||||
.property("next_url", codecOptional(codecForString()))
|
||||
.property("expiration", codecForTimestamp)
|
||||
|
@ -62,6 +62,13 @@ export interface TransactionsRequest {
|
||||
*/
|
||||
search?: string;
|
||||
|
||||
/**
|
||||
* Sort order of the transaction items.
|
||||
* By default, items are sorted ascending by their
|
||||
* main timestamp.
|
||||
*/
|
||||
sort?: "ascending" | "descending",
|
||||
|
||||
/**
|
||||
* If true, include all refreshes in the transactions list.
|
||||
*/
|
||||
|
@ -23,7 +23,7 @@ import {
|
||||
Amounts,
|
||||
BlindedDenominationSignature,
|
||||
codecForMerchantTipResponseV2,
|
||||
codecForTipPickupGetResponse,
|
||||
codecForRewardPickupGetResponse,
|
||||
CoinStatus,
|
||||
DenomKeyType,
|
||||
encodeCrock,
|
||||
@ -168,11 +168,11 @@ export async function prepareTip(
|
||||
const merchantResp = await ws.http.fetch(tipStatusUrl.href);
|
||||
const tipPickupStatus = await readSuccessResponseJsonOrThrow(
|
||||
merchantResp,
|
||||
codecForTipPickupGetResponse(),
|
||||
codecForRewardPickupGetResponse(),
|
||||
);
|
||||
logger.trace(`status ${j2s(tipPickupStatus)}`);
|
||||
|
||||
const amount = Amounts.parseOrThrow(tipPickupStatus.tip_amount);
|
||||
const amount = Amounts.parseOrThrow(tipPickupStatus.reward_amount);
|
||||
|
||||
logger.trace("new tip, creating tip record");
|
||||
await updateExchangeFromUrl(ws, tipPickupStatus.exchange_url);
|
||||
|
@ -1290,9 +1290,16 @@ export async function getTransactions(
|
||||
const txPending = transactions.filter((x) => isPending(x));
|
||||
const txNotPending = transactions.filter((x) => !isPending(x));
|
||||
|
||||
let sortSign: number;
|
||||
if (transactionsRequest?.sort == "descending") {
|
||||
sortSign = -1;
|
||||
} else {
|
||||
sortSign = 1;
|
||||
}
|
||||
|
||||
const txCmp = (h1: Transaction, h2: Transaction) => {
|
||||
// Order transactions by timestamp. Newest transactions come first.
|
||||
const tsCmp = -AbsoluteTime.cmp(
|
||||
const tsCmp = AbsoluteTime.cmp(
|
||||
AbsoluteTime.fromPreciseTimestamp(h1.timestamp),
|
||||
AbsoluteTime.fromPreciseTimestamp(h2.timestamp),
|
||||
);
|
||||
@ -1300,7 +1307,7 @@ export async function getTransactions(
|
||||
if (tsCmp === 0) {
|
||||
return Math.sign(txOrder[h1.type] - txOrder[h2.type]);
|
||||
}
|
||||
return tsCmp;
|
||||
return sortSign * tsCmp;
|
||||
};
|
||||
|
||||
txPending.sort(txCmp);
|
||||
|
Loading…
Reference in New Issue
Block a user