The Wallet object used to have a guarenteed lifetime longer than the App
singleton, but then we started allowing people to delete their wallet
(argh!).
Also "external" modules, especially living outside of the main tree,
would be much more stable if they can avoid using raw pointers for core
concepts like the Wallet.
We notice a lack of DNS lookup and instead of trying all, we give up
quickly and realize that the most likely reason is that the Internet is
missing.
This avoids giving a punishment to all discovered peers.
Additionally, we recover better and show the password field in such
cases.
And on Mobile this adds a menu option to enable the password field for
better discoverability.
If the user closes the UI before the broadcast has completed, we would
stop broadcasting. Which is unfortunate and not what users expect.
As such we simply hold on to the object for a while (10 min) before we
delete it when it is quite likely already sent.
This changes the notes property to be only set by the user of the
BroadcastFeedback.qml, and not from inside anymore which could break the
property binding causing strange things to happen.
Add logic to notice that the device is offline and notify the
user of this fact on screen.
Repeat checking so we can notify the user that network is back.
This shows in the UI (of the mobile form factor) that the device
is offline and we avoid starting the p2p layer until network
is detected to be there again.
This uses a nicer filename with context.
We also build the user agent more correctly.
Last, this makes work the usage of HEAD to keep up to date without full
download.
This uses the strategy to create one transaction per utxo instead of one
per address which makes this module actually provide some usefullness to
such wallets.
This shows the amount of coins stored on a single address, which we
sweep in one transction by default for privacy reasons.
This adds the ability of the user to specify how many outputs a single
transaction should have when we create it.
Instead of pre-allocation, this moves it to just before we actually
broadcast.
This solves a possible failure of detecting target funds in case the
number of transactions is larger than the gap and the user sends only
one or two of the later once instead of all.
When a transaction has been created by the plugin, this stores it also
on our UI classes and forwards the broadcast status for the front end
to use in some animation.
This section type means that the module will have it's icon shown in
the 'Explore' tab always, it can not be disabled by users and as such
it just becomes an overflow of the main app avoiding worry about a
module not being found.
This is probably a good first milestone, the UX is pretty decent
and the wanted functionality is there.
Various todo's are still there which mostly of the cleanup type.
In the send-sweep module as well as in the PayWithQR this removes
the UserIntent handling and instead moves that to the main.qml
exclusively.
Additionally in the send-sweep module the camera work is split
into its own page, like in the other parts of the app. This helps
us avoiding hacks when we want the main functionality without the
camera.
This is the last of the series of reworks, we should have all
former functionality working again.