mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2025-01-27 10:51:09 +00:00
add option to bitcoin core and private electrum server selection to scan url from a qr code
This commit is contained in:
parent
f057b92729
commit
f4acd3e587
1 changed files with 44 additions and 1 deletions
|
@ -10,6 +10,7 @@ import com.sparrowwallet.sparrow.AppServices;
|
||||||
import com.sparrowwallet.sparrow.EventManager;
|
import com.sparrowwallet.sparrow.EventManager;
|
||||||
import com.sparrowwallet.sparrow.Mode;
|
import com.sparrowwallet.sparrow.Mode;
|
||||||
import com.sparrowwallet.sparrow.control.ComboBoxTextField;
|
import com.sparrowwallet.sparrow.control.ComboBoxTextField;
|
||||||
|
import com.sparrowwallet.sparrow.control.QRScanDialog;
|
||||||
import com.sparrowwallet.sparrow.control.TextFieldValidator;
|
import com.sparrowwallet.sparrow.control.TextFieldValidator;
|
||||||
import com.sparrowwallet.sparrow.control.UnlabeledToggleSwitch;
|
import com.sparrowwallet.sparrow.control.UnlabeledToggleSwitch;
|
||||||
import com.sparrowwallet.sparrow.event.*;
|
import com.sparrowwallet.sparrow.event.*;
|
||||||
|
@ -55,6 +56,7 @@ public class ServerPreferencesController extends PreferencesDetailController {
|
||||||
private static final Logger log = LoggerFactory.getLogger(ServerPreferencesController.class);
|
private static final Logger log = LoggerFactory.getLogger(ServerPreferencesController.class);
|
||||||
|
|
||||||
private static final Server MANAGE_ALIASES_SERVER = new Server("tcp://localhost", "Manage Aliases...");
|
private static final Server MANAGE_ALIASES_SERVER = new Server("tcp://localhost", "Manage Aliases...");
|
||||||
|
private static final Server SCAN_QR_SERVER = new Server("ssl://localhost", "Scan QR...");
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private ToggleGroup serverTypeToggleGroup;
|
private ToggleGroup serverTypeToggleGroup;
|
||||||
|
@ -288,6 +290,26 @@ public class ServerPreferencesController extends PreferencesDetailController {
|
||||||
recentCoreServers.setItems(getObservableServerList(Config.get().getRecentCoreServers()));
|
recentCoreServers.setItems(getObservableServerList(Config.get().getRecentCoreServers()));
|
||||||
Server selectedServer = optServer.orElseGet(() -> Config.get().getCoreServer());
|
Server selectedServer = optServer.orElseGet(() -> Config.get().getCoreServer());
|
||||||
Platform.runLater(() -> recentCoreServers.setValue(selectedServer));
|
Platform.runLater(() -> recentCoreServers.setValue(selectedServer));
|
||||||
|
} else if(newValue == SCAN_QR_SERVER) {
|
||||||
|
QRScanDialog qrScanDialog = new QRScanDialog();
|
||||||
|
qrScanDialog.initOwner(recentCoreServers.getScene().getWindow());
|
||||||
|
Optional<QRScanDialog.Result> optResult = qrScanDialog.showAndWait();
|
||||||
|
if(optResult.isPresent()) {
|
||||||
|
if(optResult.get().payload != null) {
|
||||||
|
String url = optResult.get().payload;
|
||||||
|
if(Protocol.getProtocol(url) == null) {
|
||||||
|
url = Protocol.HTTP.toUrlString() + url;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Server qrServer = new Server(url);
|
||||||
|
Platform.runLater(() -> recentCoreServers.setValue(qrServer));
|
||||||
|
} catch(Exception e) {
|
||||||
|
AppServices.showErrorDialog("Invalid server URL", e.getMessage());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
AppServices.showErrorDialog("Invalid server QR", "Could not find a valid server URL in the QR code.");
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if(newValue.getHostAndPort() != null) {
|
} else if(newValue.getHostAndPort() != null) {
|
||||||
HostAndPort hostAndPort = newValue.getHostAndPort();
|
HostAndPort hostAndPort = newValue.getHostAndPort();
|
||||||
corePort.setText(hostAndPort.hasPort() ? Integer.toString(hostAndPort.getPort()) : "");
|
corePort.setText(hostAndPort.hasPort() ? Integer.toString(hostAndPort.getPort()) : "");
|
||||||
|
@ -313,6 +335,26 @@ public class ServerPreferencesController extends PreferencesDetailController {
|
||||||
recentElectrumServers.setItems(getObservableServerList(Config.get().getRecentElectrumServers()));
|
recentElectrumServers.setItems(getObservableServerList(Config.get().getRecentElectrumServers()));
|
||||||
Server selectedServer = optServer.orElseGet(() -> Config.get().getElectrumServer());
|
Server selectedServer = optServer.orElseGet(() -> Config.get().getElectrumServer());
|
||||||
Platform.runLater(() -> recentElectrumServers.setValue(selectedServer));
|
Platform.runLater(() -> recentElectrumServers.setValue(selectedServer));
|
||||||
|
} else if(newValue == SCAN_QR_SERVER) {
|
||||||
|
QRScanDialog qrScanDialog = new QRScanDialog();
|
||||||
|
qrScanDialog.initOwner(recentElectrumServers.getScene().getWindow());
|
||||||
|
Optional<QRScanDialog.Result> optResult = qrScanDialog.showAndWait();
|
||||||
|
if(optResult.isPresent()) {
|
||||||
|
if(optResult.get().payload != null) {
|
||||||
|
String url = optResult.get().payload;
|
||||||
|
if(Protocol.getProtocol(url) == null) {
|
||||||
|
url = (electrumUseSsl.isSelected() ? Protocol.SSL.toUrlString() : Protocol.TCP.toUrlString()) + url;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Server qrServer = new Server(url);
|
||||||
|
Platform.runLater(() -> recentElectrumServers.setValue(qrServer));
|
||||||
|
} catch(Exception e) {
|
||||||
|
AppServices.showErrorDialog("Invalid server URL", e.getMessage());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
AppServices.showErrorDialog("Invalid server QR", "Could not find a valid server URL in the QR code.");
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if(newValue.getHostAndPort() != null) {
|
} else if(newValue.getHostAndPort() != null) {
|
||||||
HostAndPort hostAndPort = newValue.getHostAndPort();
|
HostAndPort hostAndPort = newValue.getHostAndPort();
|
||||||
electrumPort.setText(hostAndPort.hasPort() ? Integer.toString(hostAndPort.getPort()) : "");
|
electrumPort.setText(hostAndPort.hasPort() ? Integer.toString(hostAndPort.getPort()) : "");
|
||||||
|
@ -892,6 +934,7 @@ public class ServerPreferencesController extends PreferencesDetailController {
|
||||||
private ObservableList<Server> getObservableServerList(List<Server> servers) {
|
private ObservableList<Server> getObservableServerList(List<Server> servers) {
|
||||||
ObservableList<Server> serverObservableList = FXCollections.observableList(new ArrayList<>(servers));
|
ObservableList<Server> serverObservableList = FXCollections.observableList(new ArrayList<>(servers));
|
||||||
serverObservableList.add(MANAGE_ALIASES_SERVER);
|
serverObservableList.add(MANAGE_ALIASES_SERVER);
|
||||||
|
serverObservableList.add(SCAN_QR_SERVER);
|
||||||
return serverObservableList;
|
return serverObservableList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -948,7 +991,7 @@ public class ServerPreferencesController extends PreferencesDetailController {
|
||||||
} else {
|
} else {
|
||||||
String serverAlias = server.getAlias();
|
String serverAlias = server.getAlias();
|
||||||
|
|
||||||
if(server == MANAGE_ALIASES_SERVER) {
|
if(server == MANAGE_ALIASES_SERVER || server == SCAN_QR_SERVER) {
|
||||||
setText(serverAlias);
|
setText(serverAlias);
|
||||||
setStyle("-fx-font-style: italic");
|
setStyle("-fx-font-style: italic");
|
||||||
setGraphic(null);
|
setGraphic(null);
|
||||||
|
|
Loading…
Reference in a new issue