clean up test epicbox connection

This commit is contained in:
julian 2024-04-22 17:04:57 -06:00
parent bfba6d9f5d
commit 3fe7f47d8b
3 changed files with 44 additions and 58 deletions

View file

@ -36,7 +36,7 @@ import 'package:stackwallet/wallets/crypto_currency/crypto_currency.dart';
import 'package:stackwallet/wallets/models/tx_data.dart';
import 'package:stackwallet/wallets/wallet/intermediate/bip39_wallet.dart';
import 'package:stackwallet/wallets/wallet/supporting/epiccash_wallet_info_extension.dart';
import 'package:websocket_universal/websocket_universal.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
//
// refactor of https://github.com/cypherstack/stack_wallet/blob/1d9fb4cd069f22492ece690ac788e05b8f8b1209/lib/services/coins/epiccash/epiccash_wallet.dart
@ -103,15 +103,16 @@ class EpiccashWallet extends Bip39Wallet {
}
Future<EpicBoxConfigModel> getEpicBoxConfig() async {
EpicBoxConfigModel? _epicBoxConfig =
EpicBoxConfigModel.fromServer(DefaultEpicBoxes.defaultEpicBoxServer);
EpicBoxConfigModel? _epicBoxConfig = EpicBoxConfigModel.fromServer(
DefaultEpicBoxes.defaultEpicBoxServer,
);
//Get the default Epicbox server and check if it's conected
// bool isEpicboxConnected = await _testEpicboxServer(
// DefaultEpicBoxes.defaultEpicBoxServer.host, DefaultEpicBoxes.defaultEpicBoxServer.port ?? 443);
// if (isEpicboxConnected) {
//Use default server for as Epicbox config
//Use default server for as Epicbox config
// }
// else {
@ -231,48 +232,33 @@ class EpiccashWallet extends Bip39Wallet {
);
}
Future<bool> _testEpicboxServer(String host, int port) async {
// TODO use an EpicBoxServerModel as the only param
final websocketConnectionUri = 'wss://$host:$port';
const connectionOptions = SocketConnectionOptions(
pingIntervalMs: 3000,
timeoutConnectionMs: 4000,
Future<bool> _testEpicboxServer(EpicBoxConfigModel epicboxConfig) async {
final host = epicboxConfig.host;
final port = epicboxConfig.port ?? 443;
WebSocketChannel? channel;
try {
final uri = Uri.parse('wss://$host:$port');
/// see ping/pong messages in [logEventStream] stream
skipPingMessages: true,
channel = WebSocketChannel.connect(
uri,
);
/// Set this attribute to `true` if do not need any ping/pong
/// messages and ping measurement. Default is `false`
pingRestrictionForce: true,
);
await channel.ready;
final IMessageProcessor<String, String> textSocketProcessor =
SocketSimpleTextProcessor();
final textSocketHandler = IWebSocketHandler<String, String>.createClient(
websocketConnectionUri,
textSocketProcessor,
connectionOptions: connectionOptions,
);
final response = await channel.stream.first.timeout(
const Duration(seconds: 2),
);
// Listening to server responses:
bool isConnected = true;
textSocketHandler.incomingMessagesStream.listen((inMsg) {
return response is String && response.contains("Challenge");
} catch (_) {
Logging.instance.log(
'> webSocket got text message from server: "$inMsg" '
'[ping: ${textSocketHandler.pingDelayMs}]',
level: LogLevel.Info);
});
// Connecting to server:
final isTextSocketConnected = await textSocketHandler.connect();
if (!isTextSocketConnected) {
// ignore: avoid_print
Logging.instance.log(
'Connection to [$websocketConnectionUri] failed for some reason!',
level: LogLevel.Error);
isConnected = false;
"_testEpicBoxConnection failed on \"$host:$port\"",
level: LogLevel.Info,
);
return false;
} finally {
await channel?.sink.close();
}
return isConnected;
}
Future<bool> _putSendToAddresses(
@ -335,9 +321,9 @@ class EpiccashWallet extends Bip39Wallet {
return address;
}
Future<Address> thisWalletAddress(int index, EpicBoxConfigModel epicboxConfig) async {
final wallet =
await secureStorageInterface.read(key: '${walletId}_wallet');
Future<Address> thisWalletAddress(
int index, EpicBoxConfigModel epicboxConfig) async {
final wallet = await secureStorageInterface.read(key: '${walletId}_wallet');
// EpicBoxConfigModel epicboxConfig = await getEpicBoxConfig();
final walletAddress = await epiccash.LibEpiccash.getAddressInfo(
@ -594,7 +580,8 @@ class EpiccashWallet extends Bip39Wallet {
if (!receiverAddress.startsWith("http://") ||
!receiverAddress.startsWith("https://")) {
bool isEpicboxConnected = await _testEpicboxServer(
epicboxConfig.host, epicboxConfig.port ?? 443);
epicboxConfig,
);
if (!isEpicboxConnected) {
throw Exception("Failed to send TX : Unable to reach epicbox server");
}
@ -934,7 +921,6 @@ class EpiccashWallet extends Bip39Wallet {
.findAll();
final myAddressesSet = myAddresses.toSet();
final transactions = await epiccash.LibEpiccash.getTransactions(
wallet: wallet!,
refreshFromNode: refreshFromNode,

View file

@ -1970,6 +1970,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.0"
web:
dependency: transitive
description:
name: web
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
web3dart:
dependency: "direct main"
description:
@ -1979,13 +1987,13 @@ packages:
source: hosted
version: "2.6.1"
web_socket_channel:
dependency: transitive
dependency: "direct main"
description:
name: web_socket_channel
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42"
url: "https://pub.dev"
source: hosted
version: "2.4.0"
version: "2.4.5"
webdriver:
dependency: transitive
description:
@ -2002,14 +2010,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.2.1"
websocket_universal:
dependency: "direct main"
description:
name: websocket_universal
sha256: "681e3050bd70b9c94617394f87a021746d24d4b3c8302be8c6b0b2a3e4209d7f"
url: "https://pub.dev"
source: hosted
version: "0.5.2"
win32:
dependency: transitive
description:
@ -2076,5 +2076,5 @@ packages:
source: hosted
version: "1.0.0"
sdks:
dart: ">=3.2.0 <4.0.0"
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.16.0"

View file

@ -22,7 +22,7 @@ dependencies:
sdk: flutter
ffi: ^2.0.1
mutex: ^3.0.0
websocket_universal: ^0.5.1
web_socket_channel: ^2.4.5
lelantus:
path: ./crypto_plugins/flutter_liblelantus