From fd16d20fd55f721488e8e251edf6082d94d958b9 Mon Sep 17 00:00:00 2001 From: CryptoFish <13164589+KingGorrin@users.noreply.github.com> Date: Tue, 5 Mar 2024 09:40:04 +0100 Subject: [PATCH] Load community nodes from assets (#69) --- .github/workflows/syrius_builder.yml | 25 +++++++++++++++++++++++++ assets/community-nodes.json | 1 + lib/main.dart | 18 ++++++++++++++++++ lib/utils/functions.dart | 7 +++++++ lib/utils/global.dart | 7 ++----- 5 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 assets/community-nodes.json diff --git a/.github/workflows/syrius_builder.yml b/.github/workflows/syrius_builder.yml index 368959b4..34f0cf1a 100644 --- a/.github/workflows/syrius_builder.yml +++ b/.github/workflows/syrius_builder.yml @@ -19,6 +19,14 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 + - name: Checkout zenon-node-database repository + uses: actions/checkout@v3 + with: + repository: HyperCore-One/zenon-node-database + path: ./node-db + ref: main + - name: Copy community nodes + run: cp -r ./node-db/rpc-nodes-mainnet.json assets/community-nodes.json - name: Setup environment run: | brew install unzip create-dmg @@ -63,6 +71,15 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 + - name: Checkout zenon-node-database repository + uses: actions/checkout@v3 + with: + repository: HyperCore-One/zenon-node-database + path: ./node-db + ref: main + - name: Copy community nodes + shell: pwsh + run: Copy-Item .\node-db\rpc-nodes-mainnet.json .\assets\community-nodes.json -Force - name: Setup Flutter uses: subosito/flutter-action@v2.10.0 with: @@ -89,6 +106,14 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 + - name: Checkout zenon-node-database repository + uses: actions/checkout@v3 + with: + repository: HyperCore-One/zenon-node-database + path: ./node-db + ref: main + - name: Copy community nodes + run: cp -r ./node-db/rpc-nodes-mainnet.json assets/community-nodes.json - name: Prepare environment run: | sudo apt update diff --git a/assets/community-nodes.json b/assets/community-nodes.json new file mode 100644 index 00000000..0637a088 --- /dev/null +++ b/assets/community-nodes.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 5550c81e..e1c4ffa8 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -25,6 +25,7 @@ import 'package:zenon_syrius_wallet_flutter/screens/screens.dart'; import 'package:zenon_syrius_wallet_flutter/services/htlc_swaps_service.dart'; import 'package:zenon_syrius_wallet_flutter/services/shared_prefs_service.dart'; import 'package:zenon_syrius_wallet_flutter/services/wallet_connect_service.dart'; +import 'package:zenon_syrius_wallet_flutter/utils/functions.dart'; import 'package:zenon_syrius_wallet_flutter/utils/utils.dart'; import 'package:zenon_syrius_wallet_flutter/widgets/widgets.dart'; import 'package:znn_sdk_dart/znn_sdk_dart.dart'; @@ -83,6 +84,9 @@ main() async { // Setup tray manager await _setupTrayManager(); + // Load default community nodes from assets + await _loadDefaultCommunityNodes(); + // Register Hive adapters Hive.registerAdapter(NotificationTypeAdapter()); Hive.registerAdapter(WalletNotificationAdapter()); @@ -160,6 +164,20 @@ Future _setupTrayManager() async { await trayManager.setContextMenu(Menu(items: items)); } +Future _loadDefaultCommunityNodes() async { + try { + var nodes = await loadJsonFromAssets('assets/community-nodes.json') + as List; + kDefaultCommunityNodes = nodes + .map((node) => node.toString()) + .where((node) => InputValidators.node(node) == null) + .toList(); + } catch (e, stackTrace) { + Logger('main') + .log(Level.WARNING, '_loadDefaultCommunityNodes', e, stackTrace); + } +} + void setup() { sl.registerSingleton(Zenon()); zenon = sl(); diff --git a/lib/utils/functions.dart b/lib/utils/functions.dart index b0fc0e44..7cb1d350 100644 --- a/lib/utils/functions.dart +++ b/lib/utils/functions.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:flutter/services.dart'; import 'package:zenon_syrius_wallet_flutter/utils/global.dart'; import 'package:znn_sdk_dart/znn_sdk_dart.dart'; @@ -26,3 +28,8 @@ Future walletSign(List message) async { kWalletFile!.close(); } } + +Future loadJsonFromAssets(String filePath) async { + String jsonString = await rootBundle.loadString(filePath); + return jsonDecode(jsonString); +} \ No newline at end of file diff --git a/lib/utils/global.dart b/lib/utils/global.dart index 594b28dd..2c4a2b7b 100644 --- a/lib/utils/global.dart +++ b/lib/utils/global.dart @@ -55,8 +55,5 @@ List kDefaultNodes = [ kLocalhostDefaultNodeUrl, ]; -// Community supplied public full nodes -List kDefaultCommunityNodes = [ - 'wss://my.hc1node.com:35998', - 'wss://node.zenonhub.io:35998' -]; \ No newline at end of file +// Community supplied public rpc nodes +List kDefaultCommunityNodes = []; \ No newline at end of file