From 20a5f52e677a0bc056bf2f14b003638835750715 Mon Sep 17 00:00:00 2001 From: woodser Date: Wed, 27 Oct 2021 14:18:07 -0400 Subject: [PATCH] add documentation to add new grpc api functions (#21) --- README.md | 2 +- docs/adding_api_functions.md | 13 +++++++++++++ src/HavenoDaemon.tsx | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 docs/adding_api_functions.md diff --git a/README.md b/README.md index a31a5510..229e9980 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Running the [top-level API tests](./src/HavenoDaemon.test.tsx) is a great way to Example: `docker run --rm -it -v ~/git/haveno-ui-poc/config/envoy.test.yaml:/envoy.test.yaml -p 8080:8080 -p 8081:8081 envoyproxy/envoy-dev:8a2143613d43d17d1eb35a24b4a4a4c432215606 -c /envoy.test.yaml` 5. `npm install` 6. Modify test config as needed in [HavenoDaemon.test.tsx](./src/HavenoDaemon.test.tsx). -7. `npm test` to run all tests or `npm run test -- -t 'my test'` to run tests by name +7. `npm test` to run all tests or `npm run test -- -t 'my test'` to run tests by name. ## How to Update the Protobuf Client diff --git a/docs/adding_api_functions.md b/docs/adding_api_functions.md new file mode 100644 index 00000000..9cc44a90 --- /dev/null +++ b/docs/adding_api_functions.md @@ -0,0 +1,13 @@ +# How to add and test new gRPC API functions in Haveno + +1. Follow [instructions](https://github.com/haveno-dex/haveno-ui-poc#run-tests) to run Haveno's existing API tests successfully. +2. Define the new service or message in Haveno's [protobuf definition](../proto/src/main/proto/grpc.proto). +3. Clean and build Haveno after modifying the protobuf definition: `make clean && make` +4. Implement the new service in Haveno's backend, following existing patterns.
+ For example, the gRPC function to get offers is implemented by [`GrpcServer`](https://github.com/haveno-dex/haveno/blob/master/daemon/src/main/java/bisq/daemon/grpc/GrpcServer.java) > [`GrpcOffersService.getOffers(...)`](https://github.com/haveno-dex/haveno/blob/b761dbfd378faf49d95090c126318b419af7926b/daemon/src/main/java/bisq/daemon/grpc/GrpcOffersService.java#L104) > [`CoreApi.getOffers(...)`](https://github.com/haveno-dex/haveno/blob/b761dbfd378faf49d95090c126318b419af7926b/core/src/main/java/bisq/core/api/CoreApi.java#L128) > [`CoreOffersService.getOffers(...)`](https://github.com/haveno-dex/haveno/blob/b761dbfd378faf49d95090c126318b419af7926b/core/src/main/java/bisq/core/api/CoreOffersService.java#L126) > [`OfferBookService.getOffers()`](https://github.com/haveno-dex/haveno/blob/b761dbfd378faf49d95090c126318b419af7926b/core/src/main/java/bisq/core/offer/OfferBookService.java#L193). +5. Build Haveno: `make` +6. Follow [instructions](https://github.com/haveno-dex/haveno-ui-poc#how-to-update-the-protobuf-client) to update the protobuf client in haveno-ui-poc. +7. Add the corresponding typescript method(s) to [HavenoDaemon.tsx](https://github.com/haveno-dex/haveno-ui-poc/blob/master/src/HavenoDaemon.tsx) with clear and concise documentation. +8. Add clean and comprehensive tests to [HavenoDaemon.test.tsx](https://github.com/haveno-dex/haveno-ui-poc/blob/master/src/HavenoDaemon.test.tsx), following existing patterns. +9. Verify the tests with `npm run test -- -t 'my test'` to run tests by name and `npm test` to run all tests together. +10. Open a pull request for review. \ No newline at end of file diff --git a/src/HavenoDaemon.tsx b/src/HavenoDaemon.tsx index b3198e22..2c4ea734 100644 --- a/src/HavenoDaemon.tsx +++ b/src/HavenoDaemon.tsx @@ -56,7 +56,7 @@ class HavenoDaemon { * @param {string} currencyCode - currency code to get the price of * @return {number} the current market price of the given currency code as a ratio, e.g. XMR/ETH */ - async getPrice(currencyCode: string) { + async getPrice(currencyCode: string): Promise { let that = this; return new Promise(function(resolve, reject) { that._priceClient.getMarketPrice(new MarketPriceRequest().setCurrencyCode(currencyCode), {password: that._password}, function(err: grpcWeb.Error, response: MarketPriceReply) {