mirror of
https://github.com/NeoApplications/Neo-Store.git
synced 2025-03-14 10:17:08 +00:00
Update: Restructure the project in 5 main packages
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
activity = "1.10.0"
|
||||
agp = "8.8.0"
|
||||
biometric = "1.2.0-alpha05"
|
||||
coil = "3.0.4"
|
||||
coil = "3.1.0"
|
||||
compose-bom = "2025.01.01"
|
||||
compose-accompanist = "0.37.0"
|
||||
compose-markdown = "0.5.0"
|
||||
@ -13,7 +13,7 @@ koin = "4.0.2"
|
||||
koin-ksp = "1.4.0"
|
||||
kotlin = "2.1.10"
|
||||
ksp = "2.1.10-1.0.29"
|
||||
ktor = "3.0.3"
|
||||
ktor = "3.1.0"
|
||||
leakcanary = "2.14"
|
||||
libsu = "6.0.0"
|
||||
lifecycle = "2.8.7"
|
||||
|
@ -20,7 +20,7 @@
|
||||
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
|
||||
|
||||
<application
|
||||
android:name=".MainApplication"
|
||||
android:name=".NeoApp"
|
||||
android:allowBackup="false"
|
||||
android:enableOnBackInvokedCallback="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
@ -114,11 +114,11 @@
|
||||
</activity>
|
||||
|
||||
<receiver
|
||||
android:name=".service.InstallerReceiver"
|
||||
android:name="com.machiav3lli.fdroid.manager.service.InstallerReceiver"
|
||||
android:exported="false" />
|
||||
|
||||
<provider
|
||||
android:name=".content.Cache$Provider"
|
||||
android:name="com.machiav3lli.fdroid.data.content.Cache$Provider"
|
||||
android:authorities="${applicationId}.provider.cache"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true" />
|
||||
@ -134,7 +134,7 @@
|
||||
</provider>
|
||||
|
||||
<receiver
|
||||
android:name=".service.ActionReceiver"
|
||||
android:name="com.machiav3lli.fdroid.manager.service.ActionReceiver"
|
||||
android:exported="false" />
|
||||
|
||||
<service
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.machiav3lli.fdroid
|
||||
|
||||
import com.machiav3lli.fdroid.entity.PermissionGroup
|
||||
import com.machiav3lli.fdroid.data.entity.PermissionGroup
|
||||
|
||||
const val NOTIFICATION_CHANNEL_SYNCING = "syncing"
|
||||
const val NOTIFICATION_CHANNEL_UPDATES = "updates"
|
||||
|
@ -28,15 +28,15 @@ import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.NavHostController
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.DatabaseX
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.DatabaseX
|
||||
import com.machiav3lli.fdroid.ui.compose.theme.AppTheme
|
||||
import com.machiav3lli.fdroid.ui.navigation.AppNavHost
|
||||
import com.machiav3lli.fdroid.ui.navigation.NavRoute
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.utility.extension.text.pathCropped
|
||||
import com.machiav3lli.fdroid.utility.isBiometricLockEnabled
|
||||
import com.machiav3lli.fdroid.utility.isDarkTheme
|
||||
import com.machiav3lli.fdroid.utils.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.utils.extension.text.pathCropped
|
||||
import com.machiav3lli.fdroid.utils.isBiometricLockEnabled
|
||||
import com.machiav3lli.fdroid.utils.isDarkTheme
|
||||
import com.machiav3lli.fdroid.viewmodels.AppSheetVM
|
||||
import com.machiav3lli.fdroid.viewmodels.MainVM
|
||||
import com.machiav3lli.fdroid.viewmodels.PrefsVM
|
||||
@ -82,9 +82,9 @@ class NeoActivity : AppCompatActivity() {
|
||||
|
||||
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
(application as MainApplication).mActivity = this
|
||||
(application as NeoApp).mActivity = this
|
||||
currentTheme = Preferences[Preferences.Key.Theme].resId
|
||||
MainApplication.mainActivity = this
|
||||
NeoApp.mainActivity = this
|
||||
super.onCreate(savedInstanceState)
|
||||
|
||||
setContent {
|
||||
@ -191,7 +191,7 @@ class NeoActivity : AppCompatActivity() {
|
||||
if (!packageName.isNullOrEmpty()) {
|
||||
lifecycleScope.launch {
|
||||
specialIntent.cacheFileName?.let {
|
||||
MainApplication.installer.install(packageName, it)
|
||||
NeoApp.installer.install(packageName, it)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -309,7 +309,7 @@ class NeoActivity : AppCompatActivity() {
|
||||
.setConfirmationRequired(true)
|
||||
.setAllowedAuthenticators(
|
||||
BiometricManager.Authenticators.DEVICE_CREDENTIAL or (
|
||||
if (MainApplication.context.isBiometricLockEnabled()) BiometricManager.Authenticators.BIOMETRIC_WEAK
|
||||
if (NeoApp.context.isBiometricLockEnabled()) BiometricManager.Authenticators.BIOMETRIC_WEAK
|
||||
else 0
|
||||
)
|
||||
)
|
||||
|
@ -17,26 +17,26 @@ import coil3.request.crossfade
|
||||
import com.anggrayudi.storage.extension.postToUi
|
||||
import com.google.android.material.color.DynamicColors
|
||||
import com.google.android.material.color.DynamicColorsOptions
|
||||
import com.machiav3lli.fdroid.content.Cache
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.DatabaseX
|
||||
import com.machiav3lli.fdroid.database.databaseModule
|
||||
import com.machiav3lli.fdroid.index.RepositoryUpdater
|
||||
import com.machiav3lli.fdroid.installer.AppInstaller
|
||||
import com.machiav3lli.fdroid.installer.BaseInstaller
|
||||
import com.machiav3lli.fdroid.installer.installerModule
|
||||
import com.machiav3lli.fdroid.network.CoilDownloader
|
||||
import com.machiav3lli.fdroid.network.Downloader
|
||||
import com.machiav3lli.fdroid.network.downloadClientModule
|
||||
import com.machiav3lli.fdroid.network.exodusModule
|
||||
import com.machiav3lli.fdroid.service.PackageChangedReceiver
|
||||
import com.machiav3lli.fdroid.service.WorkerManager
|
||||
import com.machiav3lli.fdroid.service.worker.BatchSyncWorker
|
||||
import com.machiav3lli.fdroid.service.worker.SyncRequest
|
||||
import com.machiav3lli.fdroid.service.workmanagerModule
|
||||
import com.machiav3lli.fdroid.utility.Utils.setLanguage
|
||||
import com.machiav3lli.fdroid.utility.Utils.toInstalledItem
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.data.content.Cache
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.DatabaseX
|
||||
import com.machiav3lli.fdroid.data.database.databaseModule
|
||||
import com.machiav3lli.fdroid.data.index.RepositoryUpdater
|
||||
import com.machiav3lli.fdroid.manager.installer.AppInstaller
|
||||
import com.machiav3lli.fdroid.manager.installer.BaseInstaller
|
||||
import com.machiav3lli.fdroid.manager.installer.installerModule
|
||||
import com.machiav3lli.fdroid.manager.network.CoilDownloader
|
||||
import com.machiav3lli.fdroid.manager.network.Downloader
|
||||
import com.machiav3lli.fdroid.manager.network.downloadClientModule
|
||||
import com.machiav3lli.fdroid.manager.network.exodusModule
|
||||
import com.machiav3lli.fdroid.manager.service.PackageChangedReceiver
|
||||
import com.machiav3lli.fdroid.manager.service.WorkerManager
|
||||
import com.machiav3lli.fdroid.manager.service.worker.BatchSyncWorker
|
||||
import com.machiav3lli.fdroid.manager.service.worker.SyncRequest
|
||||
import com.machiav3lli.fdroid.manager.service.workmanagerModule
|
||||
import com.machiav3lli.fdroid.utils.Utils.setLanguage
|
||||
import com.machiav3lli.fdroid.utils.Utils.toInstalledItem
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import io.ktor.client.engine.ProxyBuilder
|
||||
import io.ktor.http.Url
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
@ -53,7 +53,7 @@ import java.lang.ref.WeakReference
|
||||
import java.net.Proxy
|
||||
|
||||
@OptIn(KoinExperimentalAPI::class)
|
||||
class MainApplication : Application(), SingletonImageLoader.Factory, KoinStartup {
|
||||
class NeoApp : Application(), SingletonImageLoader.Factory, KoinStartup {
|
||||
|
||||
val db: DatabaseX by inject()
|
||||
lateinit var mActivity: AppCompatActivity
|
||||
@ -64,11 +64,11 @@ class MainApplication : Application(), SingletonImageLoader.Factory, KoinStartup
|
||||
val enqueuedInstalls: MutableSet<String> = mutableSetOf()
|
||||
val latestSyncs: MutableMap<Long, Long> = mutableMapOf()
|
||||
|
||||
private var appRef: WeakReference<MainApplication> = WeakReference(null)
|
||||
private val neo_store: MainApplication get() = appRef.get()!!
|
||||
private var appRef: WeakReference<NeoApp> = WeakReference(null)
|
||||
private val neo_store: NeoApp get() = appRef.get()!!
|
||||
|
||||
private var mainActivityRef: WeakReference<NeoActivity> = WeakReference(null)
|
||||
var mainActivity: NeoActivity?
|
||||
var mainActivity: NeoActivity? // TODO make private
|
||||
get() = mainActivityRef.get()
|
||||
set(mainActivity) {
|
||||
mainActivityRef = WeakReference(mainActivity)
|
||||
@ -117,7 +117,7 @@ class MainApplication : Application(), SingletonImageLoader.Factory, KoinStartup
|
||||
|
||||
override fun onKoinStartup() = koinConfiguration {
|
||||
androidLogger()
|
||||
androidContext(this@MainApplication)
|
||||
androidContext(this@NeoApp)
|
||||
modules(
|
||||
exodusModule,
|
||||
downloadClientModule,
|
||||
@ -211,8 +211,9 @@ class MainApplication : Application(), SingletonImageLoader.Factory, KoinStartup
|
||||
}
|
||||
|
||||
private suspend fun updatePeriodicSyncJob(force: Boolean) = withContext(Dispatchers.IO) {
|
||||
val wm = MainApplication.wm.workManager
|
||||
val reschedule = force || wm.getWorkInfosForUniqueWork(TAG_BATCH_SYNC_PERIODIC).get().isEmpty()
|
||||
val wm = NeoApp.wm.workManager
|
||||
val reschedule =
|
||||
force || wm.getWorkInfosForUniqueWork(TAG_BATCH_SYNC_PERIODIC).get().isEmpty()
|
||||
if (reschedule) {
|
||||
when (val autoSync = Preferences[Preferences.Key.AutoSync]) {
|
||||
is Preferences.AutoSync.Never -> {
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.content
|
||||
package com.machiav3lli.fdroid.data.content
|
||||
|
||||
import android.content.ContentValues
|
||||
import android.content.Context
|
||||
@ -15,9 +15,9 @@ import androidx.core.content.FileProvider
|
||||
import androidx.documentfile.provider.DocumentFile
|
||||
import com.anggrayudi.storage.file.getAbsolutePath
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.getDownloadFolder
|
||||
import com.machiav3lli.fdroid.utility.isDownloadExternal
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.getDownloadFolder
|
||||
import com.machiav3lli.fdroid.utils.isDownloadExternal
|
||||
import java.io.File
|
||||
import java.util.UUID
|
||||
import kotlin.concurrent.thread
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.content
|
||||
package com.machiav3lli.fdroid.data.content
|
||||
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
@ -6,16 +6,16 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener
|
||||
import android.os.Build
|
||||
import androidx.appcompat.app.AppCompatDelegate
|
||||
import com.machiav3lli.fdroid.FILTER_CATEGORY_ALL
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.PREFS_LANGUAGE
|
||||
import com.machiav3lli.fdroid.PREFS_LANGUAGE_DEFAULT
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.entity.AndroidVersion
|
||||
import com.machiav3lli.fdroid.entity.InstallerType
|
||||
import com.machiav3lli.fdroid.entity.Order
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.getHasSystemInstallPermission
|
||||
import com.machiav3lli.fdroid.utility.isBiometricLockAvailable
|
||||
import com.machiav3lli.fdroid.data.entity.AndroidVersion
|
||||
import com.machiav3lli.fdroid.data.entity.InstallerType
|
||||
import com.machiav3lli.fdroid.data.entity.Order
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.getHasSystemInstallPermission
|
||||
import com.machiav3lli.fdroid.utils.isBiometricLockAvailable
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
@ -573,7 +573,7 @@ data object Preferences : OnSharedPreferenceChangeListener {
|
||||
Enumeration<Installer> {
|
||||
override val values: List<Installer>
|
||||
get() = mutableListOf(Default, Root, AM, Legacy).apply {
|
||||
if (MainApplication.context.getHasSystemInstallPermission())
|
||||
if (NeoApp.context.getHasSystemInstallPermission())
|
||||
add(System)
|
||||
}
|
||||
|
||||
@ -588,7 +588,7 @@ data object Preferences : OnSharedPreferenceChangeListener {
|
||||
Enumeration<ActionLock> {
|
||||
override val values: List<ActionLock>
|
||||
get() = mutableListOf(None, Device).apply {
|
||||
if (MainApplication.context.isBiometricLockAvailable())
|
||||
if (NeoApp.context.isBiometricLockAvailable())
|
||||
add(Biometric)
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package com.machiav3lli.fdroid.content
|
||||
package com.machiav3lli.fdroid.data.content
|
||||
|
||||
import android.os.Build
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
|
||||
val BooleanPrefsMeta = mapOf(
|
||||
Preferences.Key.ShowScreenshots to Pair(
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.content
|
||||
package com.machiav3lli.fdroid.data.content
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
@ -1,11 +1,11 @@
|
||||
package com.machiav3lli.fdroid.database
|
||||
package com.machiav3lli.fdroid.data.database
|
||||
|
||||
import androidx.room.TypeConverter
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.entity.Author
|
||||
import com.machiav3lli.fdroid.entity.Donate
|
||||
import com.machiav3lli.fdroid.entity.Screenshot
|
||||
import com.machiav3lli.fdroid.service.worker.DownloadState
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.entity.Author
|
||||
import com.machiav3lli.fdroid.data.entity.Donate
|
||||
import com.machiav3lli.fdroid.data.entity.Screenshot
|
||||
import com.machiav3lli.fdroid.manager.service.worker.DownloadState
|
||||
|
||||
object Converters {
|
||||
@TypeConverter
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database
|
||||
package com.machiav3lli.fdroid.data.database
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.AutoMigration
|
||||
@ -15,53 +15,53 @@ import com.machiav3lli.fdroid.TABLE_EXODUS_INFO
|
||||
import com.machiav3lli.fdroid.TABLE_INSTALL_TASK
|
||||
import com.machiav3lli.fdroid.TABLE_REPOSITORY
|
||||
import com.machiav3lli.fdroid.TABLE_TRACKER
|
||||
import com.machiav3lli.fdroid.database.dao.CategoryDao
|
||||
import com.machiav3lli.fdroid.database.dao.CategoryTempDao
|
||||
import com.machiav3lli.fdroid.database.dao.DownloadedDao
|
||||
import com.machiav3lli.fdroid.database.dao.ExodusInfoDao
|
||||
import com.machiav3lli.fdroid.database.dao.ExtrasDao
|
||||
import com.machiav3lli.fdroid.database.dao.InstallTaskDao
|
||||
import com.machiav3lli.fdroid.database.dao.InstalledDao
|
||||
import com.machiav3lli.fdroid.database.dao.ProductDao
|
||||
import com.machiav3lli.fdroid.database.dao.ProductTempDao
|
||||
import com.machiav3lli.fdroid.database.dao.ReleaseDao
|
||||
import com.machiav3lli.fdroid.database.dao.ReleaseTempDao
|
||||
import com.machiav3lli.fdroid.database.dao.RepositoryDao
|
||||
import com.machiav3lli.fdroid.database.dao.TrackerDao
|
||||
import com.machiav3lli.fdroid.database.entity.Category
|
||||
import com.machiav3lli.fdroid.database.entity.CategoryTemp
|
||||
import com.machiav3lli.fdroid.database.entity.Downloaded
|
||||
import com.machiav3lli.fdroid.database.entity.ExodusInfo
|
||||
import com.machiav3lli.fdroid.database.entity.Extras
|
||||
import com.machiav3lli.fdroid.database.entity.InstallTask
|
||||
import com.machiav3lli.fdroid.database.entity.Installed
|
||||
import com.machiav3lli.fdroid.database.entity.Product
|
||||
import com.machiav3lli.fdroid.database.entity.ProductTemp
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.database.entity.ReleaseTemp
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV10
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV11
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV12
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV14
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV15
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV17
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV18
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV19
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV20
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV21
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV22
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV23
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV29
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV30
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.addedReposV9
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.archiveRepos
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.defaultRepositories
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.removedReposV28
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.removedReposV29
|
||||
import com.machiav3lli.fdroid.database.entity.Repository.Companion.removedReposV31
|
||||
import com.machiav3lli.fdroid.database.entity.Tracker
|
||||
import com.machiav3lli.fdroid.service.worker.SyncWorker.Companion.enableRepo
|
||||
import com.machiav3lli.fdroid.data.database.dao.CategoryDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.CategoryTempDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.DownloadedDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.ExodusInfoDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.ExtrasDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.InstallTaskDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.InstalledDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.ProductDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.ProductTempDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.ReleaseDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.ReleaseTempDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.RepositoryDao
|
||||
import com.machiav3lli.fdroid.data.database.dao.TrackerDao
|
||||
import com.machiav3lli.fdroid.data.database.entity.Category
|
||||
import com.machiav3lli.fdroid.data.database.entity.CategoryTemp
|
||||
import com.machiav3lli.fdroid.data.database.entity.Downloaded
|
||||
import com.machiav3lli.fdroid.data.database.entity.ExodusInfo
|
||||
import com.machiav3lli.fdroid.data.database.entity.Extras
|
||||
import com.machiav3lli.fdroid.data.database.entity.InstallTask
|
||||
import com.machiav3lli.fdroid.data.database.entity.Installed
|
||||
import com.machiav3lli.fdroid.data.database.entity.Product
|
||||
import com.machiav3lli.fdroid.data.database.entity.ProductTemp
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.database.entity.ReleaseTemp
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV10
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV11
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV12
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV14
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV15
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV17
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV18
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV19
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV20
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV21
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV22
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV23
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV29
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV30
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.addedReposV9
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.archiveRepos
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.defaultRepositories
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.removedReposV28
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.removedReposV29
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository.Companion.removedReposV31
|
||||
import com.machiav3lli.fdroid.data.database.entity.Tracker
|
||||
import com.machiav3lli.fdroid.manager.service.worker.SyncWorker.Companion.enableRepo
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database
|
||||
package com.machiav3lli.fdroid.data.database
|
||||
|
||||
class QueryBuilder {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
@ -1,9 +1,9 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Query
|
||||
import com.machiav3lli.fdroid.database.entity.Category
|
||||
import com.machiav3lli.fdroid.database.entity.CategoryTemp
|
||||
import com.machiav3lli.fdroid.data.database.entity.Category
|
||||
import com.machiav3lli.fdroid.data.database.entity.CategoryTemp
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
@ -1,8 +1,8 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Query
|
||||
import com.machiav3lli.fdroid.database.entity.Downloaded
|
||||
import com.machiav3lli.fdroid.data.database.entity.Downloaded
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
@ -1,8 +1,8 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Query
|
||||
import com.machiav3lli.fdroid.database.entity.ExodusInfo
|
||||
import com.machiav3lli.fdroid.data.database.entity.ExodusInfo
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
@ -1,9 +1,9 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Query
|
||||
import androidx.room.Transaction
|
||||
import com.machiav3lli.fdroid.database.entity.Extras
|
||||
import com.machiav3lli.fdroid.data.database.entity.Extras
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
@ -1,8 +1,8 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Query
|
||||
import com.machiav3lli.fdroid.database.entity.InstallTask
|
||||
import com.machiav3lli.fdroid.data.database.entity.InstallTask
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
// TODO make sure that apps that not uninstalled by Droid-ify still get removed
|
@ -1,8 +1,8 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Query
|
||||
import com.machiav3lli.fdroid.database.entity.Installed
|
||||
import com.machiav3lli.fdroid.data.database.entity.Installed
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
// TODO make sure that apps that not uninstalled by Droid-ify still get removed
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.room.Dao
|
||||
@ -33,21 +33,21 @@ import com.machiav3lli.fdroid.TABLE_INSTALLED
|
||||
import com.machiav3lli.fdroid.TABLE_PRODUCT
|
||||
import com.machiav3lli.fdroid.TABLE_RELEASE
|
||||
import com.machiav3lli.fdroid.TABLE_REPOSITORY
|
||||
import com.machiav3lli.fdroid.database.QueryBuilder
|
||||
import com.machiav3lli.fdroid.database.entity.Category
|
||||
import com.machiav3lli.fdroid.database.entity.CategoryTemp
|
||||
import com.machiav3lli.fdroid.database.entity.Extras
|
||||
import com.machiav3lli.fdroid.database.entity.IconDetails
|
||||
import com.machiav3lli.fdroid.database.entity.Installed
|
||||
import com.machiav3lli.fdroid.database.entity.Licenses
|
||||
import com.machiav3lli.fdroid.database.entity.Product
|
||||
import com.machiav3lli.fdroid.database.entity.ProductTemp
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.database.entity.asProductTemp
|
||||
import com.machiav3lli.fdroid.entity.Order
|
||||
import com.machiav3lli.fdroid.entity.Request
|
||||
import com.machiav3lli.fdroid.entity.Section
|
||||
import com.machiav3lli.fdroid.entity.UpdateCategory
|
||||
import com.machiav3lli.fdroid.data.database.QueryBuilder
|
||||
import com.machiav3lli.fdroid.data.database.entity.Category
|
||||
import com.machiav3lli.fdroid.data.database.entity.CategoryTemp
|
||||
import com.machiav3lli.fdroid.data.database.entity.Extras
|
||||
import com.machiav3lli.fdroid.data.database.entity.IconDetails
|
||||
import com.machiav3lli.fdroid.data.database.entity.Installed
|
||||
import com.machiav3lli.fdroid.data.database.entity.Licenses
|
||||
import com.machiav3lli.fdroid.data.database.entity.Product
|
||||
import com.machiav3lli.fdroid.data.database.entity.ProductTemp
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.data.database.entity.asProductTemp
|
||||
import com.machiav3lli.fdroid.data.entity.Order
|
||||
import com.machiav3lli.fdroid.data.entity.Request
|
||||
import com.machiav3lli.fdroid.data.entity.Section
|
||||
import com.machiav3lli.fdroid.data.entity.UpdateCategory
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
@ -1,9 +1,9 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Query
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.database.entity.ReleaseTemp
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.database.entity.ReleaseTemp
|
||||
|
||||
@Dao
|
||||
interface ReleaseDao : BaseDao<Release> {
|
@ -1,11 +1,10 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.Query
|
||||
import com.machiav3lli.fdroid.database.entity.LatestSyncs
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.data.database.entity.LatestSyncs
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
||||
@ -14,7 +13,7 @@ interface RepositoryDao : BaseDao<Repository> {
|
||||
fun getCount(): Int
|
||||
|
||||
@Insert
|
||||
fun insertReturn(repo: Repository) : Long
|
||||
fun insertReturn(repo: Repository): Long
|
||||
|
||||
fun put(repository: Repository): Repository {
|
||||
repository.let { item ->
|
@ -1,8 +1,8 @@
|
||||
package com.machiav3lli.fdroid.database.dao
|
||||
package com.machiav3lli.fdroid.data.database.dao
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Query
|
||||
import com.machiav3lli.fdroid.database.entity.Tracker
|
||||
import com.machiav3lli.fdroid.data.database.entity.Tracker
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Index
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
@ -6,7 +6,7 @@ import com.machiav3lli.fdroid.FIELD_CACHEFILENAME
|
||||
import com.machiav3lli.fdroid.FIELD_VERSION
|
||||
import com.machiav3lli.fdroid.ROW_PACKAGE_NAME
|
||||
import com.machiav3lli.fdroid.TABLE_DOWNLOADED
|
||||
import com.machiav3lli.fdroid.service.worker.DownloadState
|
||||
import com.machiav3lli.fdroid.manager.service.worker.DownloadState
|
||||
|
||||
@Entity(
|
||||
tableName = TABLE_DOWNLOADED,
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Index
|
||||
@ -6,7 +6,6 @@ import androidx.room.PrimaryKey
|
||||
import com.machiav3lli.fdroid.ROW_PACKAGE_NAME
|
||||
import com.machiav3lli.fdroid.TABLE_EXODUS_INFO
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
@Entity(
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
@ -8,7 +8,6 @@ import com.machiav3lli.fdroid.ROW_FAVORITE
|
||||
import com.machiav3lli.fdroid.ROW_PACKAGE_NAME
|
||||
import com.machiav3lli.fdroid.TABLE_EXTRAS
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
@Entity(
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
import com.machiav3lli.fdroid.ROW_PACKAGE_NAME
|
||||
@ -6,7 +6,6 @@ import com.machiav3lli.fdroid.ROW_REPOSITORY_ID
|
||||
import com.machiav3lli.fdroid.ROW_VERSION_CODE
|
||||
import com.machiav3lli.fdroid.TABLE_INSTALL_TASK
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
@Serializable
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Index
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Index
|
||||
@ -10,16 +10,15 @@ import com.machiav3lli.fdroid.ROW_REPOSITORY_ID
|
||||
import com.machiav3lli.fdroid.ROW_UPDATED
|
||||
import com.machiav3lli.fdroid.TABLE_PRODUCT
|
||||
import com.machiav3lli.fdroid.TABLE_PRODUCT_TEMP
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.entity.AntiFeature
|
||||
import com.machiav3lli.fdroid.entity.Author
|
||||
import com.machiav3lli.fdroid.entity.Donate
|
||||
import com.machiav3lli.fdroid.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.entity.Screenshot
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.entity.AntiFeature
|
||||
import com.machiav3lli.fdroid.data.entity.Author
|
||||
import com.machiav3lli.fdroid.data.entity.Donate
|
||||
import com.machiav3lli.fdroid.data.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.data.entity.Screenshot
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.extension.text.nullIfEmpty
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
// TODO Add Product Extras to handle favorite lists etc..
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.room.ColumnInfo
|
||||
@ -15,7 +15,6 @@ import com.machiav3lli.fdroid.ROW_VERSION_CODE
|
||||
import com.machiav3lli.fdroid.TABLE_RELEASE
|
||||
import com.machiav3lli.fdroid.TABLE_RELEASE_TEMP
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
// TODO consider denormalizing by adding minSdkVersion and maxSdkVersion columns to Product
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import android.util.Base64
|
||||
import androidx.room.Entity
|
||||
@ -7,9 +7,8 @@ import androidx.room.PrimaryKey
|
||||
import com.machiav3lli.fdroid.ROW_ENABLED
|
||||
import com.machiav3lli.fdroid.ROW_ID
|
||||
import com.machiav3lli.fdroid.TABLE_REPOSITORY
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.utils.extension.text.nullIfEmpty
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
import java.net.URL
|
||||
import java.nio.charset.Charset
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.database.entity
|
||||
package com.machiav3lli.fdroid.data.database.entity
|
||||
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Index
|
||||
@ -6,7 +6,6 @@ import androidx.room.PrimaryKey
|
||||
import com.machiav3lli.fdroid.ROW_KEY
|
||||
import com.machiav3lli.fdroid.TABLE_TRACKER
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
@Entity(
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.entity
|
||||
package com.machiav3lli.fdroid.data.entity
|
||||
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
@ -9,7 +9,7 @@ import com.machiav3lli.fdroid.HELP_MATRIX
|
||||
import com.machiav3lli.fdroid.HELP_SOURCECODE
|
||||
import com.machiav3lli.fdroid.HELP_TELEGRAM
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.BracketsSquare
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.CalendarPlus
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.entity
|
||||
package com.machiav3lli.fdroid.data.entity
|
||||
|
||||
import android.content.pm.PermissionInfo
|
||||
import androidx.annotation.StringRes
|
||||
@ -8,7 +8,7 @@ import com.machiav3lli.fdroid.IDENTIFICATION_DATA_PERMISSIONS
|
||||
import com.machiav3lli.fdroid.PERMISSION_GROUP_INTERNET
|
||||
import com.machiav3lli.fdroid.PHYSICAL_DATA_PERMISSIONS
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.database.entity.Tracker
|
||||
import com.machiav3lli.fdroid.data.database.entity.Tracker
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.Icon
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.icon.Opensource
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.entity
|
||||
package com.machiav3lli.fdroid.data.entity
|
||||
|
||||
data class ProductItem(
|
||||
var repositoryId: Long = 0,
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.entity
|
||||
package com.machiav3lli.fdroid.data.entity
|
||||
|
||||
import android.content.Context
|
||||
import android.content.pm.PermissionGroupInfo
|
||||
@ -9,8 +9,8 @@ import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import com.machiav3lli.backup.ui.compose.icons.phosphor.Plus
|
||||
import com.machiav3lli.fdroid.FILTER_CATEGORY_ALL
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.Icon
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.icon.IcDonateLiberapay
|
@ -1,20 +1,20 @@
|
||||
package com.machiav3lli.fdroid.index
|
||||
package com.machiav3lli.fdroid.data.index
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import com.machiav3lli.fdroid.content.Cache
|
||||
import com.machiav3lli.fdroid.database.DatabaseX
|
||||
import com.machiav3lli.fdroid.database.entity.Product
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.database.entity.asReleaseTemp
|
||||
import com.machiav3lli.fdroid.index.v0.IndexV0Parser
|
||||
import com.machiav3lli.fdroid.index.v1.IndexV1Merger
|
||||
import com.machiav3lli.fdroid.index.v1.IndexV1Parser
|
||||
import com.machiav3lli.fdroid.network.Downloader
|
||||
import com.machiav3lli.fdroid.utility.CoroutineUtils
|
||||
import com.machiav3lli.fdroid.utility.ProgressInputStream
|
||||
import com.machiav3lli.fdroid.utility.extension.text.unhex
|
||||
import com.machiav3lli.fdroid.data.content.Cache
|
||||
import com.machiav3lli.fdroid.data.database.DatabaseX
|
||||
import com.machiav3lli.fdroid.data.database.entity.Product
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.data.database.entity.asReleaseTemp
|
||||
import com.machiav3lli.fdroid.data.index.v0.IndexV0Parser
|
||||
import com.machiav3lli.fdroid.data.index.v1.IndexV1Merger
|
||||
import com.machiav3lli.fdroid.data.index.v1.IndexV1Parser
|
||||
import com.machiav3lli.fdroid.manager.network.Downloader
|
||||
import com.machiav3lli.fdroid.utils.CoroutineUtils
|
||||
import com.machiav3lli.fdroid.utils.ProgressInputStream
|
||||
import com.machiav3lli.fdroid.utils.extension.text.unhex
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
@ -1,11 +1,11 @@
|
||||
package com.machiav3lli.fdroid.index.v0
|
||||
package com.machiav3lli.fdroid.data.index.v0
|
||||
|
||||
import android.util.Xml
|
||||
import com.machiav3lli.fdroid.database.entity.Product
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.entity.Author
|
||||
import com.machiav3lli.fdroid.entity.Donate
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.data.database.entity.Product
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.entity.Author
|
||||
import com.machiav3lli.fdroid.data.entity.Donate
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import org.xmlpull.v1.XmlPullParser
|
||||
import org.xmlpull.v1.XmlPullParserException
|
||||
import java.io.IOException
|
@ -1,17 +1,17 @@
|
||||
package com.machiav3lli.fdroid.index.v1
|
||||
package com.machiav3lli.fdroid.data.index.v1
|
||||
|
||||
import android.content.res.Resources
|
||||
import androidx.core.os.ConfigurationCompat.getLocales
|
||||
import androidx.core.os.LocaleListCompat
|
||||
import com.machiav3lli.fdroid.database.entity.Product
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.entity.Author
|
||||
import com.machiav3lli.fdroid.entity.Donate
|
||||
import com.machiav3lli.fdroid.entity.Screenshot
|
||||
import com.machiav3lli.fdroid.index.v0.IndexV0Parser
|
||||
import com.machiav3lli.fdroid.utility.extension.Quintuple
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.data.database.entity.Product
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.entity.Author
|
||||
import com.machiav3lli.fdroid.data.entity.Donate
|
||||
import com.machiav3lli.fdroid.data.entity.Screenshot
|
||||
import com.machiav3lli.fdroid.data.index.v0.IndexV0Parser
|
||||
import com.machiav3lli.fdroid.utils.extension.Quintuple
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.extension.text.nullIfEmpty
|
||||
import okhttp3.internal.toLongOrDefault
|
||||
|
||||
internal fun IndexV1.App.toProduct(repositoryId: Long) = Product(
|
@ -1,6 +1,6 @@
|
||||
package com.machiav3lli.fdroid.index.v1
|
||||
package com.machiav3lli.fdroid.data.index.v1
|
||||
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.utils.extension.text.nullIfEmpty
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.builtins.ListSerializer
|
@ -1,13 +1,13 @@
|
||||
package com.machiav3lli.fdroid.index.v1
|
||||
package com.machiav3lli.fdroid.data.index.v1
|
||||
|
||||
import android.content.ContentValues
|
||||
import android.database.sqlite.SQLiteDatabase
|
||||
import com.machiav3lli.fdroid.database.Converters.toByteArray
|
||||
import com.machiav3lli.fdroid.database.Converters.toReleases
|
||||
import com.machiav3lli.fdroid.database.entity.Product
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.utility.extension.android.asSequence
|
||||
import com.machiav3lli.fdroid.utility.extension.android.execWithResult
|
||||
import com.machiav3lli.fdroid.data.database.Converters.toByteArray
|
||||
import com.machiav3lli.fdroid.data.database.Converters.toReleases
|
||||
import com.machiav3lli.fdroid.data.database.entity.Product
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.utils.extension.android.asSequence
|
||||
import com.machiav3lli.fdroid.utils.extension.android.execWithResult
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.Closeable
|
||||
import java.io.File
|
@ -1,7 +1,7 @@
|
||||
package com.machiav3lli.fdroid.index.v1
|
||||
package com.machiav3lli.fdroid.data.index.v1
|
||||
|
||||
import com.machiav3lli.fdroid.database.entity.Product
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.database.entity.Product
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.decodeFromStream
|
@ -1,11 +1,11 @@
|
||||
package com.machiav3lli.fdroid.installer
|
||||
package com.machiav3lli.fdroid.manager.installer
|
||||
|
||||
import android.content.Context
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.entity.InstallerType
|
||||
import com.machiav3lli.fdroid.utility.amInstalled
|
||||
import com.machiav3lli.fdroid.utility.getHasSystemInstallPermission
|
||||
import com.machiav3lli.fdroid.utility.shellIsRoot
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.entity.InstallerType
|
||||
import com.machiav3lli.fdroid.utils.amInstalled
|
||||
import com.machiav3lli.fdroid.utils.getHasSystemInstallPermission
|
||||
import com.machiav3lli.fdroid.utils.shellIsRoot
|
||||
import org.koin.dsl.module
|
||||
|
||||
abstract class AppInstaller {
|
@ -1,14 +1,14 @@
|
||||
package com.machiav3lli.fdroid.installer
|
||||
package com.machiav3lli.fdroid.manager.installer
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.content.Cache
|
||||
import com.machiav3lli.fdroid.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.content.Cache.getReleaseFileUri
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.data.content.Cache
|
||||
import com.machiav3lli.fdroid.data.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.data.content.Cache.getReleaseFileUri
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.File
|
||||
@ -28,7 +28,7 @@ class AppManagerInstaller(context: Context) : BaseInstaller(context) {
|
||||
}
|
||||
|
||||
override suspend fun isInstalling(packageName: String): Boolean =
|
||||
MainApplication.enqueuedInstalls.contains(packageName)
|
||||
NeoApp.enqueuedInstalls.contains(packageName)
|
||||
|
||||
override suspend fun uninstall(packageName: String) = mDefaultUninstaller(packageName)
|
||||
|
||||
@ -38,7 +38,7 @@ class AppManagerInstaller(context: Context) : BaseInstaller(context) {
|
||||
postInstall: () -> Unit
|
||||
) =
|
||||
withContext(Dispatchers.IO) {
|
||||
MainApplication.enqueuedInstalls.add(packageName)
|
||||
NeoApp.enqueuedInstalls.add(packageName)
|
||||
val (uri, flags) = Pair(
|
||||
Cache.getReleaseFile(context, cacheFile.name).getReleaseFileUri(context),
|
||||
Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION or Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
@ -50,8 +50,8 @@ class AppManagerInstaller(context: Context) : BaseInstaller(context) {
|
||||
.setDataAndType(uri, "application/octet-stream")
|
||||
.setFlags(flags)
|
||||
)
|
||||
MainApplication.db.getInstallTaskDao().delete(packageName)
|
||||
MainApplication.enqueuedInstalls.remove(packageName)
|
||||
NeoApp.db.getInstallTaskDao().delete(packageName)
|
||||
NeoApp.enqueuedInstalls.remove(packageName)
|
||||
postInstall()
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.installer
|
||||
package com.machiav3lli.fdroid.manager.installer
|
||||
|
||||
import android.content.Context
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.installer
|
||||
package com.machiav3lli.fdroid.manager.installer
|
||||
|
||||
interface InstallationEvents {
|
||||
suspend fun install(packageLabel: String, cacheFileName: String, postInstall: () -> Unit = {})
|
@ -1,15 +1,15 @@
|
||||
package com.machiav3lli.fdroid.installer
|
||||
package com.machiav3lli.fdroid.manager.installer
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.util.AndroidRuntimeException
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.content.Cache
|
||||
import com.machiav3lli.fdroid.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.content.Cache.getReleaseFileUri
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.data.content.Cache
|
||||
import com.machiav3lli.fdroid.data.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.data.content.Cache.getReleaseFileUri
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.File
|
||||
@ -30,7 +30,7 @@ class LegacyInstaller(context: Context) : BaseInstaller(context) {
|
||||
}
|
||||
|
||||
override suspend fun isInstalling(packageName: String): Boolean =
|
||||
MainApplication.enqueuedInstalls.contains(packageName)
|
||||
NeoApp.enqueuedInstalls.contains(packageName)
|
||||
|
||||
override suspend fun uninstall(packageName: String) = mOldDefaultUninstaller(packageName)
|
||||
|
||||
@ -40,7 +40,7 @@ class LegacyInstaller(context: Context) : BaseInstaller(context) {
|
||||
postInstall: () -> Unit
|
||||
) =
|
||||
withContext(Dispatchers.IO) {
|
||||
MainApplication.enqueuedInstalls.add(packageName)
|
||||
NeoApp.enqueuedInstalls.add(packageName)
|
||||
val (uri, flags) = Pair(
|
||||
Cache.getReleaseFile(context, cacheFile.name).getReleaseFileUri(context),
|
||||
Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||
@ -60,8 +60,8 @@ class LegacyInstaller(context: Context) : BaseInstaller(context) {
|
||||
.setFlags(flags or Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
)
|
||||
}
|
||||
MainApplication.db.getInstallTaskDao().delete(packageName)
|
||||
MainApplication.enqueuedInstalls.remove(packageName)
|
||||
NeoApp.db.getInstallTaskDao().delete(packageName)
|
||||
NeoApp.enqueuedInstalls.remove(packageName)
|
||||
postInstall()
|
||||
}
|
||||
|
@ -1,16 +1,16 @@
|
||||
package com.machiav3lli.fdroid.installer
|
||||
package com.machiav3lli.fdroid.manager.installer
|
||||
|
||||
import android.content.Context
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import com.machiav3lli.fdroid.BuildConfig
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.content.Cache
|
||||
import com.machiav3lli.fdroid.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.utility.Utils.quotePath
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.notifyFinishedInstall
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.data.content.Cache
|
||||
import com.machiav3lli.fdroid.data.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.utils.Utils.quotePath
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.notifyFinishedInstall
|
||||
import com.topjohnwu.superuser.Shell
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
@ -110,7 +110,7 @@ class RootInstaller(context: Context) : BaseInstaller(context) {
|
||||
}
|
||||
|
||||
override suspend fun isInstalling(packageName: String): Boolean =
|
||||
MainApplication.enqueuedInstalls.contains(packageName)
|
||||
NeoApp.enqueuedInstalls.contains(packageName)
|
||||
|
||||
override suspend fun uninstall(packageName: String) = mRootUninstaller(packageName)
|
||||
|
||||
@ -120,7 +120,7 @@ class RootInstaller(context: Context) : BaseInstaller(context) {
|
||||
postInstall: () -> Unit
|
||||
) =
|
||||
withContext(Dispatchers.Default) {
|
||||
MainApplication.enqueuedInstalls.add(packageName)
|
||||
NeoApp.enqueuedInstalls.add(packageName)
|
||||
if (Preferences[Preferences.Key.RootSessionInstaller]) {
|
||||
Shell.cmd(cacheFile.sessionInstallCreate())
|
||||
.submit {
|
||||
@ -138,8 +138,8 @@ class RootInstaller(context: Context) : BaseInstaller(context) {
|
||||
if (result.isSuccess)
|
||||
Shell.cmd(cacheFile.deletePackage()).submit()
|
||||
CoroutineScope(Dispatchers.Default).launch {
|
||||
MainApplication.db.getInstallTaskDao().delete(packageName)
|
||||
MainApplication.enqueuedInstalls.remove(packageName)
|
||||
NeoApp.db.getInstallTaskDao().delete(packageName)
|
||||
NeoApp.enqueuedInstalls.remove(packageName)
|
||||
notifyFinishedInstall(context, packageName)
|
||||
}
|
||||
postInstall()
|
||||
@ -152,8 +152,8 @@ class RootInstaller(context: Context) : BaseInstaller(context) {
|
||||
if (result.isSuccess && Preferences[Preferences.Key.ReleasesCacheRetention] == 0)
|
||||
Shell.cmd(cacheFile.deletePackage()).submit()
|
||||
CoroutineScope(Dispatchers.Default).launch {
|
||||
MainApplication.db.getInstallTaskDao().delete(packageName)
|
||||
MainApplication.enqueuedInstalls.remove(packageName)
|
||||
NeoApp.db.getInstallTaskDao().delete(packageName)
|
||||
NeoApp.enqueuedInstalls.remove(packageName)
|
||||
notifyFinishedInstall(context, packageName)
|
||||
}
|
||||
postInstall()
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.installer
|
||||
package com.machiav3lli.fdroid.manager.installer
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
@ -9,11 +9,11 @@ import android.content.pm.PackageManager
|
||||
import android.os.Build
|
||||
import android.util.Log
|
||||
import com.machiav3lli.fdroid.NeoActivity
|
||||
import com.machiav3lli.fdroid.content.Cache
|
||||
import com.machiav3lli.fdroid.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.service.InstallerReceiver
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.data.content.Cache
|
||||
import com.machiav3lli.fdroid.data.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.manager.service.InstallerReceiver
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.File
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.installer
|
||||
package com.machiav3lli.fdroid.manager.installer
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
@ -7,11 +7,11 @@ import android.content.pm.PackageInstaller
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.util.Log
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.content.Cache
|
||||
import com.machiav3lli.fdroid.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.content.Cache.getReleaseFileUri
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.data.content.Cache
|
||||
import com.machiav3lli.fdroid.data.content.Cache.getPackageArchiveInfo
|
||||
import com.machiav3lli.fdroid.data.content.Cache.getReleaseFileUri
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.File
|
||||
@ -27,7 +27,7 @@ class SystemInstaller(context: Context) : BaseInstaller(context) {
|
||||
postInstall: () -> Unit
|
||||
) =
|
||||
withContext(Dispatchers.IO) {
|
||||
MainApplication.enqueuedInstalls.add(packageName)
|
||||
NeoApp.enqueuedInstalls.add(packageName)
|
||||
|
||||
val packageInstaller = context.packageManager.packageInstaller
|
||||
val packageUri = Cache.getReleaseFile(context, cacheFile.name).getReleaseFileUri(context)
|
||||
@ -59,8 +59,8 @@ class SystemInstaller(context: Context) : BaseInstaller(context) {
|
||||
|
||||
session.commit(statusReceiver)
|
||||
|
||||
MainApplication.db.getInstallTaskDao().delete(packageName)
|
||||
MainApplication.enqueuedInstalls.remove(packageName)
|
||||
NeoApp.db.getInstallTaskDao().delete(packageName)
|
||||
NeoApp.enqueuedInstalls.remove(packageName)
|
||||
postInstall()
|
||||
}
|
||||
|
||||
@ -99,7 +99,7 @@ class SystemInstaller(context: Context) : BaseInstaller(context) {
|
||||
}
|
||||
|
||||
override suspend fun isInstalling(packageName: String): Boolean {
|
||||
return MainApplication.enqueuedInstalls.contains(packageName)
|
||||
return NeoApp.enqueuedInstalls.contains(packageName)
|
||||
}
|
||||
|
||||
override suspend fun uninstall(packageName: String) {
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.network
|
||||
package com.machiav3lli.fdroid.manager.network
|
||||
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
@ -18,10 +18,10 @@ import com.machiav3lli.fdroid.QUERY_LOCALE
|
||||
import com.machiav3lli.fdroid.QUERY_METADATA_ICON
|
||||
import com.machiav3lli.fdroid.QUERY_PACKAGE_NAME
|
||||
import com.machiav3lli.fdroid.QUERY_SCREENSHOT
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.entity.Screenshot
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.data.entity.Screenshot
|
||||
import com.machiav3lli.fdroid.utils.extension.text.nullIfEmpty
|
||||
import okhttp3.Cache
|
||||
import okhttp3.Call
|
||||
import okhttp3.ConnectionPool
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.network
|
||||
package com.machiav3lli.fdroid.manager.network
|
||||
|
||||
sealed class DownloadResult<T>(
|
||||
val progress: Long? = 0,
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.network
|
||||
package com.machiav3lli.fdroid.manager.network
|
||||
|
||||
import android.app.DownloadManager
|
||||
import android.content.Context
|
||||
@ -12,10 +12,10 @@ import com.machiav3lli.fdroid.BuildConfig
|
||||
import com.machiav3lli.fdroid.CLIENT_CONNECT_TIMEOUT_MS
|
||||
import com.machiav3lli.fdroid.POOL_DEFAULT_KEEP_ALIVE_DURATION_M
|
||||
import com.machiav3lli.fdroid.POOL_DEFAULT_MAX_IDLE_CONNECTIONS
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.service.worker.DownloadTask
|
||||
import com.machiav3lli.fdroid.utility.dmReasonToHttpResponse
|
||||
import com.machiav3lli.fdroid.utility.extension.text.formatDateTime
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.manager.service.worker.DownloadTask
|
||||
import com.machiav3lli.fdroid.utils.dmReasonToHttpResponse
|
||||
import com.machiav3lli.fdroid.utils.extension.text.formatDateTime
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.engine.ProxyBuilder
|
||||
import io.ktor.client.engine.okhttp.OkHttp
|
@ -1,12 +1,12 @@
|
||||
package com.machiav3lli.fdroid.network
|
||||
package com.machiav3lli.fdroid.manager.network
|
||||
|
||||
import android.util.Log
|
||||
import com.machiav3lli.fdroid.BuildConfig
|
||||
import com.machiav3lli.fdroid.CLIENT_CONNECT_TIMEOUT
|
||||
import com.machiav3lli.fdroid.CLIENT_READ_TIMEOUT
|
||||
import com.machiav3lli.fdroid.CLIENT_WRITE_TIMEOUT
|
||||
import com.machiav3lli.fdroid.database.entity.ExodusData
|
||||
import com.machiav3lli.fdroid.database.entity.Trackers
|
||||
import com.machiav3lli.fdroid.data.database.entity.ExodusData
|
||||
import com.machiav3lli.fdroid.data.database.entity.Trackers
|
||||
import io.ktor.client.HttpClient
|
||||
import io.ktor.client.engine.okhttp.OkHttp
|
||||
import io.ktor.client.request.HttpRequestBuilder
|
@ -1,11 +1,11 @@
|
||||
package com.machiav3lli.fdroid.service
|
||||
package com.machiav3lli.fdroid.manager.service
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import com.machiav3lli.fdroid.ARG_PACKAGE_NAME
|
||||
import com.machiav3lli.fdroid.ARG_REPOSITORY_ID
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
|
||||
class ActionReceiver : BroadcastReceiver() {
|
||||
|
||||
@ -22,25 +22,25 @@ class ActionReceiver : BroadcastReceiver() {
|
||||
when (intent.action) {
|
||||
COMMAND_CANCEL_DOWNLOAD -> {
|
||||
val packageName = intent.getStringExtra(ARG_PACKAGE_NAME)
|
||||
MainApplication.wm.cancelDownload(packageName)
|
||||
NeoApp.wm.cancelDownload(packageName)
|
||||
}
|
||||
|
||||
COMMAND_CANCEL_DOWNLOAD_ALL -> {
|
||||
MainApplication.wm.cancelDownloadAll()
|
||||
NeoApp.wm.cancelDownloadAll()
|
||||
}
|
||||
|
||||
COMMAND_CANCEL_SYNC -> {
|
||||
val repoId = intent.getLongExtra(ARG_REPOSITORY_ID, -1)
|
||||
MainApplication.wm.cancelSync(repoId)
|
||||
NeoApp.wm.cancelSync(repoId)
|
||||
}
|
||||
|
||||
COMMAND_CANCEL_SYNC_ALL -> {
|
||||
MainApplication.wm.cancelSyncAll()
|
||||
NeoApp.wm.cancelSyncAll()
|
||||
}
|
||||
|
||||
COMMAND_CANCEL_INSTALL -> {
|
||||
intent.getStringExtra(ARG_PACKAGE_NAME)
|
||||
?.let { packageName -> MainApplication.wm.cancelInstall(packageName) }
|
||||
?.let { packageName -> NeoApp.wm.cancelInstall(packageName) }
|
||||
}
|
||||
|
||||
else -> {}
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.service
|
||||
package com.machiav3lli.fdroid.manager.service
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.BroadcastReceiver
|
||||
@ -8,8 +8,8 @@ import android.content.pm.PackageInstaller
|
||||
import android.net.Uri
|
||||
import com.machiav3lli.fdroid.ARG_PACKAGE_NAME
|
||||
import com.machiav3lli.fdroid.NeoActivity
|
||||
import com.machiav3lli.fdroid.utility.Utils
|
||||
import com.machiav3lli.fdroid.utility.notifyStatus
|
||||
import com.machiav3lli.fdroid.utils.Utils
|
||||
import com.machiav3lli.fdroid.utils.notifyStatus
|
||||
|
||||
/**
|
||||
* Runs during or after a PackageInstaller session in order to handle completion, failure, or
|
@ -1,16 +1,16 @@
|
||||
package com.machiav3lli.fdroid.service
|
||||
package com.machiav3lli.fdroid.manager.service
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.entity.Order
|
||||
import com.machiav3lli.fdroid.entity.Section
|
||||
import com.machiav3lli.fdroid.utility.Utils.toInstalledItem
|
||||
import com.machiav3lli.fdroid.utility.displayUpdatesNotification
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.getLaunchActivities
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.entity.Order
|
||||
import com.machiav3lli.fdroid.data.entity.Section
|
||||
import com.machiav3lli.fdroid.utils.Utils.toInstalledItem
|
||||
import com.machiav3lli.fdroid.utils.displayUpdatesNotification
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.getLaunchActivities
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
@ -36,14 +36,14 @@ class PackageChangedReceiver : BroadcastReceiver() {
|
||||
}
|
||||
val launcherActivities = context.packageManager.getLaunchActivities(packageName)
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
if (packageInfo != null) MainApplication.db.getInstalledDao().upsert(
|
||||
if (packageInfo != null) NeoApp.db.getInstalledDao().upsert(
|
||||
packageInfo.toInstalledItem(launcherActivities)
|
||||
)
|
||||
else MainApplication.db.getInstalledDao().delete(packageName)
|
||||
else NeoApp.db.getInstalledDao().delete(packageName)
|
||||
|
||||
// Update updates notification
|
||||
if (Preferences[Preferences.Key.UpdateNotify]) context.displayUpdatesNotification(
|
||||
MainApplication.db.getProductDao()
|
||||
NeoApp.db.getProductDao()
|
||||
.queryObject(
|
||||
installed = true,
|
||||
updates = true,
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.service
|
||||
package com.machiav3lli.fdroid.manager.service
|
||||
|
||||
import android.app.NotificationChannel
|
||||
import android.app.NotificationManager
|
||||
@ -17,28 +17,28 @@ import androidx.work.WorkManager
|
||||
import androidx.work.WorkQuery
|
||||
import com.machiav3lli.fdroid.ARG_RESULT_CODE
|
||||
import com.machiav3lli.fdroid.ARG_VALIDATION_ERROR
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.NOTIFICATION_CHANNEL_DOWNLOADING
|
||||
import com.machiav3lli.fdroid.NOTIFICATION_CHANNEL_SYNCING
|
||||
import com.machiav3lli.fdroid.NOTIFICATION_CHANNEL_UPDATES
|
||||
import com.machiav3lli.fdroid.NOTIFICATION_CHANNEL_VULNS
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.TAG_SYNC_ONETIME
|
||||
import com.machiav3lli.fdroid.database.entity.InstallTask
|
||||
import com.machiav3lli.fdroid.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.service.worker.DownloadState
|
||||
import com.machiav3lli.fdroid.service.worker.DownloadWorker
|
||||
import com.machiav3lli.fdroid.service.worker.InstallWorker
|
||||
import com.machiav3lli.fdroid.service.worker.SyncState
|
||||
import com.machiav3lli.fdroid.service.worker.SyncWorker
|
||||
import com.machiav3lli.fdroid.service.worker.ValidationError
|
||||
import com.machiav3lli.fdroid.utility.Utils
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.work.DownloadStateHandler
|
||||
import com.machiav3lli.fdroid.work.DownloadsTracker
|
||||
import com.machiav3lli.fdroid.work.SyncStateHandler
|
||||
import com.machiav3lli.fdroid.work.SyncsTracker
|
||||
import com.machiav3lli.fdroid.work.WorkStateHolder
|
||||
import com.machiav3lli.fdroid.data.database.entity.InstallTask
|
||||
import com.machiav3lli.fdroid.data.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.manager.service.worker.DownloadState
|
||||
import com.machiav3lli.fdroid.manager.service.worker.DownloadWorker
|
||||
import com.machiav3lli.fdroid.manager.service.worker.InstallWorker
|
||||
import com.machiav3lli.fdroid.manager.service.worker.SyncState
|
||||
import com.machiav3lli.fdroid.manager.service.worker.SyncWorker
|
||||
import com.machiav3lli.fdroid.manager.service.worker.ValidationError
|
||||
import com.machiav3lli.fdroid.utils.Utils
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.manager.work.DownloadStateHandler
|
||||
import com.machiav3lli.fdroid.manager.work.DownloadsTracker
|
||||
import com.machiav3lli.fdroid.manager.work.SyncStateHandler
|
||||
import com.machiav3lli.fdroid.manager.work.SyncsTracker
|
||||
import com.machiav3lli.fdroid.manager.work.WorkStateHolder
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
@ -90,7 +90,7 @@ class WorkerManager(appContext: Context) : KoinComponent {
|
||||
setupWorkInfoCollection()
|
||||
monitorWorkProgress()
|
||||
scope.launch {
|
||||
MainApplication.db.getInstallTaskDao()
|
||||
NeoApp.db.getInstallTaskDao()
|
||||
.getAllFlow() // Add similar table for DownloadTasks
|
||||
.distinctUntilChanged()
|
||||
.collectLatest { tasks ->
|
||||
@ -167,7 +167,7 @@ class WorkerManager(appContext: Context) : KoinComponent {
|
||||
workManager.cancelAllWorkByTag(it)
|
||||
prune()
|
||||
}
|
||||
MainApplication.setProgress() // TODO re-consider
|
||||
NeoApp.setProgress() // TODO re-consider
|
||||
}
|
||||
|
||||
fun cancelSync(repoId: Long = -1) {
|
||||
@ -184,7 +184,7 @@ class WorkerManager(appContext: Context) : KoinComponent {
|
||||
workManager.cancelAllWorkByTag(it)
|
||||
prune()
|
||||
}
|
||||
MainApplication.setProgress() // TODO re-consider
|
||||
NeoApp.setProgress() // TODO re-consider
|
||||
}
|
||||
|
||||
fun cancelDownload(packageName: String?) {
|
||||
@ -201,7 +201,7 @@ class WorkerManager(appContext: Context) : KoinComponent {
|
||||
DownloadWorker::class.qualifiedName?.let {
|
||||
workManager.cancelUniqueWork("Installer_$packageName")
|
||||
scope.launch {
|
||||
MainApplication.db.getInstallTaskDao().delete(packageName)
|
||||
NeoApp.db.getInstallTaskDao().delete(packageName)
|
||||
}
|
||||
//prune()
|
||||
}
|
||||
@ -216,13 +216,13 @@ class WorkerManager(appContext: Context) : KoinComponent {
|
||||
productItems.map { productItem ->
|
||||
Triple(
|
||||
productItem.packageName,
|
||||
MainApplication.db.getInstalledDao().get(productItem.packageName),
|
||||
MainApplication.db.getRepositoryDao().get(productItem.repositoryId)
|
||||
NeoApp.db.getInstalledDao().get(productItem.packageName),
|
||||
NeoApp.db.getRepositoryDao().get(productItem.repositoryId)
|
||||
)
|
||||
}
|
||||
.filter { (_, installed, repo) -> (enforce || installed != null) && repo != null }
|
||||
.forEach { (packageName, installed, repo) ->
|
||||
val productRepository = MainApplication.db.getProductDao().get(packageName)
|
||||
val productRepository = NeoApp.db.getProductDao().get(packageName)
|
||||
.filter { product -> product.repositoryId == repo!!.id }
|
||||
.map { product -> Pair(product, repo!!) }
|
||||
scope.launch(Dispatchers.IO) {
|
||||
@ -287,12 +287,12 @@ class WorkerManager(appContext: Context) : KoinComponent {
|
||||
companion object {
|
||||
private val syncNotificationBuilder by lazy {
|
||||
NotificationCompat
|
||||
.Builder(MainApplication.context, NOTIFICATION_CHANNEL_SYNCING)
|
||||
.Builder(NeoApp.context, NOTIFICATION_CHANNEL_SYNCING)
|
||||
.setGroup(NOTIFICATION_CHANNEL_SYNCING)
|
||||
.setGroupSummary(true)
|
||||
.setSortKey("0")
|
||||
.setSmallIcon(R.drawable.ic_sync)
|
||||
.setContentTitle(MainApplication.context.getString(R.string.syncing))
|
||||
.setContentTitle(NeoApp.context.getString(R.string.syncing))
|
||||
.setOngoing(true)
|
||||
.setSilent(true)
|
||||
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
|
||||
@ -300,11 +300,11 @@ class WorkerManager(appContext: Context) : KoinComponent {
|
||||
.setCategory(NotificationCompat.CATEGORY_PROGRESS)
|
||||
.addAction(
|
||||
R.drawable.ic_cancel,
|
||||
MainApplication.context.getString(R.string.cancel_all),
|
||||
NeoApp.context.getString(R.string.cancel_all),
|
||||
PendingIntent.getBroadcast(
|
||||
MainApplication.context,
|
||||
NeoApp.context,
|
||||
"<SYNC_ALL>".hashCode(),
|
||||
Intent(MainApplication.context, ActionReceiver::class.java).apply {
|
||||
Intent(NeoApp.context, ActionReceiver::class.java).apply {
|
||||
action = ActionReceiver.COMMAND_CANCEL_SYNC_ALL
|
||||
},
|
||||
PendingIntent.FLAG_IMMUTABLE
|
||||
@ -314,7 +314,7 @@ class WorkerManager(appContext: Context) : KoinComponent {
|
||||
|
||||
private val downloadNotificationBuilder by lazy {
|
||||
NotificationCompat
|
||||
.Builder(MainApplication.context, NOTIFICATION_CHANNEL_DOWNLOADING)
|
||||
.Builder(NeoApp.context, NOTIFICATION_CHANNEL_DOWNLOADING)
|
||||
.setGroup(NOTIFICATION_CHANNEL_DOWNLOADING)
|
||||
.setGroupSummary(true)
|
||||
.setSortKey("0")
|
||||
@ -326,11 +326,11 @@ class WorkerManager(appContext: Context) : KoinComponent {
|
||||
.setCategory(NotificationCompat.CATEGORY_PROGRESS)
|
||||
.addAction(
|
||||
R.drawable.ic_cancel,
|
||||
MainApplication.context.getString(R.string.cancel_all),
|
||||
NeoApp.context.getString(R.string.cancel_all),
|
||||
PendingIntent.getBroadcast(
|
||||
MainApplication.context,
|
||||
NeoApp.context,
|
||||
"<DOWNLOAD_ALL>".hashCode(),
|
||||
Intent(MainApplication.context, ActionReceiver::class.java).apply {
|
||||
Intent(NeoApp.context, ActionReceiver::class.java).apply {
|
||||
action = ActionReceiver.COMMAND_CANCEL_DOWNLOAD_ALL
|
||||
},
|
||||
PendingIntent.FLAG_IMMUTABLE
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.service.worker
|
||||
package com.machiav3lli.fdroid.manager.service.worker
|
||||
|
||||
import android.app.Notification
|
||||
import android.app.NotificationChannel
|
||||
@ -29,23 +29,23 @@ import com.machiav3lli.fdroid.ARG_EXCEPTION
|
||||
import com.machiav3lli.fdroid.ARG_REPOSITORY_NAME
|
||||
import com.machiav3lli.fdroid.ARG_SUCCESS
|
||||
import com.machiav3lli.fdroid.ARG_SYNC_REQUEST
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.NOTIFICATION_CHANNEL_SYNCING
|
||||
import com.machiav3lli.fdroid.NeoActivity
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.TAG_BATCH_SYNC_ONETIME
|
||||
import com.machiav3lli.fdroid.TAG_BATCH_SYNC_PERIODIC
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.entity.Product
|
||||
import com.machiav3lli.fdroid.entity.AntiFeature
|
||||
import com.machiav3lli.fdroid.entity.Order
|
||||
import com.machiav3lli.fdroid.entity.Section
|
||||
import com.machiav3lli.fdroid.service.ActionReceiver
|
||||
import com.machiav3lli.fdroid.service.InstallerReceiver
|
||||
import com.machiav3lli.fdroid.utility.displayUpdatesNotification
|
||||
import com.machiav3lli.fdroid.utility.displayVulnerabilitiesNotification
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.extension.takeUntilSignal
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.entity.Product
|
||||
import com.machiav3lli.fdroid.data.entity.AntiFeature
|
||||
import com.machiav3lli.fdroid.data.entity.Order
|
||||
import com.machiav3lli.fdroid.data.entity.Section
|
||||
import com.machiav3lli.fdroid.manager.service.ActionReceiver
|
||||
import com.machiav3lli.fdroid.manager.service.InstallerReceiver
|
||||
import com.machiav3lli.fdroid.utils.displayUpdatesNotification
|
||||
import com.machiav3lli.fdroid.utils.displayVulnerabilitiesNotification
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.extension.takeUntilSignal
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
@ -87,7 +87,7 @@ class BatchSyncWorker(
|
||||
|
||||
private suspend fun handleSync(): Boolean = supervisorScope {
|
||||
val finishSignal = MutableStateFlow(false)
|
||||
val selectedRepos = MainApplication.db.getRepositoryDao().getAll()
|
||||
val selectedRepos = NeoApp.db.getRepositoryDao().getAll()
|
||||
.filter { it.enabled }
|
||||
totalRepositories = selectedRepos.size
|
||||
|
||||
@ -171,7 +171,7 @@ class BatchSyncWorker(
|
||||
|
||||
private fun handleCompletion(errors: String) {
|
||||
Log.e(this::class.java.simpleName, errors)
|
||||
MainApplication.db.getProductDao()
|
||||
NeoApp.db.getProductDao()
|
||||
.queryObject(
|
||||
installed = true,
|
||||
updates = true,
|
||||
@ -187,10 +187,10 @@ class BatchSyncWorker(
|
||||
true
|
||||
)
|
||||
if (Preferences[Preferences.Key.InstallAfterSync]) {
|
||||
MainApplication.wm.update(*result.toTypedArray())
|
||||
NeoApp.wm.update(*result.toTypedArray())
|
||||
}
|
||||
}
|
||||
MainApplication.db.getProductDao()
|
||||
NeoApp.db.getProductDao()
|
||||
.queryObject(
|
||||
installed = true,
|
||||
updates = false,
|
||||
@ -199,7 +199,7 @@ class BatchSyncWorker(
|
||||
ascending = true,
|
||||
).filter { product ->
|
||||
product.antiFeatures.contains(AntiFeature.KNOWN_VULN.key)
|
||||
&& MainApplication.db.getExtrasDao()[product.packageName]?.ignoreVulns != true
|
||||
&& NeoApp.db.getExtrasDao()[product.packageName]?.ignoreVulns != true
|
||||
}.let { installedWithVulns ->
|
||||
if (installedWithVulns.isNotEmpty())
|
||||
context.displayVulnerabilitiesNotification(
|
||||
@ -228,11 +228,11 @@ class BatchSyncWorker(
|
||||
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
|
||||
)
|
||||
|
||||
val cancelAllIntent = Intent(MainApplication.context, ActionReceiver::class.java).apply {
|
||||
val cancelAllIntent = Intent(NeoApp.context, ActionReceiver::class.java).apply {
|
||||
action = ActionReceiver.COMMAND_CANCEL_SYNC_ALL
|
||||
}
|
||||
val cancelAllPendingIntent = PendingIntent.getBroadcast(
|
||||
MainApplication.context,
|
||||
NeoApp.context,
|
||||
"batch_sync_all".hashCode(),
|
||||
cancelAllIntent,
|
||||
PendingIntent.FLAG_IMMUTABLE
|
@ -1,10 +1,10 @@
|
||||
package com.machiav3lli.fdroid.service.worker
|
||||
package com.machiav3lli.fdroid.manager.service.worker
|
||||
|
||||
import androidx.work.WorkInfo
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.database.entity.InstallTask
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.entity.ActionState
|
||||
import com.machiav3lli.fdroid.data.database.entity.InstallTask
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.entity.ActionState
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlin.math.roundToInt
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.service.worker
|
||||
package com.machiav3lli.fdroid.manager.service.worker
|
||||
|
||||
import android.app.DownloadManager
|
||||
import android.content.Context
|
||||
@ -31,23 +31,23 @@ import com.machiav3lli.fdroid.ARG_STARTED
|
||||
import com.machiav3lli.fdroid.ARG_TOTAL
|
||||
import com.machiav3lli.fdroid.ARG_URL
|
||||
import com.machiav3lli.fdroid.ARG_VALIDATION_ERROR
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.content.Cache
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.entity.Release
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.network.DownloadSizeException
|
||||
import com.machiav3lli.fdroid.network.Downloader
|
||||
import com.machiav3lli.fdroid.utility.Utils
|
||||
import com.machiav3lli.fdroid.utility.copyTo
|
||||
import com.machiav3lli.fdroid.utility.downloadNotificationBuilder
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.extension.android.singleSignature
|
||||
import com.machiav3lli.fdroid.utility.extension.android.versionCodeCompat
|
||||
import com.machiav3lli.fdroid.utility.extension.text.hex
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.utility.getDownloadFolder
|
||||
import com.machiav3lli.fdroid.utility.isDownloadExternal
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.data.content.Cache
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.entity.Release
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.manager.network.DownloadSizeException
|
||||
import com.machiav3lli.fdroid.manager.network.Downloader
|
||||
import com.machiav3lli.fdroid.utils.Utils
|
||||
import com.machiav3lli.fdroid.utils.copyTo
|
||||
import com.machiav3lli.fdroid.utils.downloadNotificationBuilder
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.extension.android.singleSignature
|
||||
import com.machiav3lli.fdroid.utils.extension.android.versionCodeCompat
|
||||
import com.machiav3lli.fdroid.utils.extension.text.hex
|
||||
import com.machiav3lli.fdroid.utils.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.utils.getDownloadFolder
|
||||
import com.machiav3lli.fdroid.utils.isDownloadExternal
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
@ -297,7 +297,7 @@ class DownloadWorker(
|
||||
.addTag("download_$packageName")
|
||||
.build()
|
||||
|
||||
MainApplication.wm.workManager
|
||||
NeoApp.wm.workManager
|
||||
.enqueueUniqueWork(
|
||||
"$packageName-${repository.id}-${release.version}",
|
||||
ExistingWorkPolicy.REPLACE,
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.service.worker
|
||||
package com.machiav3lli.fdroid.manager.service.worker
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
@ -11,11 +11,11 @@ import androidx.work.workDataOf
|
||||
import com.machiav3lli.fdroid.ARG_PACKAGE_NAME
|
||||
import com.machiav3lli.fdroid.ARG_VERSION_CODE
|
||||
import com.machiav3lli.fdroid.ARG_WORK_TYPE
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.entity.ExodusInfo
|
||||
import com.machiav3lli.fdroid.database.entity.Tracker
|
||||
import com.machiav3lli.fdroid.network.RExodusAPI
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.entity.ExodusInfo
|
||||
import com.machiav3lli.fdroid.data.database.entity.Tracker
|
||||
import com.machiav3lli.fdroid.manager.network.RExodusAPI
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.koin.android.annotation.KoinWorker
|
||||
@ -51,7 +51,7 @@ class ExodusWorker(
|
||||
try {
|
||||
val trackerList = repoExodusAPI.getTrackers()
|
||||
// TODO **conditionally** update DB with the trackers
|
||||
MainApplication.db.getTrackerDao().upsert(
|
||||
NeoApp.db.getTrackerDao().upsert(
|
||||
*trackerList.trackers
|
||||
.map { (key, value) ->
|
||||
Tracker(
|
||||
@ -88,7 +88,7 @@ class ExodusWorker(
|
||||
?: ExodusInfo()
|
||||
|
||||
val exodusInfo = latestExodusApp.toExodusInfo(packageName)
|
||||
MainApplication.db.getExodusInfoDao().upsert(exodusInfo)
|
||||
NeoApp.db.getExodusInfoDao().upsert(exodusInfo)
|
||||
} catch (e: Exception) {
|
||||
Log.e(this::javaClass.name, "Failed fetching exodus info", e)
|
||||
}
|
||||
@ -104,7 +104,7 @@ class ExodusWorker(
|
||||
ARG_WORK_TYPE to WorkType.TRACKERS.ordinal,
|
||||
)
|
||||
|
||||
MainApplication.wm.workManager.enqueueUniqueWork(
|
||||
NeoApp.wm.workManager.enqueueUniqueWork(
|
||||
WorkType.TRACKERS.name,
|
||||
ExistingWorkPolicy.REPLACE,
|
||||
OneTimeWorkRequestBuilder<ExodusWorker>()
|
||||
@ -121,7 +121,7 @@ class ExodusWorker(
|
||||
ARG_VERSION_CODE to versionCode,
|
||||
)
|
||||
|
||||
MainApplication.wm.workManager.enqueueUniqueWork(
|
||||
NeoApp.wm.workManager.enqueueUniqueWork(
|
||||
WorkType.TRACKERS.name,
|
||||
ExistingWorkPolicy.REPLACE,
|
||||
OneTimeWorkRequestBuilder<ExodusWorker>()
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.service.worker
|
||||
package com.machiav3lli.fdroid.manager.service.worker
|
||||
|
||||
sealed class InstallState {
|
||||
data object Pending : InstallState()
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.service.worker
|
||||
package com.machiav3lli.fdroid.manager.service.worker
|
||||
|
||||
import android.content.Context
|
||||
import android.content.pm.ServiceInfo
|
||||
@ -16,11 +16,11 @@ import com.machiav3lli.fdroid.ARG_FILE_NAME
|
||||
import com.machiav3lli.fdroid.ARG_NAME
|
||||
import com.machiav3lli.fdroid.ARG_PACKAGE_NAME
|
||||
import com.machiav3lli.fdroid.ARG_REPOSITORY_ID
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.database.entity.InstallTask
|
||||
import com.machiav3lli.fdroid.installer.LegacyInstaller
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utility.installNotificationBuilder
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.data.database.entity.InstallTask
|
||||
import com.machiav3lli.fdroid.manager.installer.LegacyInstaller
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import com.machiav3lli.fdroid.utils.installNotificationBuilder
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
@ -37,7 +37,7 @@ class InstallWorker(
|
||||
) : CoroutineWorker(context, params) {
|
||||
private lateinit var currentTask: InstallTask
|
||||
private val installState = MutableStateFlow<InstallState>(InstallState.Pending)
|
||||
private val installerInstance = MainApplication.installer
|
||||
private val installerInstance = NeoApp.installer
|
||||
private val installJob = Job()
|
||||
|
||||
override suspend fun doWork(): Result = withContext(Dispatchers.IO + installJob) {
|
||||
@ -59,7 +59,7 @@ class InstallWorker(
|
||||
|
||||
private suspend fun handleInstall(label: String, fileName: String): Result? = coroutineScope {
|
||||
var result: Result? = null
|
||||
currentTask = MainApplication.db.getInstallTaskDao()
|
||||
currentTask = NeoApp.db.getInstallTaskDao()
|
||||
.get(fileName) ?: return@coroutineScope null
|
||||
while (installState.value !is InstallState.Completed && installState.value !is InstallState.Failed) {
|
||||
when (installState.value) {
|
||||
@ -67,8 +67,8 @@ class InstallWorker(
|
||||
if (!installerInstance.isInstalling(currentTask.packageName)) {
|
||||
installState.value = InstallState.Installing
|
||||
try {
|
||||
if (MainApplication.mainActivity != null && installerInstance is LegacyInstaller) {
|
||||
MainApplication.mainActivity?.withResumed {
|
||||
if (NeoApp.mainActivity != null && installerInstance is LegacyInstaller) {
|
||||
NeoApp.mainActivity?.withResumed {
|
||||
launch {
|
||||
installerInstance.install(label, fileName) {
|
||||
installState.value = InstallState.Completed
|
||||
@ -152,7 +152,7 @@ class InstallWorker(
|
||||
.addTag("installer")
|
||||
.build()
|
||||
|
||||
MainApplication.wm.workManager
|
||||
NeoApp.wm.workManager
|
||||
.enqueueUniqueWork(
|
||||
"Installer_$packageName",
|
||||
if (enforce) ExistingWorkPolicy.REPLACE
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.service.worker
|
||||
package com.machiav3lli.fdroid.manager.service.worker
|
||||
|
||||
class SyncTask(
|
||||
val repoId: Long,
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.service.worker
|
||||
package com.machiav3lli.fdroid.manager.service.worker
|
||||
|
||||
import android.app.PendingIntent
|
||||
import android.content.Context
|
||||
@ -27,18 +27,18 @@ import com.machiav3lli.fdroid.ARG_SUCCESS
|
||||
import com.machiav3lli.fdroid.ARG_SYNC_REQUEST
|
||||
import com.machiav3lli.fdroid.ARG_TOTAL
|
||||
import com.machiav3lli.fdroid.EXODUS_TRACKERS_SYNC
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.NOTIFICATION_CHANNEL_SYNCING
|
||||
import com.machiav3lli.fdroid.NOTIFICATION_ID_SYNCING
|
||||
import com.machiav3lli.fdroid.NeoActivity
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.TAG_SYNC_ONETIME
|
||||
import com.machiav3lli.fdroid.TAG_SYNC_PERIODIC
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.index.RepositoryUpdater
|
||||
import com.machiav3lli.fdroid.service.ActionReceiver
|
||||
import com.machiav3lli.fdroid.utility.extension.android.Android
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.data.index.RepositoryUpdater
|
||||
import com.machiav3lli.fdroid.manager.service.ActionReceiver
|
||||
import com.machiav3lli.fdroid.utils.extension.android.Android
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.future.future
|
||||
@ -67,7 +67,7 @@ class SyncWorker(
|
||||
}
|
||||
|
||||
private fun CoroutineScope.handleSync(task: SyncTask): Result {
|
||||
val repository = MainApplication.db.getRepositoryDao().get(task.repoId)
|
||||
val repository = NeoApp.db.getRepositoryDao().get(task.repoId)
|
||||
|
||||
Log.i(this::class.java.simpleName, "sync repository: ${task.repoId}")
|
||||
if (repository != null && repository.enabled && task.repoId != EXODUS_TRACKERS_SYNC) {
|
||||
@ -138,11 +138,11 @@ class SyncWorker(
|
||||
)
|
||||
|
||||
val cancelAllIntent =
|
||||
Intent(MainApplication.context, ActionReceiver::class.java).apply {
|
||||
Intent(NeoApp.context, ActionReceiver::class.java).apply {
|
||||
action = ActionReceiver.COMMAND_CANCEL_SYNC_ALL
|
||||
}
|
||||
val cancelAllPendingIntent = PendingIntent.getBroadcast(
|
||||
MainApplication.context,
|
||||
NeoApp.context,
|
||||
"<ALL>".hashCode(),
|
||||
cancelAllIntent,
|
||||
PendingIntent.FLAG_IMMUTABLE
|
||||
@ -259,7 +259,7 @@ class SyncWorker(
|
||||
ARG_REPOSITORY_NAME to repoName,
|
||||
)
|
||||
|
||||
MainApplication.wm.workManager.enqueueUniqueWork(
|
||||
NeoApp.wm.workManager.enqueueUniqueWork(
|
||||
"sync_$repoId",
|
||||
ExistingWorkPolicy.KEEP,
|
||||
OneTimeWorkRequestBuilder<SyncWorker>()
|
||||
@ -273,26 +273,26 @@ class SyncWorker(
|
||||
|
||||
suspend fun enableRepo(repository: Repository, enabled: Boolean): Boolean =
|
||||
withContext(Dispatchers.IO) {
|
||||
MainApplication.db.getRepositoryDao().put(repository.enable(enabled))
|
||||
NeoApp.db.getRepositoryDao().put(repository.enable(enabled))
|
||||
val isEnabled = !repository.enabled && repository.lastModified.isEmpty()
|
||||
val cooldownedSync = System.currentTimeMillis() -
|
||||
MainApplication.latestSyncs.getOrDefault(repository.id, 0L) >=
|
||||
NeoApp.latestSyncs.getOrDefault(repository.id, 0L) >=
|
||||
10_000L
|
||||
if (enabled && isEnabled && cooldownedSync) {
|
||||
MainApplication.latestSyncs[repository.id] = System.currentTimeMillis()
|
||||
NeoApp.latestSyncs[repository.id] = System.currentTimeMillis()
|
||||
enqueueManual(Pair(repository.id, repository.name))
|
||||
} else {
|
||||
MainApplication.wm.cancelSync(repository.id)
|
||||
MainApplication.db.cleanUp(Pair(repository.id, false))
|
||||
NeoApp.wm.cancelSync(repository.id)
|
||||
NeoApp.db.cleanUp(Pair(repository.id, false))
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
suspend fun deleteRepo(repoId: Long): Boolean = withContext(Dispatchers.IO) {
|
||||
val repository = MainApplication.db.getRepositoryDao().get(repoId)
|
||||
val repository = NeoApp.db.getRepositoryDao().get(repoId)
|
||||
repository != null && run {
|
||||
enableRepo(repository, false)
|
||||
MainApplication.db.getRepositoryDao().deleteById(repoId)
|
||||
NeoApp.db.getRepositoryDao().deleteById(repoId)
|
||||
true
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.work
|
||||
package com.machiav3lli.fdroid.manager.work
|
||||
|
||||
import android.Manifest
|
||||
import android.app.PendingIntent
|
||||
@ -11,17 +11,17 @@ import androidx.core.app.NotificationManagerCompat
|
||||
import androidx.work.Data
|
||||
import androidx.work.WorkInfo
|
||||
import com.machiav3lli.fdroid.ARG_PACKAGE_NAME
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.entity.Downloaded
|
||||
import com.machiav3lli.fdroid.service.ActionReceiver
|
||||
import com.machiav3lli.fdroid.service.InstallerReceiver
|
||||
import com.machiav3lli.fdroid.service.worker.DownloadState
|
||||
import com.machiav3lli.fdroid.service.worker.DownloadWorker
|
||||
import com.machiav3lli.fdroid.utility.downloadNotificationBuilder
|
||||
import com.machiav3lli.fdroid.utility.extension.text.formatSize
|
||||
import com.machiav3lli.fdroid.utility.updateWithError
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.entity.Downloaded
|
||||
import com.machiav3lli.fdroid.manager.service.ActionReceiver
|
||||
import com.machiav3lli.fdroid.manager.service.InstallerReceiver
|
||||
import com.machiav3lli.fdroid.manager.service.worker.DownloadState
|
||||
import com.machiav3lli.fdroid.manager.service.worker.DownloadWorker
|
||||
import com.machiav3lli.fdroid.utils.downloadNotificationBuilder
|
||||
import com.machiav3lli.fdroid.utils.extension.text.formatSize
|
||||
import com.machiav3lli.fdroid.utils.updateWithError
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.consumeAsFlow
|
||||
@ -54,7 +54,7 @@ class DownloadStateHandler(
|
||||
}
|
||||
|
||||
private suspend fun handleDownloadState(key: String, state: DownloadState) {
|
||||
MainApplication.db.getDownloadedDao().upsert(
|
||||
NeoApp.db.getDownloadedDao().upsert(
|
||||
Downloaded(
|
||||
packageName = state.packageName,
|
||||
version = state.version,
|
||||
@ -67,7 +67,7 @@ class DownloadStateHandler(
|
||||
|
||||
when (state) {
|
||||
is DownloadState.Success -> scope.launch {
|
||||
MainApplication.db.getInstallTaskDao()
|
||||
NeoApp.db.getInstallTaskDao()
|
||||
.put(state.toInstallTask())
|
||||
downloadStates.updateState(key, null)
|
||||
}
|
||||
@ -98,10 +98,10 @@ class DownloadStateHandler(
|
||||
}
|
||||
|
||||
private fun updateNotification(event: UpdateEvent) {
|
||||
val appContext = MainApplication.context
|
||||
val appContext = NeoApp.context
|
||||
val builder = createNotificationBuilder(event.state)
|
||||
if (event.state is DownloadState.Success || event.state is DownloadState.Cancel) {
|
||||
MainApplication.wm.notificationManager.cancel(event.key.hashCode())
|
||||
NeoApp.wm.notificationManager.cancel(event.key.hashCode())
|
||||
} else if (ActivityCompat.checkSelfPermission(
|
||||
appContext,
|
||||
Manifest.permission.POST_NOTIFICATIONS
|
||||
@ -110,7 +110,7 @@ class DownloadStateHandler(
|
||||
}
|
||||
|
||||
private fun createNotificationBuilder(state: DownloadState): NotificationCompat.Builder {
|
||||
val appContext = MainApplication.context
|
||||
val appContext = NeoApp.context
|
||||
val notificationBuilder = appContext.downloadNotificationBuilder()
|
||||
|
||||
val cancelIntent = Intent(appContext, ActionReceiver::class.java).apply {
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.work
|
||||
package com.machiav3lli.fdroid.manager.work
|
||||
|
||||
import android.Manifest
|
||||
import android.content.pm.PackageManager
|
||||
@ -7,12 +7,12 @@ import androidx.core.app.NotificationCompat
|
||||
import androidx.core.app.NotificationManagerCompat
|
||||
import androidx.work.Data
|
||||
import androidx.work.WorkInfo
|
||||
import com.machiav3lli.fdroid.MainApplication
|
||||
import com.machiav3lli.fdroid.NeoApp
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.service.worker.SyncState
|
||||
import com.machiav3lli.fdroid.service.worker.SyncWorker
|
||||
import com.machiav3lli.fdroid.utility.syncNotificationBuilder
|
||||
import com.machiav3lli.fdroid.utility.updateProgress
|
||||
import com.machiav3lli.fdroid.manager.service.worker.SyncState
|
||||
import com.machiav3lli.fdroid.manager.service.worker.SyncWorker
|
||||
import com.machiav3lli.fdroid.utils.syncNotificationBuilder
|
||||
import com.machiav3lli.fdroid.utils.updateProgress
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.channels.Channel
|
||||
import kotlinx.coroutines.flow.consumeAsFlow
|
||||
@ -56,11 +56,11 @@ class SyncStateHandler(
|
||||
fun updateState(key: String, state: SyncState?) {
|
||||
syncStates.updateState(key, state)
|
||||
if (state == null)
|
||||
MainApplication.wm.notificationManager.cancel(key.hashCode())
|
||||
NeoApp.wm.notificationManager.cancel(key.hashCode())
|
||||
}
|
||||
|
||||
private fun updateNotification(event: UpdateEvent) {
|
||||
val appContext = MainApplication.context
|
||||
val appContext = NeoApp.context
|
||||
val builder = createNotificationBuilder(event.state)
|
||||
if (ActivityCompat.checkSelfPermission(
|
||||
appContext,
|
||||
@ -74,7 +74,7 @@ class SyncStateHandler(
|
||||
}
|
||||
|
||||
private fun createNotificationBuilder(state: SyncState): NotificationCompat.Builder {
|
||||
val appContext = MainApplication.context
|
||||
val appContext = NeoApp.context
|
||||
val notificationBuilder = appContext.syncNotificationBuilder()
|
||||
|
||||
return when (state) {
|
@ -1,4 +1,4 @@
|
||||
package com.machiav3lli.fdroid.work
|
||||
package com.machiav3lli.fdroid.manager.work
|
||||
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
@ -29,8 +29,8 @@ import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.machiav3lli.fdroid.entity.ActionState
|
||||
import com.machiav3lli.fdroid.entity.ComponentState
|
||||
import com.machiav3lli.fdroid.data.entity.ActionState
|
||||
import com.machiav3lli.fdroid.data.entity.ComponentState
|
||||
|
||||
@Composable
|
||||
fun ActionButton(
|
||||
|
@ -19,13 +19,13 @@ import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.database.entity.Downloaded
|
||||
import com.machiav3lli.fdroid.database.entity.IconDetails
|
||||
import com.machiav3lli.fdroid.database.entity.Installed
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.network.createIconUri
|
||||
import com.machiav3lli.fdroid.service.worker.DownloadState
|
||||
import com.machiav3lli.fdroid.data.database.entity.Downloaded
|
||||
import com.machiav3lli.fdroid.data.database.entity.IconDetails
|
||||
import com.machiav3lli.fdroid.data.database.entity.Installed
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.data.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.manager.network.createIconUri
|
||||
import com.machiav3lli.fdroid.manager.service.worker.DownloadState
|
||||
import com.machiav3lli.fdroid.ui.components.appsheet.DownloadProgress
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.Eraser
|
||||
|
@ -38,7 +38,7 @@ import com.machiav3lli.fdroid.ui.compose.icons.phosphor.Check
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.CheckCircle
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.Circle
|
||||
import com.machiav3lli.fdroid.ui.compose.utils.addIf
|
||||
import com.machiav3lli.fdroid.utility.extension.android.launchView
|
||||
import com.machiav3lli.fdroid.utils.extension.android.launchView
|
||||
|
||||
private enum class SelectionState { Unselected, Selected }
|
||||
|
||||
|
@ -20,8 +20,8 @@ import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.entity.Permission
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.entity.Permission
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.X
|
||||
|
||||
|
@ -16,9 +16,9 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.network.createIconUri
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.data.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.manager.network.createIconUri
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
@ -33,17 +33,17 @@ import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.machiav3lli.fdroid.R
|
||||
import com.machiav3lli.fdroid.content.Preferences
|
||||
import com.machiav3lli.fdroid.database.entity.Installed
|
||||
import com.machiav3lli.fdroid.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.entity.ActionState
|
||||
import com.machiav3lli.fdroid.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.network.createIconUri
|
||||
import com.machiav3lli.fdroid.data.content.Preferences
|
||||
import com.machiav3lli.fdroid.data.database.entity.Installed
|
||||
import com.machiav3lli.fdroid.data.database.entity.Repository
|
||||
import com.machiav3lli.fdroid.data.entity.ActionState
|
||||
import com.machiav3lli.fdroid.data.entity.ProductItem
|
||||
import com.machiav3lli.fdroid.manager.network.createIconUri
|
||||
import com.machiav3lli.fdroid.ui.components.appsheet.ReleaseBadge
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.Phosphor
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.HeartStraight
|
||||
import com.machiav3lli.fdroid.ui.compose.icons.phosphor.HeartStraightFill
|
||||
import com.machiav3lli.fdroid.utility.extension.text.nullIfEmpty
|
||||
import com.machiav3lli.fdroid.utils.extension.text.nullIfEmpty
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user