Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9d07a29 authored by Nihar Thakkar's avatar Nihar Thakkar
Browse files

Assert application data in parallel

parent 1cdfba6c
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -90,7 +90,10 @@ class UpdatesFragment : Fragment() {
            }
        })

        if (updatesViewModel.getApplications().value == null ||
                updatesViewModel.getApplications().value!!.isEmpty()) {
            updatesViewModel.loadApplicationList(context!!)
        }

        return view
    }
+28 −12
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ import io.eelo.appinstaller.application.model.Application
import io.eelo.appinstaller.application.model.State
import io.eelo.appinstaller.applicationmanager.ApplicationManager
import io.eelo.appinstaller.utils.Constants
import io.eelo.appinstaller.utils.Execute
import java.io.BufferedReader
import java.io.InputStreamReader
import java.lang.Exception
@@ -15,11 +16,18 @@ class OutdatedApplicationsFileReader(private val applicationManager: Application
        AsyncTask<Context, Void, ArrayList<Application>>() {
    override fun doInBackground(vararg context: Context): ArrayList<Application> {
        val applications = ArrayList<Application>()
        var totalLines = 0
        var requestsComplete = 0
        val blocker = Object()
        try {
            context[0].openFileInput(Constants.OUTDATED_APPLICATIONS_FILENAME).use {
                val inputStreamReader = InputStreamReader(it)
                val bufferedReader = BufferedReader(inputStreamReader)
                bufferedReader.forEachLine { packageName ->
                BufferedReader(InputStreamReader(it)).forEachLine {
                    totalLines++
                }
            }
            context[0].openFileInput(Constants.OUTDATED_APPLICATIONS_FILENAME).use {
                BufferedReader(InputStreamReader(it)).forEachLine { packageName ->
                    Execute({
                        val application = applicationManager.findOrCreateApp(packageName)
                        val error = application.assertBasicData(context[0])
                        if (error == null) {
@@ -27,10 +35,18 @@ class OutdatedApplicationsFileReader(private val applicationManager: Application
                                applications.add(application)
                            }
                        }
                    }, {
                        requestsComplete++
                        if (requestsComplete == totalLines) {
                            synchronized(blocker) {
                                blocker.notify()
                            }
                        }
                    })
                }
                synchronized(blocker) {
                    blocker.wait()
                }
                bufferedReader.close()
                inputStreamReader.close()
                it.close()
            }
        } catch (exception: Exception) {
            exception.printStackTrace()