network: cleanup

This commit is contained in:
Clement Bouvet
2023-02-21 11:23:03 +01:00
parent 318f096f0a
commit 4fcb527437
5 changed files with 51 additions and 20 deletions
+1 -1
View File
@@ -64,7 +64,7 @@ void eth_plugin_prepare_query_contract_UI(ethQueryContractUI_t *queryContractUI,
}
queryContractUI->screenIndex = screenIndex;
strlcpy(queryContractUI->network_ticker, get_network_ticker(), MAX_TICKER_LEN);
strlcpy(queryContractUI->network_ticker, get_tx_network_ticker(), MAX_TICKER_LEN);
queryContractUI->title = title;
queryContractUI->titleLength = titleLength;
queryContractUI->msg = msg;
+1 -1
View File
@@ -224,7 +224,7 @@ void ux_approve_tx(bool fromPlugin) {
ux_approval_tx_flow[step++] = &ux_approval_nonce_step;
}
uint64_t chain_id = get_chain_id();
uint64_t chain_id = get_tx_chain_id();
if (chainConfig->chainId == ETHEREUM_MAINNET_CHAINID && chain_id != chainConfig->chainId) {
ux_approval_tx_flow[step++] = &ux_approval_network_step;
}
+33 -7
View File
@@ -7,6 +7,8 @@
#include "shared_context.h"
#include "utils.h"
typedef enum { APP, TX } e_net_type;
// Mappping of chain ids to networks.
static const network_info_t NETWORK_MAPPING[] = {
{.chain_id = 1, .name = "Ethereum", .ticker = "ETH"},
@@ -63,7 +65,7 @@ static const network_info_t NETWORK_MAPPING[] = {
{.chain_id = 288, .name = "Boba Network", .ticker = "ETH"},
{.chain_id = 39797, .name = "Energi", .ticker = "NRG"}};
uint64_t get_chain_id(void) {
uint64_t get_tx_chain_id(void) {
uint64_t chain_id = 0;
switch (txContext.txType) {
@@ -82,8 +84,16 @@ uint64_t get_chain_id(void) {
return chain_id;
}
const network_info_t *get_network(void) {
uint64_t chain_id = get_chain_id();
uint64_t get_app_chain_id(void) {
return chainConfig->chainId;
}
static uint64_t get_chain_id(e_net_type type) {
return (type == APP) ? get_app_chain_id() : get_tx_chain_id();
}
static const network_info_t *get_network(e_net_type type) {
uint64_t chain_id = get_chain_id(type);
for (size_t i = 0; i < sizeof(NETWORK_MAPPING) / sizeof(*NETWORK_MAPPING); i++) {
if (NETWORK_MAPPING[i].chain_id == chain_id) {
return (const network_info_t *) PIC(&NETWORK_MAPPING[i]);
@@ -92,8 +102,8 @@ const network_info_t *get_network(void) {
return NULL;
}
const char *get_network_name(void) {
const network_info_t *network = get_network();
static const char *get_network_name(e_net_type type) {
const network_info_t *network = get_network(type);
if (network == NULL) {
return NULL;
} else {
@@ -101,11 +111,27 @@ const char *get_network_name(void) {
}
}
const char *get_network_ticker(void) {
const network_info_t *network = get_network();
const char *get_app_network_name(void) {
return get_network_name(APP);
}
const char *get_tx_network_name(void) {
return get_network_name(TX);
}
static const char *get_network_ticker(e_net_type type) {
const network_info_t *network = get_network(type);
if (network == NULL) {
return chainConfig->coinName;
} else {
return (char *) PIC(network->ticker);
}
}
const char *get_app_network_ticker(void) {
return get_network_ticker(APP);
}
const char *get_tx_network_ticker(void) {
return get_network_ticker(TX);
}
+11 -6
View File
@@ -11,13 +11,18 @@ typedef struct network_info_s {
uint64_t chain_id;
} network_info_t;
// Returns the current chain id. Defaults to 0 if txType was not found.
uint64_t get_chain_id(void);
// Returns a pointer to the network struct, or NULL if there is none.
const network_info_t *get_network(void);
// Returns the chain ID. Defaults to 0 if txType was not found (For TX).
uint64_t get_tx_chain_id(void);
uint64_t get_app_chain_id(void);
#ifdef HAVE_NBGL
const nbgl_icon_details_t *get_app_chain_icon(void);
#endif // HAVE_NBGL
// Returns a pointer to the network name, or NULL if there is none.
const char *get_network_name(void);
const char *get_tx_network_name(void);
const char *get_app_network_name(void);
// Returns a pointer to the network ticker, or chainConfig->coinName if there is none.
const char *get_network_ticker(void);
const char *get_tx_network_ticker(void);
const char *get_app_network_ticker(void);
#endif // _NETWORK_H_
+5 -5
View File
@@ -214,7 +214,7 @@ static void computeFees(txInt256_t *BEgasPrice, txInt256_t *BEgasLimit, uint256_
}
static void feesToString(uint256_t *rawFee, char *displayBuffer, uint32_t displayBufferSize) {
const char *feeTicker = get_network_ticker();
const char *feeTicker = get_tx_network_ticker();
uint8_t tickerOffset = 0;
uint32_t i;
@@ -273,10 +273,10 @@ void prepareFeeDisplay() {
}
void prepareNetworkDisplay() {
const char *name = get_network_name();
const char *name = get_tx_network_name();
if (name == NULL) {
// No network name found so simply copy the chain ID as the network name.
uint64_t chain_id = get_chain_id();
uint64_t chain_id = get_tx_chain_id();
u64_to_string(chain_id, strings.common.network_name, sizeof(strings.common.network_name));
} else {
// Network name found, simply copy it.
@@ -308,13 +308,13 @@ static void get_public_key(uint8_t *out, uint8_t outLength) {
void finalizeParsing(bool direct) {
char displayBuffer[50];
uint8_t decimals = WEI_TO_ETHER;
const char *ticker = get_network_ticker();
const char *ticker = get_tx_network_ticker();
ethPluginFinalize_t pluginFinalize;
bool genericUI = true;
// Verify the chain
if (chainConfig->chainId != ETHEREUM_MAINNET_CHAINID) {
uint64_t id = get_chain_id();
uint64_t id = get_tx_chain_id();
if (chainConfig->chainId != id) {
PRINTF("Invalid chainID %u expected %u\n", id, chainConfig->chainId);