Download: Save and show download datetime
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -13,7 +13,7 @@ import com.aurora.store.data.room.update.UpdateDao
|
||||
|
||||
@Database(
|
||||
entities = [Download::class, Favourite::class, Update::class],
|
||||
version = 4,
|
||||
version = 5,
|
||||
exportSchema = false
|
||||
)
|
||||
@TypeConverters(DownloadConverter::class)
|
||||
|
||||
@@ -10,17 +10,14 @@ import androidx.sqlite.db.SupportSQLiteDatabase
|
||||
*/
|
||||
object MigrationHelper {
|
||||
|
||||
// ADD ALL NEW MIGRATION STEPS HERE TOO
|
||||
val MIGRATION_1_4 = object : Migration(1, 4) {
|
||||
override fun migrate(db: SupportSQLiteDatabase) {
|
||||
migrateFrom3To4(db)
|
||||
}
|
||||
}
|
||||
|
||||
val MIGRATION_3_4 = object : Migration(3, 4) {
|
||||
override fun migrate(db: SupportSQLiteDatabase) = migrateFrom3To4(db)
|
||||
}
|
||||
|
||||
val MIGRATION_4_5 = object : Migration(4, 5) {
|
||||
override fun migrate(db: SupportSQLiteDatabase) = migrateFrom4To5(db)
|
||||
}
|
||||
|
||||
private const val TAG = "MigrationHelper"
|
||||
|
||||
/**
|
||||
@@ -39,4 +36,19 @@ object MigrationHelper {
|
||||
database.endTransaction()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add downloadedAt column to download table for showing installation/update date of apps.
|
||||
*/
|
||||
private fun migrateFrom4To5(database: SupportSQLiteDatabase) {
|
||||
database.beginTransaction()
|
||||
try {
|
||||
database.execSQL("ALTER TABLE `download` ADD COLUMN downloadedAt INTEGER NOT NULL DEFAULT 0")
|
||||
database.setTransactionSuccessful()
|
||||
} catch (exception: Exception) {
|
||||
Log.e(TAG, "Failed while migrating from database version 4 to 5", exception)
|
||||
} finally {
|
||||
database.endTransaction()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ package com.aurora.store.data.room
|
||||
|
||||
import android.content.Context
|
||||
import androidx.room.Room
|
||||
import com.aurora.store.data.room.MigrationHelper.MIGRATION_1_4
|
||||
import com.aurora.store.data.room.MigrationHelper.MIGRATION_3_4
|
||||
import com.aurora.store.data.room.MigrationHelper.MIGRATION_4_5
|
||||
import com.aurora.store.data.room.download.DownloadConverter
|
||||
import com.aurora.store.data.room.download.DownloadDao
|
||||
import com.aurora.store.data.room.favourite.FavouriteDao
|
||||
@@ -28,7 +28,7 @@ object RoomModule {
|
||||
downloadConverter: DownloadConverter
|
||||
): AuroraDatabase {
|
||||
return Room.databaseBuilder(context, AuroraDatabase::class.java, DATABASE)
|
||||
.addMigrations(MIGRATION_3_4, MIGRATION_1_4)
|
||||
.addMigrations(MIGRATION_3_4, MIGRATION_4_5)
|
||||
.addTypeConverter(downloadConverter)
|
||||
.build()
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.aurora.gplayapi.data.models.File
|
||||
import com.aurora.store.data.model.DownloadStatus
|
||||
import com.aurora.store.data.room.update.Update
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import java.util.Date
|
||||
|
||||
@Parcelize
|
||||
@Entity(tableName = "download")
|
||||
@@ -29,6 +30,7 @@ data class Download(
|
||||
var fileList: List<File>,
|
||||
val sharedLibs: List<SharedLib>,
|
||||
val targetSdk: Int = 1,
|
||||
val downloadedAt: Long = 0
|
||||
) : Parcelable {
|
||||
val isFinished get() = downloadStatus in DownloadStatus.finished
|
||||
val isRunning get() = downloadStatus in DownloadStatus.running
|
||||
@@ -52,7 +54,8 @@ data class Download(
|
||||
0,
|
||||
app.fileList.filterNot { it.url.isBlank() },
|
||||
app.dependencies.dependentLibraries.map { SharedLib.fromApp(it) },
|
||||
app.targetSdk
|
||||
app.targetSdk,
|
||||
Date().time
|
||||
)
|
||||
}
|
||||
|
||||
@@ -74,7 +77,8 @@ data class Download(
|
||||
0,
|
||||
update.fileList,
|
||||
update.sharedLibs,
|
||||
update.targetSdk
|
||||
update.targetSdk,
|
||||
Date().time
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
package com.aurora.store.view.ui.downloads
|
||||
|
||||
import android.os.Bundle
|
||||
import android.text.format.DateUtils
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
@@ -31,12 +32,14 @@ import com.aurora.store.data.helper.DownloadHelper
|
||||
import com.aurora.store.data.room.download.Download
|
||||
import com.aurora.store.databinding.FragmentDownloadBinding
|
||||
import com.aurora.store.view.epoxy.views.DownloadViewModel_
|
||||
import com.aurora.store.view.epoxy.views.TextDividerViewModel_
|
||||
import com.aurora.store.view.epoxy.views.app.NoAppViewModel_
|
||||
import com.aurora.store.view.ui.commons.BaseFragment
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import kotlinx.coroutines.NonCancellable
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.Date
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
@@ -98,23 +101,37 @@ class DownloadFragment : BaseFragment<FragmentDownloadBinding>() {
|
||||
.message(getString(R.string.download_none))
|
||||
)
|
||||
} else {
|
||||
downloads.forEach {
|
||||
downloads.groupBy {
|
||||
DateUtils.getRelativeTimeSpanString(
|
||||
it.downloadedAt,
|
||||
Date().time,
|
||||
DateUtils.DAY_IN_MILLIS
|
||||
).toString()
|
||||
}.forEach { (date, downloadList) ->
|
||||
add(
|
||||
DownloadViewModel_()
|
||||
.id(it.packageName)
|
||||
.download(it)
|
||||
.click { _ ->
|
||||
if (it.packageName == requireContext().packageName) {
|
||||
requireContext().browse(GITLAB_URL)
|
||||
} else {
|
||||
openDetailsFragment(it.packageName)
|
||||
}
|
||||
}
|
||||
.longClick { _ ->
|
||||
openDownloadMenuSheet(it.packageName)
|
||||
true
|
||||
}
|
||||
TextDividerViewModel_()
|
||||
.id(date)
|
||||
.title(date)
|
||||
)
|
||||
|
||||
downloadList.forEach {
|
||||
add(
|
||||
DownloadViewModel_()
|
||||
.id(it.packageName)
|
||||
.download(it)
|
||||
.click { _ ->
|
||||
if (it.packageName == requireContext().packageName) {
|
||||
requireContext().browse(GITLAB_URL)
|
||||
} else {
|
||||
openDetailsFragment(it.packageName)
|
||||
}
|
||||
}
|
||||
.longClick { _ ->
|
||||
openDownloadMenuSheet(it.packageName)
|
||||
true
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user