Skip to content

Commit

Permalink
CW-653-Migrate-Tron-And-Solana-To-NowNodes (#1492)
Browse files Browse the repository at this point in the history
* chore: Setup

* feat: Add NowNodes for Tron Wallet and switch it to be the default node for Tron

* feat: Add NowNodes for Solana Wallet and switch it to be the default node for Solana

* fix: Add nownodes entry to secrets

* fix: Remove pubspec.lock in shared external

* fix conflicts with main

* change secrets names

* feat: Remove Solana NowNodes config

* feat: Remove Solana NowNodes config

* feat: Revert commented out code

---------

Co-authored-by: OmarHatem <[email protected]>
  • Loading branch information
Blazebrain and OmarHatem28 authored Jun 28, 2024
1 parent ac9e473 commit a319e10
Show file tree
Hide file tree
Showing 9 changed files with 51 additions and 8 deletions.
1 change: 1 addition & 0 deletions .github/workflows/pr_test_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ jobs:
echo "const quantexExchangeMarkup = '${{ secrets.QUANTEX_EXCHANGE_MARKUP }}';" >> lib/.secrets.g.dart
echo "const nano2ApiKey = '${{ secrets.NANO2_API_KEY }}';" >> cw_nano/lib/.secrets.g.dart
echo "const tronGridApiKey = '${{ secrets.TRON_GRID_API_KEY }}';" >> cw_tron/lib/.secrets.g.dart
echo "const tronNowNodesApiKey = '${{ secrets.TRON_NOW_NODES_API_KEY }}';" >> cw_tron/lib/.secrets.g.dart
- name: Rename app
run: |
Expand Down
4 changes: 4 additions & 0 deletions assets/tron_node_list.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,9 @@
useSSL: true
-
uri: api.trongrid.io
is_default: false
useSSL: true
-
uri: trx.nownodes.io
is_default: true
useSSL: true
2 changes: 2 additions & 0 deletions cw_tron/lib/tron_http_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class TronHTTPProvider implements TronServiceProvider {
final response = await client.get(Uri.parse(params.url(url)), headers: {
'Content-Type': 'application/json',
if (url.contains("trongrid")) 'TRON-PRO-API-KEY': secrets.tronGridApiKey,
if (url.contains("nownodes")) 'api-key': secrets.tronNowNodesApiKey,
}).timeout(timeout ?? defaultRequestTimeout);
final data = json.decode(response.body) as Map<String, dynamic>;
return data;
Expand All @@ -32,6 +33,7 @@ class TronHTTPProvider implements TronServiceProvider {
headers: {
'Content-Type': 'application/json',
if (url.contains("trongrid")) 'TRON-PRO-API-KEY': secrets.tronGridApiKey,
if (url.contains("nownodes")) 'api-key': secrets.tronNowNodesApiKey,
},
body: params.toRequestBody())
.timeout(timeout ?? defaultRequestTimeout);
Expand Down
1 change: 1 addition & 0 deletions devtools_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
extensions:
8 changes: 4 additions & 4 deletions ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1300;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
Expand Down Expand Up @@ -355,7 +355,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down Expand Up @@ -449,7 +449,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
Expand Down Expand Up @@ -499,7 +499,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1300"
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
32 changes: 31 additions & 1 deletion lib/entities/default_settings_migration.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const cakeWalletBitcoinCashDefaultNodeUri = 'bitcoincash.stackwallet.com:50002';
const nanoDefaultNodeUri = 'rpc.nano.to';
const nanoDefaultPowNodeUri = 'rpc.nano.to';
const solanaDefaultNodeUri = 'rpc.ankr.com';
const tronDefaultNodeUri = 'api.trongrid.io';
const tronDefaultNodeUri = 'trx.nownodes.io';
const newCakeWalletBitcoinUri = 'btc-electrum.cakewallet.com:50002';

Future<void> defaultSettingsMigration(
Expand Down Expand Up @@ -234,7 +234,11 @@ Future<void> defaultSettingsMigration(
await changeTronCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
break;
case 37:
await replaceTronDefaultNode(sharedPreferences: sharedPreferences, nodes: nodes);
break;
case 38:
await fixBtcDerivationPaths(walletInfoSource);
break;
default:
break;
}
Expand Down Expand Up @@ -1142,3 +1146,29 @@ Future<void> changeTronCurrentNodeToDefault(

await sharedPreferences.setInt(PreferencesKey.currentTronNodeIdKey, nodeId);
}

Future<void> replaceTronDefaultNode({
required SharedPreferences sharedPreferences,
required Box<Node> nodes,
}) async {
// Get the currently active node
final currentTronNodeId = sharedPreferences.getInt(PreferencesKey.currentTronNodeIdKey);
final currentTronNode =
nodes.values.firstWhereOrNull((Node node) => node.key == currentTronNodeId);

//Confirm if this node is part of the default nodes from CakeWallet
final tronDefaultNodeList = [
'tron-rpc.publicnode.com:443',
'api.trongrid.io',
];
bool needsToBeReplaced =
currentTronNode == null ? true : tronDefaultNodeList.contains(currentTronNode.uriRaw);

// If it's a custom node, return. We don't want to switch users from their custom nodes
if (!needsToBeReplaced) {
return;
}

// If it's not, we switch user to the new default node: NowNodes
await changeTronCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
}
2 changes: 1 addition & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ Future<void> initializeAppConfigs() async {
transactionDescriptions: transactionDescriptions,
secureStorage: secureStorage,
anonpayInvoiceInfo: anonpayInvoiceInfo,
initialMigrationVersion: 37,
initialMigrationVersion: 38,
);
}

Expand Down
7 changes: 6 additions & 1 deletion tool/utils/secret_key.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ class SecretKey {
SecretKey('moralisApiKey', () => ''),
SecretKey('ankrApiKey', () => ''),
SecretKey('quantexExchangeMarkup', () => ''),
SecretKey('testCakePayApiKey', () => ''),
SecretKey('cakePayApiKey', () => ''),
SecretKey('CSRFToken', () => ''),
SecretKey('authorization', () => ''),
];

static final evmChainsSecrets = [
Expand All @@ -54,9 +58,10 @@ class SecretKey {
static final nanoSecrets = [
SecretKey('nano2ApiKey', () => ''),
];

static final tronSecrets = [
SecretKey('tronGridApiKey', () => ''),
SecretKey('tronNowNodesApiKey', () => ''),
];

final String name;
Expand Down

0 comments on commit a319e10

Please sign in to comment.