mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-07-28 17:34:11 -04:00
Fix bug with missing update of arbitrator list
This commit is contained in:
parent
16baa3ec8d
commit
d580c7866f
2 changed files with 21 additions and 12 deletions
|
@ -26,6 +26,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -82,13 +83,19 @@ public class ArbitratorService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<Address, Arbitrator> getArbitrators() {
|
public Map<Address, Arbitrator> getArbitrators() {
|
||||||
// TODO java.lang.IllegalStateException: Duplicate key
|
Set<Arbitrator> arbitratorSet = p2PService.getDataMap().values().stream()
|
||||||
Set<Arbitrator> set = p2PService.getDataMap().values().stream()
|
|
||||||
.filter(e -> e.expirablePayload instanceof Arbitrator)
|
.filter(e -> e.expirablePayload instanceof Arbitrator)
|
||||||
.map(e -> (Arbitrator) e.expirablePayload)
|
.map(e -> (Arbitrator) e.expirablePayload)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
return set.stream()
|
Map<Address, Arbitrator> map = new HashMap<>();
|
||||||
.collect(Collectors.toMap(e -> e.getArbitratorAddress(), e -> e));
|
for (Arbitrator arbitrator : arbitratorSet) {
|
||||||
|
Address arbitratorAddress = arbitrator.getArbitratorAddress();
|
||||||
|
if (!map.containsKey(arbitratorAddress))
|
||||||
|
map.put(arbitratorAddress, arbitrator);
|
||||||
|
else
|
||||||
|
log.warn("arbitratorAddress already exist in arbitrator map. Seems an arbitrator object is already registered with the same address.");
|
||||||
|
}
|
||||||
|
return map;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ class ArbitratorSelectionViewModel extends ActivatableDataModel {
|
||||||
private final ArbitratorManager arbitratorManager;
|
private final ArbitratorManager arbitratorManager;
|
||||||
private final Preferences preferences;
|
private final Preferences preferences;
|
||||||
private final KeyRing keyRing;
|
private final KeyRing keyRing;
|
||||||
|
private BSFormatter formatter;
|
||||||
final ObservableList<String> languageCodes = FXCollections.observableArrayList();
|
final ObservableList<String> languageCodes = FXCollections.observableArrayList();
|
||||||
final ObservableList<ArbitratorListItem> arbitratorListItems = FXCollections.observableArrayList();
|
final ObservableList<ArbitratorListItem> arbitratorListItems = FXCollections.observableArrayList();
|
||||||
final ObservableList<String> allLanguageCodes = FXCollections.observableArrayList(LanguageUtil.getAllLanguageCodes());
|
final ObservableList<String> allLanguageCodes = FXCollections.observableArrayList(LanguageUtil.getAllLanguageCodes());
|
||||||
|
@ -50,15 +51,15 @@ class ArbitratorSelectionViewModel extends ActivatableDataModel {
|
||||||
this.arbitratorManager = arbitratorManager;
|
this.arbitratorManager = arbitratorManager;
|
||||||
this.preferences = preferences;
|
this.preferences = preferences;
|
||||||
this.keyRing = keyRing;
|
this.keyRing = keyRing;
|
||||||
|
this.formatter = formatter;
|
||||||
|
|
||||||
arbitratorMapChangeListener = change -> {
|
arbitratorMapChangeListener = change -> applyArbitratorMap();
|
||||||
log.debug("getValueAdded " + change.getValueAdded());
|
}
|
||||||
log.debug("getValueRemoved " + change.getValueRemoved());
|
|
||||||
log.debug("values() " + arbitratorManager.getArbitratorsObservableMap().values());
|
private void applyArbitratorMap() {
|
||||||
arbitratorListItems.clear();
|
arbitratorListItems.clear();
|
||||||
arbitratorListItems.addAll(arbitratorManager.getArbitratorsObservableMap().values().stream()
|
arbitratorListItems.addAll(arbitratorManager.getArbitratorsObservableMap().values().stream()
|
||||||
.map(e -> new ArbitratorListItem(e, formatter)).collect(Collectors.toList()));
|
.map(e -> new ArbitratorListItem(e, formatter)).collect(Collectors.toList()));
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -66,6 +67,7 @@ class ArbitratorSelectionViewModel extends ActivatableDataModel {
|
||||||
languageCodes.setAll(user.getAcceptedLanguageLocaleCodes());
|
languageCodes.setAll(user.getAcceptedLanguageLocaleCodes());
|
||||||
arbitratorManager.getArbitratorsObservableMap().addListener(arbitratorMapChangeListener);
|
arbitratorManager.getArbitratorsObservableMap().addListener(arbitratorMapChangeListener);
|
||||||
arbitratorManager.applyArbitrators();
|
arbitratorManager.applyArbitrators();
|
||||||
|
applyArbitratorMap();
|
||||||
|
|
||||||
updateAutoSelectArbitrators();
|
updateAutoSelectArbitrators();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue