]>
git.ktnx.net Git - mobile-ledger.git/log
Damyan Ivanov [Tue, 27 Apr 2021 18:31:57 +0000 (21:31 +0300)]
correct debug message
Damyan Ivanov [Tue, 27 Apr 2021 18:31:44 +0000 (21:31 +0300)]
lookup transactions by description directly in transactions table
description_history is abandoned, transactions.description uses NOCASE
collation and the UPPER trickery is not needed anymore
Damyan Ivanov [Mon, 26 Apr 2021 04:44:43 +0000 (04:44 +0000)]
several fixes when there are no profiles after full room adoption
in particular, the ProfileThemedActivity doesn't call finish() when
there is no current profile, because this is exactly the case when the
app has just been installed and the main activity's introductory
interface needs to be shown
Damyan Ivanov [Mon, 26 Apr 2021 04:40:00 +0000 (04:40 +0000)]
proactively apply the same fix to the new transaction editor
Damyan Ivanov [Mon, 26 Apr 2021 04:37:20 +0000 (04:37 +0000)]
fix profile editor's bottom part getting overlapped by the soft keyboard
Damyan Ivanov [Mon, 26 Apr 2021 04:14:07 +0000 (04:14 +0000)]
drop unnecessary template type
Damyan Ivanov [Sun, 25 Apr 2021 18:52:06 +0000 (21:52 +0300)]
fix binary & used instead of logical &&
Damyan Ivanov [Sun, 25 Apr 2021 18:51:44 +0000 (21:51 +0300)]
small step towards support for currency in transaction templates
Damyan Ivanov [Sun, 25 Apr 2021 16:42:55 +0000 (19:42 +0300)]
rename an event handler using the onXXX style
Damyan Ivanov [Sun, 25 Apr 2021 16:42:31 +0000 (19:42 +0300)]
show comments when invoking a previous transaction
broken in a recent release
Damyan Ivanov [Sun, 25 Apr 2021 16:29:35 +0000 (19:29 +0300)]
fix converting LedgerTransactionAccount to TransactionAccount (room)
the currency can't be null
having null here led to problems when saving the transaction
speculatively and account amounts are updated, because in the database
account_values.currency is declared not null
Damyan Ivanov [Sat, 24 Apr 2021 21:06:22 +0000 (00:06 +0300)]
fix inclusion of exception log in error message
Damyan Ivanov [Sat, 24 Apr 2021 21:04:59 +0000 (00:04 +0300)]
speculatively add new transactions to the database and UI list
this saves a refresh that would be need to view the new transactions and
ccount balances
Damyan Ivanov [Sat, 24 Apr 2021 20:53:55 +0000 (23:53 +0300)]
fix ordering of transactions when loaded from database
Damyan Ivanov [Sat, 24 Apr 2021 20:51:55 +0000 (23:51 +0300)]
fix displayed transactions count
the count wrongly included the UI elements like date delimiters and the
heading row
Damyan Ivanov [Sat, 24 Apr 2021 20:49:57 +0000 (23:49 +0300)]
restore account ordering by name
it was nice to use the ordering from hledger, but after the migration to
room this worked only by chance - sqlite returned the rows in the order
they were inserted. this means that any new accounts will end up at
the bottom. this is the case when speculative transaction storage is
active (coming soon) and the transaction has a new account.
also, the conversion from db account objects to UI list relies on the
ordering now.
in a future version, the accounts table may store the hledger ordering
in a new column, but this doesn't completely solve the problem when
adding new accounts speculatively
Damyan Ivanov [Sat, 24 Apr 2021 18:29:16 +0000 (18:29 +0000)]
store transaction list in a db transaction
otherwise each insert/update triggers a re-fetch of the while list,
which is devastating for the UI and the battery
Damyan Ivanov [Sat, 24 Apr 2021 18:15:18 +0000 (18:15 +0000)]
put conversion from DB objects to LedgerTransaction in a thread
seems to take a non-trivial amount of time
Damyan Ivanov [Sat, 24 Apr 2021 17:08:38 +0000 (17:08 +0000)]
provide a common routine for running something on the main thread
Damyan Ivanov [Sat, 24 Apr 2021 17:02:06 +0000 (17:02 +0000)]
save profile's order when editing a profile
Damyan Ivanov [Sat, 24 Apr 2021 16:17:10 +0000 (16:17 +0000)]
avoid switching current profile when profiles are rearranged
on rearrange the object instances change so the equality check needs to
be done on IDs, not object instances
Damyan Ivanov [Fri, 23 Apr 2021 21:36:04 +0000 (00:36 +0300)]
fully employ room for loading transactions off DB
Damyan Ivanov [Fri, 23 Apr 2021 20:33:05 +0000 (23:33 +0300)]
debug refinements
Damyan Ivanov [Fri, 23 Apr 2021 20:32:43 +0000 (23:32 +0300)]
do not force transaction list reload upon main activity start
instead, let the account filter observer trigger it (account filter live
data is initialized with a value)
this drops the reloading upon profile change, but profile changes
restart the activity anyway, as do theme changes
also, more precise reaction on account filter changes in the fragment --
no need to reload transactions there now that the main activity does it
Damyan Ivanov [Fri, 23 Apr 2021 20:25:56 +0000 (23:25 +0300)]
MainActivity's logging using a TAG
Damyan Ivanov [Fri, 23 Apr 2021 20:24:02 +0000 (23:24 +0300)]
Data.profile doesn't need to be an inert MutableLiveData
the normal MutableLiveData doesn't fire if not given an initial value
Damyan Ivanov [Fri, 23 Apr 2021 20:21:39 +0000 (23:21 +0300)]
use a constant to indicate profile ID of no real profile
Damyan Ivanov [Fri, 23 Apr 2021 19:29:02 +0000 (22:29 +0300)]
async variant for loading all transactions
Damyan Ivanov [Fri, 23 Apr 2021 19:25:58 +0000 (22:25 +0300)]
TransactionAccumulator needs not keep a reference to the main model
Damyan Ivanov [Fri, 23 Apr 2021 19:14:52 +0000 (22:14 +0300)]
asking UpdateTransactionsTask to load a null profile is fine
it would load an empty transaction list
Damyan Ivanov [Fri, 23 Apr 2021 15:34:24 +0000 (15:34 +0000)]
speculatively update last update date while the transactions are stored
this a white lie, because the displayed list is the new one, retrieved
at the given time
this fixes the previous attempt
Damyan Ivanov [Fri, 23 Apr 2021 15:30:01 +0000 (15:30 +0000)]
Revert "speculatively update last update date before the transactions are stored"
This reverts commit
bae2aa9e
the code in question is run every time the transaction list is filtered
or updated. when the transaction list is updated it is OK to lie a bit,
but when the list is just filtered the timestamp of the data does not
change
Damyan Ivanov [Fri, 23 Apr 2021 05:09:41 +0000 (05:09 +0000)]
speculatively update last update date before the transactions are stored
this a white lie, because the displayed list is the new one, retrieved
at the given time
Damyan Ivanov [Fri, 23 Apr 2021 05:07:26 +0000 (05:07 +0000)]
further optimize transaction storage by comparing dataHash field
if the dataHash field of the transaction that needs storage matches one
from the database (retrieved by profile id and ledger id), then simply
update the generation of the transaction in the database (and its
accounts)
since this is the common case (refreshing transaction list -- most of
the transactions are expected to be unchanged) this saves big time
Damyan Ivanov [Fri, 23 Apr 2021 04:59:53 +0000 (04:59 +0000)]
put all the annotated abstract DAO methods in the beginning
Damyan Ivanov [Fri, 23 Apr 2021 04:56:14 +0000 (04:56 +0000)]
inline the storeAccountsAndTransactions method
it is a bit silly to have run() that only calls one method
Damyan Ivanov [Thu, 22 Apr 2021 21:10:46 +0000 (00:10 +0300)]
fix storing transaction accounts (bad typo)
this is the fastest storage approach, next thing to try -- compare
existing records with the new-to-be and avoid the db update alltogether
if they are the same
Damyan Ivanov [Thu, 22 Apr 2021 21:09:25 +0000 (00:09 +0300)]
additional transaction deletion methods
Damyan Ivanov [Thu, 22 Apr 2021 21:08:45 +0000 (00:08 +0300)]
fix copying ensuring currency is not null
Damyan Ivanov [Thu, 22 Apr 2021 21:08:20 +0000 (00:08 +0300)]
rename method to better reflect what it does
Damyan Ivanov [Thu, 22 Apr 2021 20:44:49 +0000 (23:44 +0300)]
fix field/accessor type mismatch
Damyan Ivanov [Thu, 22 Apr 2021 20:44:28 +0000 (23:44 +0300)]
selects from joined tables need explicit column list :(
Damyan Ivanov [Thu, 22 Apr 2021 20:43:55 +0000 (23:43 +0300)]
speed up transaction storage a bit
by updating existing records in-place. sqlite's insert or replace
statement tries insert, and when that fails because of unique/primary
key violation *removes* the existing record together with any child
records and then retries the insert. it is almost like deleting all the
transactions and inserting them again, but with a failed insert before
that
Damyan Ivanov [Thu, 22 Apr 2021 20:37:15 +0000 (23:37 +0300)]
(commented) facility for debugging Room's SQL queries
available in room 2.3.0
Damyan Ivanov [Thu, 22 Apr 2021 04:39:09 +0000 (04:39 +0000)]
implement stable IDs for the transaction list
Damyan Ivanov [Thu, 22 Apr 2021 04:28:31 +0000 (04:28 +0000)]
fix ordering of filtered transaction items
ledger_id matches the order at which the transactions are stored in
the ledger
Damyan Ivanov [Thu, 22 Apr 2021 04:24:44 +0000 (04:24 +0000)]
fix comparison of transaction date delimiter contents
it is possible that a delimiter that showed the month name no longer
does and vice versa
Damyan Ivanov [Thu, 22 Apr 2021 04:22:37 +0000 (04:22 +0000)]
add some profiling on acount/transaction list storage
Damyan Ivanov [Thu, 22 Apr 2021 04:19:42 +0000 (04:19 +0000)]
BaseDAO: async operation variants without callbacks
Damyan Ivanov [Thu, 22 Apr 2021 04:14:08 +0000 (04:14 +0000)]
use plain 'long' for Currency.id
also make it mutable, like in the rest of the entity classes
Damyan Ivanov [Wed, 21 Apr 2021 20:09:28 +0000 (23:09 +0300)]
drop MobileLedgerDatabase, move initComplete to DB
Damyan Ivanov [Wed, 21 Apr 2021 20:03:50 +0000 (23:03 +0300)]
splash: show forced delay before starting the main activity in debug
we may want to do something useful with this time - preload profile
data?
Damyan Ivanov [Wed, 21 Apr 2021 20:03:06 +0000 (23:03 +0300)]
convert DatabaseInitTask to a lightweight thread
looks much cleaner
Damyan Ivanov [Wed, 21 Apr 2021 19:44:14 +0000 (22:44 +0300)]
drop remnants of gradual transaction data loading, and last non-Room SQL
Damyan Ivanov [Wed, 21 Apr 2021 19:34:48 +0000 (22:34 +0300)]
preload transaction list page, making transition smoother
Damyan Ivanov [Wed, 21 Apr 2021 19:29:09 +0000 (22:29 +0300)]
fix updates of last transaction update text
Damyan Ivanov [Wed, 21 Apr 2021 19:22:20 +0000 (22:22 +0300)]
rework transaction list with proper view holders and no background load
all the data is already available in the transaction list loaded from
the database (asynchronously)
also, fix a glitch where a visible item's matching account row is not
coloured when the list is filtered by account name (because the
underlying item is the same)
Damyan Ivanov [Tue, 20 Apr 2021 21:01:31 +0000 (00:01 +0300)]
fix finding the earliest transaction by date
Damyan Ivanov [Tue, 20 Apr 2021 20:37:14 +0000 (23:37 +0300)]
rewrite update of transaction list from DB with Room
Damyan Ivanov [Tue, 20 Apr 2021 19:57:56 +0000 (22:57 +0300)]
drop unused async db queue classes
Damyan Ivanov [Tue, 20 Apr 2021 19:55:04 +0000 (22:55 +0300)]
drop now unused MLDB class along with its async db routines
Damyan Ivanov [Tue, 20 Apr 2021 19:46:46 +0000 (22:46 +0300)]
wipe retrieval progress when transaction retrieval is stopped
fixes a glitch when a retrieval error suggests changing profile
configuration, and from there the profile is deleted and activity
restarted because of the change of the active profile. the new activity
instance observes the retrieval result and gets the error and reports it
erroneously
Damyan Ivanov [Tue, 20 Apr 2021 19:44:12 +0000 (22:44 +0300)]
interpret only json-parsing exceptions as API mismatch
all others, like no Internet, bad host name etc should be reported as
usual
Damyan Ivanov [Mon, 19 Apr 2021 20:07:17 +0000 (23:07 +0300)]
when deleting the currently active profile, switch to the first profile
Damyan Ivanov [Sun, 18 Apr 2021 20:07:35 +0000 (23:07 +0300)]
fix exception handling while trying different API versions
Damyan Ivanov [Sun, 18 Apr 2021 11:49:53 +0000 (14:49 +0300)]
fix profile deletion / data wipe
do not keep a reference to the profile being edited, instead query it
by the ID now stored in the model
one thing doesn't work yet - reaction to deletion of the current profile
Damyan Ivanov [Sun, 18 Apr 2021 10:56:54 +0000 (13:56 +0300)]
fix passing profile ID to ProfileDetailActivity
Damyan Ivanov [Sun, 18 Apr 2021 10:53:05 +0000 (10:53 +0000)]
add a pre-release build variant
to be used as debug aid when initial install needs to be tested, but
keeping the data in the debug-variant ap
Damyan Ivanov [Sun, 18 Apr 2021 10:51:54 +0000 (13:51 +0300)]
make use of getBindingAdapter and save a field
Damyan Ivanov [Sun, 18 Apr 2021 10:43:24 +0000 (13:43 +0300)]
bump library dependencies
RecycleView 1.2.0 deprecated getAdapterPosition, replace with
getBindingAdapterPosition -- no concat adapters are used
Damyan Ivanov [Sun, 18 Apr 2021 09:42:54 +0000 (12:42 +0300)]
fix creation of a new profile after Room-y of Profile adoption
Damyan Ivanov [Sun, 18 Apr 2021 09:41:28 +0000 (12:41 +0300)]
fix template editor layout
due to a glitch in the view chains on some devices the layout was
broken
noise: renaming of IDs
Damyan Ivanov [Thu, 15 Apr 2021 20:09:57 +0000 (20:09 +0000)]
constant TAG
Damyan Ivanov [Thu, 15 Apr 2021 20:09:34 +0000 (20:09 +0000)]
debug--
Damyan Ivanov [Thu, 15 Apr 2021 20:07:38 +0000 (20:07 +0000)]
Room-based profile management
MobileLedgerProfile is gone, Room spreads gradually
Damyan Ivanov [Thu, 15 Apr 2021 18:47:33 +0000 (18:47 +0000)]
equality check for Profile
Damyan Ivanov [Thu, 15 Apr 2021 18:46:05 +0000 (18:46 +0000)]
Room-based profile wipe
used only in debug builds as before
Damyan Ivanov [Thu, 15 Apr 2021 18:39:34 +0000 (18:39 +0000)]
dummy migration method
it appeared useful at a point, but later the fix was another
still, it may be handy in the future
Damyan Ivanov [Thu, 15 Apr 2021 05:59:03 +0000 (05:59 +0000)]
Default template name given at save time
gets in the way when put in the details
Damyan Ivanov [Sun, 11 Apr 2021 20:44:52 +0000 (20:44 +0000)]
asynchronous profile initialisation
the problem here was that the startup profile is read from the DB,
synchronously, and all DB operations need to happen via Room off the
main thread
since at activity startup only the theme is needed, that, and the startup
profile ID can be stored in the android preferences. actual loading of
profile and further data can be done after the theme is setup, in the
background, via Room
Damyan Ivanov [Sat, 10 Apr 2021 09:35:15 +0000 (12:35 +0300)]
more Room adoption - accounts@100%, some profiles/transactions
Damyan Ivanov [Sun, 4 Apr 2021 15:16:50 +0000 (18:16 +0300)]
implement incremental changes in account list adapter
avoids unnecessary viewHolder replacement
expansion/collapse are much nicer now
Damyan Ivanov [Sun, 4 Apr 2021 09:27:21 +0000 (12:27 +0300)]
adopt Room for displaying account lists
Damyan Ivanov [Sun, 4 Apr 2021 09:22:42 +0000 (12:22 +0300)]
generation is long
Damyan Ivanov [Sun, 4 Apr 2021 09:21:51 +0000 (12:21 +0300)]
account_id → accountId
Damyan Ivanov [Fri, 26 Mar 2021 17:19:28 +0000 (19:19 +0200)]
specialized sub-classes of AccountListItem
Damyan Ivanov [Fri, 26 Mar 2021 16:54:29 +0000 (18:54 +0200)]
debug--
Damyan Ivanov [Fri, 26 Mar 2021 16:54:20 +0000 (18:54 +0200)]
fix SQL when cleaning obsolete transaction/accounts
Damyan Ivanov [Fri, 26 Mar 2021 16:53:58 +0000 (18:53 +0200)]
minor optimization in getting next generation
Damyan Ivanov [Thu, 25 Mar 2021 21:38:54 +0000 (23:38 +0200)]
fix SQL when filtering transaction list by account name
Damyan Ivanov [Thu, 25 Mar 2021 21:34:56 +0000 (23:34 +0200)]
fix transaction account storage SQL
Damyan Ivanov [Thu, 25 Mar 2021 21:34:42 +0000 (23:34 +0200)]
whitespace
Damyan Ivanov [Thu, 25 Mar 2021 21:34:31 +0000 (23:34 +0200)]
fix db migration to surrogate IDs (final step)
the cleanest approach is to create all new tables, move the data, and
then drop/rename them, followed by index creation
fixes a problem with transaction_accounts being empty because the
profiles table was dropped
requires foreign_keys pragma (set outside transaction control) so that
the declare foreign keys to the new tables get renamed with the tables
Damyan Ivanov [Wed, 24 Mar 2021 18:53:05 +0000 (20:53 +0200)]
more fall-outs after transition to surrogate IDs
Damyan Ivanov [Mon, 22 Mar 2021 05:54:11 +0000 (07:54 +0200)]
fix migration of transaction_accounts (attempt #N)
Damyan Ivanov [Mon, 22 Mar 2021 05:41:42 +0000 (07:41 +0200)]
another step towards surrogate ID db objects
profile → profile_id in more places
transactions.id is globally unique; ledger-supplied ID
(profile-specific) is in transactions.ledger_id
Damyan Ivanov [Sun, 21 Mar 2021 20:20:31 +0000 (22:20 +0200)]
another step towards surrogate ID db objects
rename profile's uuid column to catch (and remove) all its usages
use default theme id for the initial theme id
Damyan Ivanov [Thu, 18 Mar 2021 17:09:34 +0000 (19:09 +0200)]
migrate to surrogate IDs for all database objects
along with foreign keys etc
Damyan Ivanov [Thu, 11 Mar 2021 16:55:27 +0000 (18:55 +0200)]
drop unused create_db.sql
Damyan Ivanov [Thu, 11 Mar 2021 15:01:09 +0000 (17:01 +0200)]
replace custom autocompletion adapter hooking with specialised adapters
... which use Room