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

Commit f377726b authored by Mohit Mali's avatar Mohit Mali
Browse files

Resolve update menu

parent 0553e3d0
Loading
Loading
Loading
Loading
Loading
+37 −6
Original line number Diff line number Diff line
@@ -18,16 +18,15 @@
package foundation.e.apps.search.model

import android.content.Context
import android.content.Intent
import android.os.AsyncTask
import androidx.lifecycle.MutableLiveData
import foundation.e.apps.api.GitlabDataRequest
import foundation.e.apps.application.model.Application
import foundation.e.apps.applicationmanager.ApplicationManager
import foundation.e.apps.categories.category.CategoryActivity
import foundation.e.apps.categories.model.Category
import foundation.e.apps.utils.Common
import foundation.e.apps.utils.Constants
import foundation.e.apps.utils.Error
import foundation.e.apps.utils.Execute

class SearchModel : SearchModelInterface {

@@ -88,9 +87,19 @@ class SearchModel : SearchModelInterface {

        if (error == null) {
            if ("microG Exposure Notification version".contains(searchQuery, true)) {
                val categoryIntent = Intent(context, CategoryActivity::class.java)
                categoryIntent.putExtra(Constants.CATEGORY_KEY, Category("system_apps"))
                context.startActivity(categoryIntent)
                Execute({
                    this.applicationList.postValue(loadMicroGVersion())
                }, {
                    if (error == null &&   this.applicationList.value != null) {
                        val result = ArrayList<Application>()
                        result.addAll(this.applicationList.value!!)
                        if (  this.applicationList.value!!.size != 0) {
                            this.applicationList.postValue(result)
                        }
                    } else {
                        screenError.value = error
                    }
                })
            } else {
                if (applicationList.isNotEmpty()) {
                    if (pageNumber > 1 && this.applicationList.value != null) {
@@ -108,4 +117,26 @@ class SearchModel : SearchModelInterface {
            screenError.value = error
        }
    }

/*gets microG application from gitlab*/
    private fun loadMicroGVersion(): ArrayList<Application>? {
        var gitlabData: GitlabDataRequest.GitlabDataResult? = null
        GitlabDataRequest()
                .requestGmsCoreRelease { applicationError, listGitlabData ->

                    when (applicationError) {
                        null -> {
                            gitlabData = listGitlabData!!
                        }
                        else -> {
                            error = applicationError
                        }
                    }
                }
        return if (gitlabData != null) {
            gitlabData!!.getApplications(applicationManager, context)
        } else {
            null
        }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ class SearchSuggestionsTask(private val searchQuery: String,
    }

    override fun onPostExecute(result: ArrayList<String>) {
        /*User type following string it will add microG element into array list*/
        if ("microG Exposure Notification version".contains(searchQuery, true)) {
            result.add(0,"microG Exposure Notification version")
        }
+49 −2
Original line number Diff line number Diff line
@@ -20,27 +20,74 @@ package foundation.e.apps.updates.model
import android.content.Context
import android.os.AsyncTask
import androidx.lifecycle.MutableLiveData
import foundation.e.apps.api.GitlabDataRequest
import foundation.e.apps.application.model.Application
import foundation.e.apps.application.model.ApplicationInfo
import foundation.e.apps.application.model.State
import foundation.e.apps.applicationmanager.ApplicationManager
import foundation.e.apps.utils.Common
import foundation.e.apps.utils.Error
import foundation.e.apps.utils.Execute

class UpdatesModel : UpdatesModelInterface {
    val applicationList = MutableLiveData<ArrayList<Application>>()
    var screenError = MutableLiveData<Error>()

    private lateinit var context: Context
    var applicationManager: ApplicationManager? = null
    private var error: Error? = null

    override fun loadApplicationList(context: Context) {
        this.context = context
        if (Common.isNetworkAvailable(context)) {
            OutdatedApplicationsFileReader(context.packageManager, applicationManager!!, this)
                    .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, context)
        } else {
            screenError.value = Error.NO_INTERNET
        }

        Execute({
            var application: Application? = loadMicroGVersion()?.get(0)
            if (application!!.state != State.INSTALLED) {
                this.applicationList.postValue(loadMicroGVersion())
            }


        }, {
            if (error == null && this.applicationList.value != null) {
                val result = ArrayList<Application>()
                result.addAll(this.applicationList.value!!)
                if (this.applicationList.value!!.size != 0) {
                    this.applicationList.postValue(result)
                }
            } else {
                screenError.value = error
            }
        })
    }

    override fun onAppsFound(applications: ArrayList<Application>) {
        applicationList.value = applications
    }


    private fun loadMicroGVersion(): ArrayList<Application>? {
        var gitlabData: GitlabDataRequest.GitlabDataResult? = null
        GitlabDataRequest()
                .requestGmsCoreRelease { applicationError, listGitlabData ->

                    when (applicationError) {
                        null -> {
                            gitlabData = listGitlabData!!
                        }
                        else -> {
                            error = applicationError
                        }
                    }
                }
        return if (gitlabData != null) {
            gitlabData!!.getApplications(applicationManager!!, context)
        } else {
            null
        }
    }
}