From 37cda03ab85aef5f8730fe7bd996623c4ab9bb12 Mon Sep 17 00:00:00 2001 From: Alva Swanson Date: Wed, 15 Nov 2023 19:07:12 +0100 Subject: [PATCH] Fix Private Messaging between traders --- .../java/bisq/identity/IdentityService.java | 22 +++++++++++++++++++ .../user/identity/UserIdentityService.java | 10 +++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/identity/src/main/java/bisq/identity/IdentityService.java b/identity/src/main/java/bisq/identity/IdentityService.java index 5f305ef2e6..369c56288e 100644 --- a/identity/src/main/java/bisq/identity/IdentityService.java +++ b/identity/src/main/java/bisq/identity/IdentityService.java @@ -122,6 +122,28 @@ public Identity getOrCreateDefaultIdentity() { }); } + /** + * Creates new identity based on given parameters. + */ + public CompletableFuture createNewActiveIdentity(String tag, + String keyId, + KeyPair keyPair) { + keyPairService.persistKeyPair(keyId, keyPair); + PubKey pubKey = new PubKey(keyPair.getPublic(), keyId); + + TorIdentity torIdentity = createTorIdentity(false); + NetworkId networkId = createNetworkId(false, pubKey, torIdentity); + Identity identity = new Identity(tag, networkId, torIdentity, keyPair); + + synchronized (lock) { + getActiveIdentityByTag().put(tag, identity); + } + persist(); + + return networkService.getNetworkIdOfInitializedNode(networkId, torIdentity) + .thenApply(nodes -> identity); + } + public Identity createAndInitializeNewActiveIdentity(String tag) { Identity identity = createAndInitializeNewIdentity(tag); diff --git a/user/src/main/java/bisq/user/identity/UserIdentityService.java b/user/src/main/java/bisq/user/identity/UserIdentityService.java index b60d64c213..8594a7aa3f 100644 --- a/user/src/main/java/bisq/user/identity/UserIdentityService.java +++ b/user/src/main/java/bisq/user/identity/UserIdentityService.java @@ -181,10 +181,12 @@ public CompletableFuture createAndPublishNewUserProfile(String nic String terms, String statement) { String tag = getTag(nickName, proofOfWork); - Identity identity = identityService.getOrCreateIdentity(tag, keyId, keyPair); - UserIdentity userIdentity = createUserIdentity(nickName, proofOfWork, terms, statement, identity); - return publishPublicUserProfile(userIdentity.getUserProfile(), userIdentity.getIdentity().getNodeIdAndKeyPair().getKeyPair()) - .thenApply(broadcastResult -> userIdentity); + return identityService.createNewActiveIdentity(tag, keyId, keyPair) + .thenApply(identity -> createUserIdentity(nickName, proofOfWork, terms, statement, identity)) + .thenApply(userIdentity -> { + publishPublicUserProfile(userIdentity.getUserProfile(), userIdentity.getIdentity().getNodeIdAndKeyPair().getKeyPair()); + return userIdentity; + }); } public void selectChatUserIdentity(UserIdentity userIdentity) {