Skip to content

Commit

Permalink
[Droid-ify#711] install
Browse files Browse the repository at this point in the history
  • Loading branch information
VishnuSanal committed May 4, 2024
1 parent 6f40457 commit b485297
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,21 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.looker.core.common.PackageName
import com.looker.core.common.extension.dp
import com.looker.core.common.extension.getPackageInfoCompat
import com.looker.core.common.extension.isFirstItemVisible
import com.looker.core.common.extension.systemBarsMargin
import com.looker.core.common.extension.systemBarsPadding
import com.looker.core.domain.Product
import com.looker.core.domain.ProductItem
import com.looker.core.domain.Repository
import com.looker.droidify.database.CursorOwner
import com.looker.droidify.database.Database
import com.looker.droidify.databinding.RecyclerViewWithFabBinding
import com.looker.droidify.service.DownloadService.State.Idle.packageName
import com.looker.droidify.utility.InstallUtils
import com.looker.droidify.utility.extension.screenActivity
import com.looker.droidify.utility.extension.toInstalledItem
import com.looker.installer.InstallManager
import com.looker.installer.model.InstallItem
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import com.looker.core.common.R as CommonR
Expand Down Expand Up @@ -101,17 +107,36 @@ class AppListFragment() : Fragment(), CursorOwner.Callback {
when (menuItem.title) {

getString(com.looker.core.common.R.string.install) -> lifecycleScope.launch {
InstallManager(context, viewModel.settingsRepository)
.install(
InstallItem(
PackageName(productItem.packageName),
productItem.name
)

var products: List<Pair<Product, Repository>> = emptyList()

val packageInfo =
context.packageManager.getPackageInfoCompat(productItem.packageName)

if (packageInfo == null)
return@launch

Database.ProductAdapter.getStream(packageName).collect {
val repository = Database.RepositoryAdapter.get(it[0].repositoryId)

if (repository != null)
products = listOf(Pair(it[0], repository))
}

InstallUtils.install(
context,
viewModel.settingsRepository,
lifecycleScope,
packageInfo.toInstalledItem(),
products
)
}

getString(com.looker.core.common.R.string.uninstall) -> {

getString(com.looker.core.common.R.string.uninstall) -> lifecycleScope.launch {
InstallManager(context, viewModel.settingsRepository)
.uninstall(
PackageName(productItem.packageName)
)
}

else -> {
Expand Down
50 changes: 50 additions & 0 deletions app/src/main/kotlin/com/looker/droidify/utility/InstallUtils.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.looker.droidify.utility

import android.content.Context
import com.looker.core.common.PackageName
import com.looker.core.datastore.SettingsRepository
import com.looker.core.domain.InstalledItem
import com.looker.core.domain.Product
import com.looker.core.domain.Repository
import com.looker.droidify.service.Connection
import com.looker.droidify.service.DownloadService
import com.looker.droidify.utility.extension.startUpdate
import com.looker.installer.InstallManager
import com.looker.installer.model.InstallItem
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch

class InstallUtils {

companion object {
fun install(
context: Context,
settingsRepository: SettingsRepository,
scope: CoroutineScope,
installedItem: InstalledItem,
products: List<Pair<Product, Repository>>
) {
Connection(
serviceClass = DownloadService::class.java,
onBind = { _, binder ->
scope.launch {

val state = binder.downloadState.value

if (state.currentItem is DownloadService.State.Success) {

InstallManager(context, settingsRepository)
.install(
InstallItem(
PackageName(state.currentItem.packageName),
state.currentItem.release.cacheFileName
)
)
}
}
}
).startUpdate(installedItem.packageName, installedItem, products)
}
}

}

0 comments on commit b485297

Please sign in to comment.