When importing a new wallet while the initial wallet still is not user-
owned, this new wallet effectively replaces the old one.
This means that we still are a single-account setup, even though there
are two wallets. In that usecase we should point to the new one.
Use a buffer to store the json in, allowing us to process the result
even if it is much larger than expected.
Seems there are a lot of onion servers, which 'bloats' the result to the
point that it didn't go in one callback.
The Sweep feature needs the 'previous' transactions to build the new
transaction.
This shows a progress-report per-transaction as they are downloaded.
Additionally this splits the incoming electron-X reply into lines before
processing.
to be allowed to upload it to the google store. Maybe once a year
requiring an upgrade to the latest release is Ok for Google, for
app-devs it is a chore that makes no sense.
Avoiding using the deprecated one would make sense, just forcing
me to use the latest, not so much.
This adds the backend code and the buttons that allow deletion of a
wallet.
Formerly you could archive a wallet and thus remove it from view,
at popular request an archived wallet now gets a button in the
wallets overview to delete the actual wallet completely.
This indeed also removes the files from disk, making it unrecoverable.
Additionally, an actually more complex feature, this allows an existing
wallet to have its history removed and start a re-scan to re-download
all transactions and build the balance.
This is useful for debugging or for recovering from buggy code we
probably had in older versions. (nobody is perfect all the time)
This code now catches the exceptions and logs it.
For instance when a wallet is aware of a transaction but can't find
the file on disk, we now don't just weirdly misbehave but forward an
error.
This separates it into two objects in order to make thead-safety easy
using Qt's signal/slot mechanism.
Additionally this removes magic timeout numbers and simply starts a
timer to check for changes and emit a signal if the status actually
needs updating.
Testing also shows that QML calls the getter a LOT, so I also moved the
broadcastStatus to be buffered and just return that on the call.
This incidentally also simplifies the code, double win.