Commit Graph

738 Commits

Author SHA1 Message Date
tomFlowee 973fc94950 when paste is used turn instaPay off
clipboards based addresses are a lot less secure, physically, than
scanning a QR.
So the user really should validate the payment and thus we turn off
instaPay in those cases.
2023-06-11 18:10:06 +02:00
tomFlowee 94f52e0c7f Add feature; paste address.
Allow users that start by 'pay' to fulfill the payment also using
clipboard instead by providing a 'paste' button on the scanning screen.
2023-06-11 17:58:27 +02:00
tomFlowee 1d2fa6728f new version 2023-06-08 23:20:53 +02:00
tomFlowee 37a4e38e5d Handle token UTXOs specially.
Mostly they can not be spent as money, which is basically
what this code does.
2023-06-05 09:58:54 +02:00
tomFlowee 4883de304b Export the cashToken bool to the UI
Make clear that we have a cashtoken output in the UI.
2023-06-05 09:58:06 +02:00
tomFlowee b6165a7308 Remove not needed semicolon 2023-06-04 23:05:52 +02:00
tomFlowee a4fd05d436 Load save cashtoken bool 2023-06-04 22:12:57 +02:00
tomFlowee 8d2f056aac Detect cashtokens being sent to us.
Instead of silently ignoring a cashtoken that is for us, this makes us
match the incoming transaction and remember its a token.
2023-06-04 21:40:46 +02:00
tomFlowee fe67c5273e Handle invalid addresses better.
The user input now gets the user interface string 'incorrect' instead of
'unset' if no proper address could be resolved from it.
2023-06-04 19:20:18 +02:00
tomFlowee cd5394c704 Replace assert with check 2023-06-04 18:22:39 +02:00
tomFlowee 9adb6f2ae7 Fixlet (spello) in log message. 2023-05-31 15:55:44 +02:00
tomFlowee 49a8a9ce34 Cleanup nice-address usage
A Payment object now has a user-typed address,
a formattedAddress which is a properly formatted cash-address
and last a 'niceAddress' which is the same cash-address but without the
chain prefix.

This cleans up the usage and removes some code from the GUI that did the
string manipulation there.
2023-05-31 15:47:14 +02:00
tomFlowee 752cc9b68a Respect amount of incoming payment request.
A payment request, for instance a QR code, which includes an amount to
be paid is expected to not change the to-be-paid amount, uses being
dropped
in the price editing UI is therefore a bit weird. Almost an
anti-pattern.

This honors that concept and when the price is included in the scanned
QR, we change the UI layout to removed the editing widgets and show
static display widgets instead.

This also adds a header menu item to edit the amount to be paid and
get back to the old UI.
Additionally, a new UI is added to show the address we are about to pay
to, likewise reachable from the header menu.
2023-05-31 15:20:11 +02:00
tomFlowee 66ed55823d Tie instapay check to payment-address parsing.
The basic usecases of instapay is that the payment request is filled in
one go (from QR for instance) and thus we try to send.
If that fails (not enough funds or whatever), we disable instapay in
order to avoid 'magic happens' user experiences.
2023-05-31 11:14:12 +02:00
tomFlowee ce07ceb4c2 Rename WalletConfig -> AccountConfig
The account config is not owned by the wallet, which makes this naming
more logical and clear.
2023-05-31 10:42:05 +02:00
tomFlowee 98605711bf add and fix docs. 2023-05-31 10:32:44 +02:00
tomFlowee 00bcdfa796 Make GUI respond to entering a instapay limit. 2023-05-31 10:32:28 +02:00
tomFlowee 2fcf86a037 Translate months in history view
The headers and such items now get localized on the history pages.

We use static strings for the formats to avoid every call converting a c
string to a utf16 qstring, which takes an allocate and a conversion.
A tiny little amount of data kept in global memory to avoid a large
number of mallocs is a net gain, I'm pretty sure.
2023-05-30 22:03:53 +02:00
tomFlowee 3c3a166ef5 Support an extra special case 2023-05-30 20:35:12 +02:00
tomFlowee 3174b0706d Avoid notifications from 'private' accounts.
Send notifications via singleton and do not forward notitications from
private accounts when private mode is enabled.
2023-05-30 20:35:12 +02:00
tomFlowee e2dacffc33 Increase version number 2023-05-30 17:06:22 +02:00
tomFlowee fbfb9941ea Fix address gap in light of multiple gaps
The design of HD wallets always has a gap, a number of addresses past
the last used one we optimistically also look at.

My code assumed that there would be only one gap, at the end while the
number of skipped addresses were near zero.
Some other wallet, however, had multiple large gaps which messed up the
algorithm.

Now we restart counting gap-addresses every time an address is used in
the sequence.

Fixes #12
2023-05-30 15:52:06 +02:00
tomFlowee 885bb593b9 Revisit the 'gap' question for the main derivation path
This should fix the problem of a certain established wallet not
importing properly.
That wallet has shown to jump 15 or 20 addresses over the gap, which
made me wonder if that actually is a privacy issue and the conclusion is
that, no, if there is no matching transaction on chain, there is no
privacy leakage from just sending the bloom filter and thus the gap has
been increased for main.
2023-05-29 23:50:06 +02:00
tomFlowee aea210270a Remove unneeded code.
This method is only called from two methods which do the locking
already, making locking it again recursively just wasting time.
2023-05-29 21:59:07 +02:00
tomFlowee 0991da4b36 Also cloak hd-main derivation addresses
Lets face it, listing loads of addresses is not readable. People can't
really get meaning out of that, its just 'data' after one or two.
Showing the hd-path-id (main or change) and an integer is going to be
much more useful for many UX situations, so we provide that information
for the UI to display that instead.

Naturally, the actual address is still available for copy/pasting etc.
2023-05-29 21:57:52 +02:00
tomFlowee 311a788346 tie a signal to the allowInstaPay property
this may fire on no change, making it imperfect. It is better in that it
actually allows propery changes to have a visual effect.
2023-05-26 08:35:03 +02:00
tomFlowee fc3b31b864 minor fixes 2023-05-26 08:31:36 +02:00
tomFlowee 0ef5d2b0fc Re-think the interaction of the ReceiveTab
This solves the UX issue that the touch-screen keyboard would
overlap on our main content and that we could actally not input
a price properly on mobile at all.
2023-05-25 23:37:41 +02:00
tomFlowee 57daf60401 Add addressShort getter
This returns the address, but without the chain prefix.
2023-05-25 21:00:46 +02:00
tomFlowee 5c2581c592 Add PaymentBackend helper class
This makes the PriceInputWidget free to invoke.
2023-05-25 21:00:24 +02:00
tomFlowee 97a4b74bfa Include our font.
We ship our own font to not have to depend on the host system's
installed fonts for 'special' characters like arrows and stars.

This is a font forked from the Gnu-free font people, only since that one
is 2MB this is a very much stripped down version with just all the fun
stuff left.
2023-05-19 15:47:02 +02:00
tomFlowee 7806914fc3 Various small fixes and UX improvements. 2023-05-18 21:52:51 +02:00
tomFlowee 280678457e Cleanup code and make behavior follow docs again 2023-05-18 17:44:49 +02:00
tomFlowee 68dcf6a42f Move logic to backend.
make the front-end simpler by having a new property on the
PortfolioDataProvider which shares all existing accounts to
be shown in this Page.
2023-05-18 17:06:33 +02:00
tomFlowee 10360f9c7f Catch exceptions from parsing user input. 2023-05-17 20:58:02 +02:00
tomFlowee 55dbcdced1 Add the new screen for default wallet
This new screen allows one to quickly select which wallet is the
'default'. This is a nicer design than a checkbox on each wallet.
2023-05-17 15:43:25 +02:00
tomFlowee 033cb5962d Add feature; private wallets
A wallet can permanently be labeled a 'private wallet' which is a simple
boolean.
Then when you may need to hand over your phone to a clerk, all you do is
quickly enable the 'private mode' which is sufficiently deep in the menu
to make it hidden.

The effect is that all wallets marked private will be hidden for the
duration of that feature being on.
2023-05-16 20:17:12 +02:00
tomFlowee 1636e1e6b1 Redesign AccountList page (wallets).
The simple 'wallet-information' page is now a general wallet
configuration page.
This has commented out the future archive / encrypt parts as well.
2023-05-16 20:16:59 +02:00
tomFlowee 38345aba5a Further design the InstaPay dataset
This is essentially the backend work for the instapay setup.
GUI still needs to be done.
2023-05-16 20:16:12 +02:00
tomFlowee 89e1b94027 Tie the new config settings to the front-end. 2023-05-15 16:17:26 +02:00
tomFlowee 5f05636dd3 Start a WalletConfig class
This is meant to have a collection of user settings for each individual
wallet. Things like if the wallet balance should be shown in the
totalBalance.
2023-05-15 16:17:26 +02:00
tomFlowee 97a160f603 cleanup header file.
remove class declaration that is no longer needed.
2023-05-15 13:34:26 +02:00
tomFlowee 4ba37bed7c API docs. 2023-05-15 12:59:54 +02:00
tomFlowee 3dd39e2f64 Add API docs. 2023-05-15 12:46:02 +02:00
tomFlowee a209bc64d2 Make the saving of the wallet-list instantly on encrypt
Call the saving of the wallet-list directly after we encrypted a wallet,
avoiding any delay in saving.

Fixes: #17
2023-05-11 22:19:48 +02:00
tomFlowee 5125ecc222 Upgrade tests for 'earlier-this-month' model.
This fixes some cornercases and makes the test
a) properly data-driven (don't use 'today').
b) much more extensive.

This also removes some duplicate code and fixes some bugs in the actual
model it tests.
2023-05-08 10:29:15 +02:00
tomFlowee 7a5eced658 New version 2023-05-07 17:55:07 +02:00
tomFlowee a779bb5f45 Be much more persistent parsing a mnemonic
We now handle correctly user input that we can expect when they manually
enter the mnemonic via an on-screen keyboard.
This includes spacing, line feeds and uppercasing of the first word.
2023-05-07 17:12:07 +02:00
tomFlowee 31953638d1 Display 'sent-to' address
For a transaction we sent elsewhere, show which address
was the recipient of the funds.
2023-05-06 17:51:53 +02:00
tomFlowee fadecb369c Expand the transaction-info page.
Add a lot more userful information to the mobile transaction-info page.
2023-05-06 17:02:06 +02:00