Page MenuHomePhabricator

[explorer] add testnet toggle in menu bar
ClosedPublic

Authored by johnkuney on Sep 5 2024, 19:55.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABCd89ea22e29c3: [explorer] add testnet toggle in menu bar
Summary

adding a switch between testnet and mainnet in the navbar
It is off by default, but can be specified in the config.toml for people who want to run it

Test Plan

add network_selector = true to the config.toml
cargo run in /explorer-exe
check out the switcher

Diff Detail

Repository
rABC Bitcoin ABC
Branch
explorer-testnet-switch
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 30202
Build 59931: Build Diff
Build 59930: arc lint + arc unit

Event Timeline

Fabien requested changes to this revision.Sep 6 2024, 08:09
Fabien added a subscriber: Fabien.

Ideally would add to the testnet page as well...Im not sure where that one is maintained

Guess what: this is the same explorer code :) So the selection should reflect whether it's mainnet or testnet. You can look at the url or use the config file which has an chain parameter (see server.rs).
I suggest also that this feature is behind a config flag or an environment variable, because it makes it more convenient to reuse if it's off by default. This is quite specialized for our needs.

This revision now requires changes to proceed.Sep 6 2024, 08:09

Okay made some adjustments.
Im not to sure how to execute your second point though, to have it be in the config...The idea there is to only have it show if someone explicitly says so in the config and runs it themselves? but for the normal user this will not be shown?

Okay made some adjustments.
Im not to sure how to execute your second point though, to have it be in the config...The idea there is to only have it show if someone explicitly says so in the config and runs it themselves? but for the normal user this will not be shown?

Yes the idea is to have the selector only displayed if it's explicitly requested, either via an entry in the config file or via an environment variable for example.

Any specific tips how to make that? I'm still not up to speed on any rust programming

Any specific tips how to make that? I'm still not up to speed on any rust programming

You could pass the config down via the templating. But if you want to avoid this it's also possible, I don't see any rust in your code changes.

Well yeah I havent added any rust code yet cause I dont know it!
I did try messing with the config.toml and the templating, but was guessing my way through. Base.html doesnt use a template currently afaict
How can you do it without using the templating? Is there a simple way to access a config variable in base.html that I'm missing?

Well yeah I havent added any rust code yet cause I dont know it!
I did try messing with the config.toml and the templating, but was guessing my way through. Base.html doesnt use a template currently afaict
How can you do it without using the templating? Is there a simple way to access a config variable in base.html that I'm missing?

base.html is a template as well so you can inject whatever you want just like the various pages content is injected.
You can look at what I've done in D14451. The idea is to add a member to the templating object, fill it in the server and use that in the template. You'll need to repeat for each page.
To begin I suggest you use a simple flag to turn the feature on or off, defaulting to off if not set.

add variable to the config

johnkuney edited the test plan for this revision. (Show Details)

Thanks for the tips. Think I got it

Would it be possible to actually switch between testnet and mainnet instead of just urls?
Like what makes it run testnet? you need to change the chain parameter and the chronik instance in the config? But I guess it would require a recompile so maybe not doable?

Also how useful will this actually be, if we are not going to have it on explorer.e.cash? The scenario would be you are on texplorer.fabien.cash and then hit the switch and go to explorer.e.cash with no switcher....what is it solving?

Would it be possible to actually switch between testnet and mainnet instead of just urls?
Like what makes it run testnet? you need to change the chain parameter and the chronik instance in the config? But I guess it would require a recompile so maybe not doable?

Also how useful will this actually be, if we are not going to have it on explorer.e.cash? The scenario would be you are on texplorer.fabien.cash and then hit the switch and go to explorer.e.cash with no switcher....what is it solving?

I'm not sure I understand your question, so forgive me if I don't give you a good answer.

We can't switch between testnet and mainnet in the same explorer the way it is designed. This would need an edit of the config and a restart of the app.

The plan is to have the switch on both explorer.e.cash, pointing to texplorer.e.cash and on texplorer.e.cash, pointing to explorer.e.cash so we can navigate back and forth just like it's done on explorer.bitcoinabc.org.
The switch should be disabled by default and only enabled via some config because we might not be the only users of this code and this is very specific to our infra.

Regarding the config this looks good at first glance

Ah okay cool, yeah sorry think I misunderstood you the first time.
I thought we were not going to have it on explorer.e.cash. But I'm with you now

Fabien requested changes to this revision.Sep 19 2024, 12:00
Fabien added inline comments.
web/explorer/explorer-server/templates/base.html
129–133 ↗(On Diff #49721)

This avoids showing the wrong selector when debugging with it is enabled, or using preview.

This revision now requires changes to proceed.Sep 19 2024, 12:00
johnkuney edited the summary of this revision. (Show Details)

avoid showing wrong selector in preview mode

Fabien requested changes to this revision.Sep 19 2024, 19:33
Fabien added inline comments.
web/explorer/explorer-server/templates/base.html
129 ↗(On Diff #49746)

copy pasta

This revision now requires changes to proceed.Sep 19 2024, 19:33
This revision is now accepted and ready to land.Sep 19 2024, 23:33
This revision was automatically updated to reflect the committed changes.