hivewallet / hive-js

Hive digital currency wallet
http://www.hivewallet.com
GNU General Public License v2.0
81 stars 57 forks source link

Add UI for switching network #54

Closed weilu closed 10 years ago

weilu commented 10 years ago

Currently one can switch to testnet by appending ?network=testnet to the url. Given that we want to support other networks (e.g. doge and lite), shall we add an UI entry point for switching among networks? @mattatgit @jenbennings @haustraliaer

mattatgit commented 10 years ago

i guess the question that this opens up is: how to manage multi crypto inside the wallet app. i.e. if i select a new currency (DOGE) does the wallet switch to show me only DOGE transactions & balance ? i.e. it's really a wallet switcher. Or would it just switch my currently used currency & balance display to that, but transaction history would contain all currency types mixed together (i.e. a master transaction history & hence all currencies mixed inside the one wallet). I'm not quite sure what would be most useful, and the implications of one or the other would probably mean a different way of handling the switch.

So might be a bit premature to put something in until those questions can be answered.

weilu commented 10 years ago

if i select a new currency (DOGE) does the wallet switch to show me only DOGE transactions & balance

Yes, that's what I have in mind.

would it just switch my currently used currency & balance display to that, but transaction history would contain all currency types mixed together

I think that's confusing. It's like when I have multiple bank accounts say for AUD, SGD and USD, instead of showing the respective balances in each accounts, the bank lets me choose a currency and shows me a total amount and all my transactions in that currency. Given that it definitely involves conversion through exchange rates, the displayed total balance will always be changing for me. That, can be really scary. Apart from that, as a user, I'd definitely want to be able to lookup how much exactly of each currency I own.

weilu commented 10 years ago

@w-hive definitely has some thoughts about this issue.

mattatgit commented 10 years ago

yep i also think that having "siloed" balances & transaction histories is what i would want personally, most of the time. But i can also conceive of scenarios when i might want to be able to see a single "timeline" of all my transactions across currency types. i.e. did i get that payment in LTC before or after i sent out all of that BTC ? having to switch back and forth and remember times and dates of payments could be annoying in that regard. But yeah, in terms of UI, siloing currencies would generally be the best way. Having to denote the currency type in transaction history would make for a quite information-dense UI. Maybe the answer is to keep it all siloed, but have a view further down in the hierarchy that allows you to see a timeline of all transactions.

The larger point i was trying to make is really just that we need to think carefully about what's really needed in a multi crypto wallet before we start dropping extra UI stuff into hive.

ghost commented 10 years ago

I was once also of the opinion that siloed was best; in fact, that was my original proposition here:

https://github.com/hivewallet/hive-osx/issues/45

But in light of things like Vennd and Ripple path-finding, it's fairly obvious that this is an extremely limiting perspective. We're going to basically able to "spend" any digital token into any other digital token, which effectively means this is going to be reality: I hold LTC and some DOGE. I want to buy something that costs some BTC. The wallet tells me I can spend a few of my doge and all of my LTC to get this, based on current exchange paths. I click OK and this automatically happens.

Finally, even if they can be used that way, these are not currencies and I think we should wean ourselves off of saying that.

ghost commented 10 years ago

...That being said, for the first version I think this switching is 100% hunky-dory. :-)

mattatgit commented 10 years ago

yeah being able to spend 2 currencies / tokens at the same time to make up a larger transaction - i can see the utility of it, but thats going to take some pretty serious UI kung fu to make that happen in a clear & helpful way.

ghost commented 10 years ago

No doubt! But if anyone can... :-)

mattatgit commented 10 years ago

Sure. It's a good challenge. We just need the world to catch up a bit so we can get some real world multi-token use case info to help planning out the UI...

mattatgit commented 10 years ago

@w-hive

multi_crypto_hive_mock

weilu commented 10 years ago

@mattatgit Does it mean that 2.35BTC is equivalent to 55.6LTC or that I have 2.35BTC + 55.6LTC?

mattatgit commented 10 years ago

@weilu they would all be separate balances. There would need to be wallet icons or numbers so that it is clear that these are separate balances. (this was a very quick sketch mockup). So perhaps under the main balance display would be an icon showing you are viewing wallet 1 (BTC), wallet 2 (LTC), wallet 3, (DOGE) etc. Likewise in the popup display each wallet would have icons / numbers.

weilu commented 10 years ago

@mattatgit Another consideration here is that if we allow user to view all token wallets' balances (and potentially transactions and their fiat values) at the same time, it means we need to operating all the wallets at the same time - watching for the balances and incoming/outgoing transactions to/from the respective wallets, and querying their ticker APIs. Probably not the most efficient assuming when user operates their wallet, they use one token at a time. However if displaying the balance (and other info) is not required, it would be much simpler technically.

Also where would the denomination settings(BTC, mBTC, uBTC) be then?

mattatgit commented 10 years ago

Possibly a better way would be to put your other balances in the drawer so you are forced to open it to switch, to make sure you are properly aware which tokens you are using. Maybe from there you can see all yr other balances and if you tap them there they load into the main wallet display.

haustraliaer commented 10 years ago

That's what I was thinking too @mattatgit - and restricting the main header balance to a comparison of local fiat currencies (still a useful utility no matter what currency you're currently using).

weilu commented 10 years ago

@mattatgit @haustraliaer I'm happy with that :)

jenbennings commented 10 years ago

Not being able to view amounts across multiple wallets/tokens without logging in to them first would be a really poor experience for the user. Any way we can get around this would be preferable.

As far as tapping the currency goes (shown in the comp above), I think that should be reserved for currency options/preferences from within that wallet only.

We should explore ways of revealing these other tokens as part of the global interface, not just a menu item. Ultimately, the more stuff we can keep out of there the better (hence why I still prefer to think of it as a settings drawer).

This example is using the existing header, (which obviously doesn't communicate that it is revealable), but just as an idea:

weilu commented 10 years ago

@jenbennings That looks like a fun idea. But again, I still think the meaning of the amounts shown on header is ambiguous.

What value do users get from viewing other token balances when they are in the wallet context of one token? They want to have an overview of all assets in all tokens, sure. It means the information needs to be accurate and up-to-date. The only way to ensure absolute accuracy is to refresh the value when user checks. It means the numbers won't show up instantly as user drags down as show in the mockup.

haustraliaer commented 10 years ago

Presumably they could update if you hit the refresh button? The current balance in the header of your current currency is also not up to date until you refresh.

ghost commented 10 years ago

That looks so amazing, even though I agree with @weilu 's comments

ghost commented 10 years ago

This reminds me of an idea we had way back in 2013... "The Honey Jar". We were even thinking of it as a standalone app that would simply monitor the balances of certain addresses. Imagine a light and slow fluid dynamics simulation, and each layer is its own color.

screen shot 2014-06-04 at 2 48 43 pm

jenbennings commented 10 years ago

In an effort to get this feature in for the beta milestone, should we just start with the basic functionality of switching wallets from within the settings drawer (without showing an available balance)? The idea I've proposed above is obviously going to be more time consuming to implement (and, as highlighted by this discussion, has some conceptual problems that I'm still trying to work through).

Upon switching tokens, the user should still be presented with a loading/syncing screen, as per the prototype.

Moving forwards, my feeling is the solution is going to be a combination of the two... Presenting tokens in the drawer, balances somewhere within the proximity of the header.

ghost commented 10 years ago

Cool beans.

haustraliaer commented 10 years ago

closed with: https://github.com/hivewallet/hive-js/commit/3e3586e74a26e0f789f4e98652809b553f59fd34

using circles for now until we sort out a consistent method for masking hexagons across the app.