diff --git a/src/main/kotlin/com/looker/droidify/service/SyncService.kt b/src/main/kotlin/com/looker/droidify/service/SyncService.kt index 10575907..5179180b 100644 --- a/src/main/kotlin/com/looker/droidify/service/SyncService.kt +++ b/src/main/kotlin/com/looker/droidify/service/SyncService.kt @@ -102,7 +102,8 @@ class SyncService : ConnectionService() { } } - fun updateApps(prodcts: List) = batchUpdate(prodcts) + fun updateApps(products: List) = batchUpdate(products) + fun installApps(products: List) = batchUpdate(products, true) fun sync(request: SyncRequest) { GlobalScope.launch { @@ -438,32 +439,32 @@ class SyncService : ConnectionService() { * @param productItems a list of apps pending updates * @see SyncService.displayUpdatesNotification */ - private fun batchUpdate(productItems: List) { + private fun batchUpdate(productItems: List, install: Boolean = false) { if (Preferences[Preferences.Key.InstallAfterSync]) GlobalScope.launch { // run startUpdate on every item productItems.map { productItem -> - Pair( + Triple( + productItem.packageName, db.installedDao.get(productItem.packageName), db.repositoryDao.get(productItem.repositoryId) ) } - .filter { pair -> pair.first != null && pair.second != null } + .filter { pair -> (install || pair.second != null) && pair.third != null } .forEach { installedRepository -> run { // Redundant !! as linter doesn't recognise the above filter's effects - val installedItem = installedRepository.first!! - val repository = installedRepository.second!! + val packageName = installedRepository.first + val installedItem = installedRepository.second + val repository = installedRepository.third!! - val productRepository = db.productDao.get( - installedItem.package_name - ) + val productRepository = db.productDao.get(packageName) .filter { product -> product?.repository_id == repository.id } .map { product -> Pair(product?.data!!, repository) } scope.launch { Utils.startUpdate( - installedItem.package_name, - installedRepository.first, + packageName, + installedItem, productRepository, downloadConnection )