From b48f329d9716204d5941c4c7b5e5b993aaf20972 Mon Sep 17 00:00:00 2001 From: woodser Date: Sun, 12 Sep 2021 11:08:18 -0400 Subject: [PATCH] can get the user's created offers --- README.md | 2 +- src/HavenoDaemon.test.tsx | 9 +++- src/HavenoDaemon.tsx | 88 +++++++++++++++++++++++++-------------- 3 files changed, 66 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 28d42955..a6866ab3 100644 --- a/README.md +++ b/README.md @@ -22,4 +22,4 @@ This application is a basic [create-react-app](https://github.com/facebook/creat 1. Copy grpc.proto and pb.proto from Haveno's [protobuf definitions](https://github.com/haveno-dex/haveno/tree/master/proto/src/main/proto) to ./config. 2. Install protobuf for your system, e.g. on mac: `brew install protobuf` -2. `./bin/build_protobuf.sh` \ No newline at end of file +3. `./bin/build_protobuf.sh` \ No newline at end of file diff --git a/src/HavenoDaemon.test.tsx b/src/HavenoDaemon.test.tsx index 711c4650..158d8ccb 100644 --- a/src/HavenoDaemon.test.tsx +++ b/src/HavenoDaemon.test.tsx @@ -20,7 +20,14 @@ test("Can get the user's balances", async () => { }); test("Can get offers", async() => { - let offers: HavenoOffer[] = await daemon.getOffers("SELL", "XMR"); + let offers: HavenoOffer[] = await daemon.getOffers("BUY"); + for (let offer of offers) { + testOffer(offer); + } +}); + +test("Can get the user's created offers", async() => { + let offers: HavenoOffer[] = await daemon.getMyOffers("SELL"); for (let offer of offers) { testOffer(offer); } diff --git a/src/HavenoDaemon.tsx b/src/HavenoDaemon.tsx index 3d9603d3..2c46f52e 100644 --- a/src/HavenoDaemon.tsx +++ b/src/HavenoDaemon.tsx @@ -68,51 +68,49 @@ class HavenoDaemon { } /** - * Get available offers. + * Get available offers to buy or sell XMR. * * @param {string} direction - one of "BUY" or "SELL" - * @param {string} currencyCode - the currency being bought or sold, e.g. "ETH" * * @return {HavenoOffer[]} available offers */ - async getOffers(direction: string, currencyCode: string): Promise { + async getOffers(direction: string): Promise { if (!this._offersClient) this._offersClient = new OffersClient(this._url); let request = new GetOffersRequest() .setDirection(direction) - .setCurrencycode(currencyCode); + .setCurrencycode("XMR"); let that = this; return new Promise(function(resolve, reject) { that._offersClient.getOffers(request, {password: that._password}, function(err: any, response: any) { if (err) reject(err); else { let offers: HavenoOffer[] = []; - for (let offer of response.getOffersList()) { - offers.push(new HavenoOffer( - offer.getId(), - offer.getDirection(), - offer.getPrice(), - offer.getUsemarketbasedprice(), - offer.getMarketpricemargin(), - offer.getAmount(), - offer.getMinamount(), - offer.getVolume(), - offer.getMinvolume(), - offer.getBuyersecuritydeposit(), - offer.getTriggerprice(), - offer.getIscurrencyformakerfeebtc(), - offer.getPaymentaccountid(), - offer.getPaymentmethodid(), - offer.getPaymentmethodshortname(), - offer.getBasecurrencycode(), - offer.getCountercurrencycode(), - offer.getDate(), - offer.getState(), - offer.getSellersecuritydeposit(), - offer.getOfferfeepaymenttxid(), - offer.getTxfee(), - offer.getMakerfee() - )); - } + for (let offer of response.getOffersList()) offers.push(grpcOfferToHavenoOffer(offer)); + resolve(offers); + } + }); + }); + } + + /** + * Get user's created offers to buy or sell XMR. + * + * @param {string} direction - one of "BUY" or "SELL" + * + * @return {HavenoOffer[]} created offers + */ + async getMyOffers(direction: string): Promise { + if (!this._offersClient) this._offersClient = new OffersClient(this._url); + let request = new GetOffersRequest() + .setDirection(direction) + .setCurrencycode("XMR"); + let that = this; + return new Promise(function(resolve, reject) { + that._offersClient.getMyOffers(request, {password: that._password}, function(err: any, response: any) { + if (err) reject(err); + else { + let offers: HavenoOffer[] = []; + for (let offer of response.getOffersList()) offers.push(grpcOfferToHavenoOffer(offer)); resolve(offers); } }); @@ -209,4 +207,32 @@ class HavenoOffer { } } +function grpcOfferToHavenoOffer(offer: any) { + return new HavenoOffer( + offer.getId(), + offer.getDirection(), + offer.getPrice(), + offer.getUsemarketbasedprice(), + offer.getMarketpricemargin(), + offer.getAmount(), + offer.getMinamount(), + offer.getVolume(), + offer.getMinvolume(), + offer.getBuyersecuritydeposit(), + offer.getTriggerprice(), + offer.getIscurrencyformakerfeebtc(), + offer.getPaymentaccountid(), + offer.getPaymentmethodid(), + offer.getPaymentmethodshortname(), + offer.getBasecurrencycode(), + offer.getCountercurrencycode(), + offer.getDate(), + offer.getState(), + offer.getSellersecuritydeposit(), + offer.getOfferfeepaymenttxid(), + offer.getTxfee(), + offer.getMakerfee() + ); +} + export {HavenoDaemon, HavenoBalances, HavenoOffer}; \ No newline at end of file