This is the format used by (older) Electron Cash wallets. It may be
useful to users wishing to use their older EC wallets with Flowee Pay.
Highlight of changes:
- Import wallet UI now auto-detects whether it's Electrum or BIP39. Note
that in some cases a valid BIP39 seed is also a valid Electrum seed.
The user has a UI element checkbox for "forcing" Electrum
interpretation in such cases.
- Electrum seed phrases always use derivation path "m/" so this is
forced on the user as the only path available in the Electrum case.
- Wallet file format has a new tag to indicate whether the seed phrase
is electrum or not. Only present in the electrum case, otherwise it's
omitted from the serialized data.
Just some nits but here is what the compiler didn't like:
- Apparently Qt's `qAsConst` is marked as deprecated (at least in Qt
6.6.0), so they recommend one uses `std::as_const`
- Compiler feels happier with `#ifdef` rather than `#if` for
`TARGET_OS_Android` in the not-defined case.
The CPP now does more of the (heavy) lifting and the UI layer can
ignore
most of the details with regards to there being digits behind the
separator for fiat at all.
The internal change is that the fiat based values are always processed
in cents, even if the cents are not displayed. This solves incorrect
display and generally removes special cases.
One surprise was that the main usecase of pasting is one where the user
activates another app to go and copy data in order to come back to paste
it.
And the Qt clipboard didn't manage to get any notification of clipboard
changes. Even copying data on becoming active had no effect.
So now I just show the paste optimistically when the user comes back
from another screen, assuming the main reason for that was to copy.
This makes available a clipboard helper component in QML.
Based on filters we then can make the 'paste' button visible and
only allow pasting stuff that is remotely useful.
This then also adds a 'paste' button to the transaction-building
module, the 'destination' screen.
We test on desktop, but this component with an actual mouse stops me
from clicking on the "Home" button in the test env. So lets just turn
that off and make the slide-to-open only happen on production devices.
For desktop we now properly support starting a payment when
the user clicks on a bitcoincash link in a browser.
For Android the activation logic _should_ work, except that the
Android specific way has yet to be tied to our app.
Squash of 12 commits, this makes the UX actually useful and
we detect errors and show errors and warnings to the user.
This also adds an 'editable' bool to OutputDetail in order to
disable editing of a payment request address.
Additionally, this introduces the ability for a Payment to carry
a raw script instead of an address. So op-return or more complex
payment requests will be sent just fine.
Fun fact is that our broadcast is INV/SendData, which is two
roundtrips and thus slow, which is needed to be sure we get proper
rejection messages.
The sending of the transaction via BIP70 causes the network to
already know about the tx because the server we send it to has
likely much better Internet than we do.
So confirmation from the payment provider is used to show success
instead of the normal way.
This adds the basic support of bip70 style payments.
Some todos are left which are mostly about interaction with
other parts of the app and require bigger changes to make
it work smoothly.
The PaymentProtcol class now handles the pasting of a payment uri,
like bip21.
Additionally this adds the feature where we pass in the payment uri on
the commandline which then results in an auto-opened payment screen.
The QR scan page now also allows showing the destination address
while the number keypad is up, being smarter with the layout of
the various lines in order to fit the important info on screen.
Additionally we require the user to first enable the 'edit amount'
option before we make available the option to 'send all'.
This file gets auto-generated if we don't have it by the Qt tools
so we didn't really need it before.
This changes the default to now set the targetSdkVersion to 33,
as required by the Android Play store.
People that only use one hand will no longer need to use the other to
reach the button at the top for the menu.
Instead we now allow a swipe in the bottom left corner, swiping to the
right will make the menu open.