Skip to content

Commit 24627eb

Browse files
committed
fix: proper sorting of wallet entries
1 parent 4010226 commit 24627eb

File tree

2 files changed

+37
-28
lines changed

2 files changed

+37
-28
lines changed

packages/cosmic-swingset/lib/ag-solo/vats/lib-wallet.js

+19-17
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,21 @@ export async function makeWallet(
3939
const inboxState = new Map();
4040

4141
function getPursesState() {
42-
return JSON.stringify([...pursesState.values()]);
42+
const entries = [...pursesState.entries()];
43+
const values = entries
44+
.sort(([id1], [id2]) => id1 > id2)
45+
.map(([_id, value]) => value);
46+
47+
return JSON.stringify(values);
4348
}
4449

4550
function getInboxState() {
46-
return JSON.stringify([...inboxState.values()]);
51+
const entries = [...inboxState.entries()];
52+
const values = entries
53+
.sort(([id1], [id2]) => id1 > id2)
54+
.map(([_id, value]) => value);
55+
56+
return JSON.stringify(values);
4757
}
4858

4959
async function updatePursesState(pursePetname, purse) {
@@ -193,23 +203,16 @@ export async function makeWallet(
193203
return petnameToPurse.entries();
194204
}
195205

196-
function getPendingPublicIDsByOrigin(origin) {
197-
return idToOffer
198-
.values()
199-
.filter(
200-
offer =>
201-
offer.status === 'pending' &&
202-
offer.publicID &&
203-
offer.requestContext.origin === origin,
204-
)
205-
.map(offer => offer.publicID);
206-
}
207-
208-
function getOffers() {
206+
function getOffers({ status = 'accept', origin = null } = {}) {
209207
// return the offers sorted by id
210208
return idToOffer
211209
.entries()
212-
.filter(([_id, offer]) => offer.status === 'accept')
210+
.filter(
211+
([_id, offer]) =>
212+
(status === null || offer.status === status) &&
213+
(origin === null ||
214+
(offer.requestContext && offer.requestContext.origin === origin)),
215+
)
213216
.sort(([id1], [id2]) => id1 > id2)
214217
.map(([_id, offer]) => harden(offer));
215218
}
@@ -428,7 +431,6 @@ export async function makeWallet(
428431
cancelOffer,
429432
acceptOffer,
430433
getOffers,
431-
getPendingPublicIDsByOrigin,
432434
});
433435

434436
return wallet;

packages/cosmic-swingset/lib/ag-solo/vats/vat-wallet.js

+18-11
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ function build(E, _D, _log) {
6767
data: true,
6868
};
6969
}
70-
// TODO: Maybe rename to walletGetOffers
70+
71+
case 'walletGetOffers':
7172
case 'walletGetOfferDescriptions': {
7273
const result = await wallet.getOffers(data);
7374
return {
@@ -76,14 +77,6 @@ function build(E, _D, _log) {
7677
};
7778
}
7879

79-
case 'walletGetOfferPublicIDs': {
80-
const result = await wallet.getPendingPublicIDsByOrigin(meta.origin);
81-
return {
82-
type: 'walletOfferPublicIDs',
83-
data: result,
84-
};
85-
}
86-
8780
default: {
8881
return false;
8982
}
@@ -154,17 +147,31 @@ function build(E, _D, _log) {
154147
onClose(_obj, meta) {
155148
bridgeHandles.delete(meta.channelHandle);
156149
},
157-
onMessage(obj, meta) {
150+
151+
async onMessage(obj, meta) {
158152
const { type } = obj;
159153
switch (type) {
160154
case 'walletGetPurses':
161155
case 'walletAddOffer':
162-
case 'walletGetOfferDescriptions':
163156
// Override the origin since we got it from the bridge.
164157
return adminOnMessage(obj, {
165158
...meta,
166159
origin: obj.dappOrigin,
167160
});
161+
162+
case 'walletGetOffers': {
163+
const { status = null } = obj;
164+
// Override the origin since we got it from the bridge.
165+
const result = await wallet.getOffers({
166+
origin: obj.dappOrigin,
167+
status,
168+
});
169+
return {
170+
type: 'walletOfferDescriptions',
171+
data: result,
172+
};
173+
}
174+
168175
default:
169176
return Promise.resolve(false);
170177
}

0 commit comments

Comments
 (0)