06497622f6
* perf(backup): batch database operations during restore Reduce overhead by chunking manga and repo restoration into transactions of 100 entries. Categories now restored in a single transaction. Optimized DatabaseHandler to reuse existing transaction contexts instead of creating redundant nested ones. Changed TransactionElement to internal to allow AndroidDatabaseHandler to check transaction state from the same package. * fix(backup): make restore progress and errors thread-safe Use AtomicInteger for progress and synchronizedList for errors to prevent race conditions during concurrent restoration coroutines. * perf(backup): update progress notification only once per chunk Reduce UI/IPC overhead by moving notification updates out of the inner loop, triggering them only after each 100-item transaction chunk. Reduced on my emulator from 46 seconds to 27 * fix: remove invalid awaitAsOne() call on insert() return type categoriesQueries.insert() returns Long (the inserted row ID), not an ExecutableQuery<T>, so awaitAsOne() is not applicable. * fix(feedback): Use `CopyOnWriteArrayList` and kotlin `AtomicInt`, add a changelog entry Note that using kotlin `AtomicInt` instead of java `AtomicInteger` requires opting into an experimental API. --------- Co-authored-by: AntsyLich <59261191+AntsyLich@users.noreply.github.com>