From 057cf8fab63a61ea8e77754819597f252607c25a Mon Sep 17 00:00:00 2001 From: woodser <13068859+woodser@users.noreply.github.com> Date: Sat, 4 Oct 2025 00:41:08 -0400 Subject: [PATCH] support activating and deactivating offers over grpc api --- .../main/java/haveno/core/api/CoreApi.java | 8 ++++ .../haveno/core/api/CoreOffersService.java | 8 ++++ .../haveno/daemon/grpc/GrpcOffersService.java | 40 +++++++++++++++++++ proto/src/main/proto/grpc.proto | 18 +++++++++ 4 files changed, 74 insertions(+) diff --git a/core/src/main/java/haveno/core/api/CoreApi.java b/core/src/main/java/haveno/core/api/CoreApi.java index 5162bfdb33..461de04673 100644 --- a/core/src/main/java/haveno/core/api/CoreApi.java +++ b/core/src/main/java/haveno/core/api/CoreApi.java @@ -480,6 +480,14 @@ public class CoreApi { extraInfo); } + public void deactivateOffer(String offerId, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { + coreOffersService.deactivateOffer(offerId, resultHandler, errorMessageHandler); + } + + public void activateOffer(String offerId, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { + coreOffersService.activateOffer(offerId, resultHandler, errorMessageHandler); + } + public void cancelOffer(String id, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { coreOffersService.cancelOffer(id, resultHandler, errorMessageHandler); } diff --git a/core/src/main/java/haveno/core/api/CoreOffersService.java b/core/src/main/java/haveno/core/api/CoreOffersService.java index a3b044f3b1..9b8280b8c2 100644 --- a/core/src/main/java/haveno/core/api/CoreOffersService.java +++ b/core/src/main/java/haveno/core/api/CoreOffersService.java @@ -313,6 +313,14 @@ public class CoreOffersService { extraInfo); } + void deactivateOffer(String offerId, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { + openOfferManager.deactivateOpenOffer(getMyOffer(offerId), false, resultHandler, errorMessageHandler); + } + + void activateOffer(String offerId, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { + openOfferManager.activateOpenOffer(getMyOffer(offerId), resultHandler, errorMessageHandler); + } + void cancelOffer(String id, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { Offer offer = getMyOffer(id).getOffer(); openOfferManager.removeOffer(offer, resultHandler, errorMessageHandler); diff --git a/daemon/src/main/java/haveno/daemon/grpc/GrpcOffersService.java b/daemon/src/main/java/haveno/daemon/grpc/GrpcOffersService.java index 1c6b8b8de9..cd61484212 100644 --- a/daemon/src/main/java/haveno/daemon/grpc/GrpcOffersService.java +++ b/daemon/src/main/java/haveno/daemon/grpc/GrpcOffersService.java @@ -26,8 +26,12 @@ import haveno.core.offer.OpenOffer; import haveno.daemon.grpc.interceptor.CallRateMeteringInterceptor; import haveno.daemon.grpc.interceptor.GrpcCallRateMeter; import static haveno.daemon.grpc.interceptor.GrpcServiceRateMeteringConfig.getCustomRateMeteringInterceptor; +import haveno.proto.grpc.ActivateOfferReply; +import haveno.proto.grpc.ActivateOfferRequest; import haveno.proto.grpc.CancelOfferReply; import haveno.proto.grpc.CancelOfferRequest; +import haveno.proto.grpc.DeactivateOfferReply; +import haveno.proto.grpc.DeactivateOfferRequest; import haveno.proto.grpc.GetMyOfferReply; import haveno.proto.grpc.GetMyOfferRequest; import haveno.proto.grpc.GetMyOffersReply; @@ -38,6 +42,8 @@ import haveno.proto.grpc.GetOffersReply; import haveno.proto.grpc.GetOffersRequest; import static haveno.proto.grpc.OffersGrpc.OffersImplBase; import static haveno.proto.grpc.OffersGrpc.getCancelOfferMethod; +import static haveno.proto.grpc.OffersGrpc.getDeactivateOfferMethod; +import static haveno.proto.grpc.OffersGrpc.getActivateOfferMethod; import static haveno.proto.grpc.OffersGrpc.getGetMyOfferMethod; import static haveno.proto.grpc.OffersGrpc.getGetMyOffersMethod; import static haveno.proto.grpc.OffersGrpc.getGetOfferMethod; @@ -177,6 +183,40 @@ class GrpcOffersService extends OffersImplBase { } } + @Override + public void deactivateOffer(DeactivateOfferRequest req, + StreamObserver responseObserver) { + GrpcErrorMessageHandler errorMessageHandler = new GrpcErrorMessageHandler(getDeactivateOfferMethod().getFullMethodName(), responseObserver, exceptionHandler, log); + try { + coreApi.deactivateOffer(req.getOfferId(), () -> { + var reply = DeactivateOfferReply.newBuilder().build(); + responseObserver.onNext(reply); + responseObserver.onCompleted(); + }, errorMessage -> { + if (!errorMessageHandler.isErrorHandled()) errorMessageHandler.handleErrorMessage(errorMessage); + }); + } catch (Throwable cause) { + exceptionHandler.handleException(log, cause, responseObserver); + } + } + + @Override + public void activateOffer(ActivateOfferRequest req, + StreamObserver responseObserver) { + GrpcErrorMessageHandler errorMessageHandler = new GrpcErrorMessageHandler(getActivateOfferMethod().getFullMethodName(), responseObserver, exceptionHandler, log); + try { + coreApi.activateOffer(req.getOfferId(), () -> { + var reply = ActivateOfferReply.newBuilder().build(); + responseObserver.onNext(reply); + responseObserver.onCompleted(); + }, errorMessage -> { + if (!errorMessageHandler.isErrorHandled()) errorMessageHandler.handleErrorMessage(errorMessage); + }); + } catch (Throwable cause) { + exceptionHandler.handleException(log, cause, responseObserver); + } + } + @Override public void cancelOffer(CancelOfferRequest req, StreamObserver responseObserver) { diff --git a/proto/src/main/proto/grpc.proto b/proto/src/main/proto/grpc.proto index aa44587adf..de4388c44c 100644 --- a/proto/src/main/proto/grpc.proto +++ b/proto/src/main/proto/grpc.proto @@ -475,6 +475,10 @@ service Offers { } rpc PostOffer (PostOfferRequest) returns (PostOfferReply) { } + rpc DeactivateOffer (DeactivateOfferRequest) returns (DeactivateOfferReply) { + } + rpc ActivateOffer (ActivateOfferRequest) returns (ActivateOfferReply) { + } rpc CancelOffer (CancelOfferRequest) returns (CancelOfferReply) { } } @@ -535,6 +539,20 @@ message PostOfferReply { OfferInfo offer = 1; } +message DeactivateOfferRequest { + string offer_id = 1; +} + +message DeactivateOfferReply { +} + +message ActivateOfferRequest { + string offer_id = 1; +} + +message ActivateOfferReply { +} + message CancelOfferRequest { string id = 1; }