Simplify history deletion using Instant.

pull/332/head
Isira Seneviratne 3 years ago
parent f25a7bcd42
commit 4f86efa02d

@ -12,9 +12,10 @@ import org.koitharu.kotatsu.base.ui.dialog.RememberSelectionDialogListener
import org.koitharu.kotatsu.local.ui.ImportDialogFragment import org.koitharu.kotatsu.local.ui.ImportDialogFragment
import org.koitharu.kotatsu.shelf.ui.config.ShelfSettingsActivity import org.koitharu.kotatsu.shelf.ui.config.ShelfSettingsActivity
import org.koitharu.kotatsu.shelf.ui.config.size.ShelfSizeBottomSheet import org.koitharu.kotatsu.shelf.ui.config.size.ShelfSizeBottomSheet
import org.koitharu.kotatsu.utils.ext.startOfDay import java.time.Instant
import java.util.Date import java.time.LocalDate
import java.util.concurrent.TimeUnit import java.time.ZoneId
import java.time.temporal.ChronoUnit
import com.google.android.material.R as materialR import com.google.android.material.R as materialR
class ShelfMenuProvider( class ShelfMenuProvider(
@ -69,13 +70,13 @@ class ShelfMenuProvider(
.setIcon(R.drawable.ic_delete) .setIcon(R.drawable.ic_delete)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(R.string.clear) { _, _ -> .setPositiveButton(R.string.clear) { _, _ ->
val minDate = when (selectionListener.selection) { val minInstant = when (selectionListener.selection) {
0 -> System.currentTimeMillis() - TimeUnit.HOURS.toMillis(2) 0 -> Instant.now().minus(2, ChronoUnit.HOURS)
1 -> Date().startOfDay() 1 -> LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant()
2 -> 0L 2 -> Instant.EPOCH
else -> return@setPositiveButton else -> return@setPositiveButton
} }
viewModel.clearHistory(minDate) viewModel.clearHistory(minInstant.toEpochMilli())
}.show() }.show()
} }
} }

@ -9,22 +9,8 @@ import java.util.concurrent.TimeUnit
@SuppressLint("SimpleDateFormat") @SuppressLint("SimpleDateFormat")
fun Date.format(pattern: String): String = SimpleDateFormat(pattern).format(this) fun Date.format(pattern: String): String = SimpleDateFormat(pattern).format(this)
fun Date.formatRelative(minResolution: Long): CharSequence = DateUtils.getRelativeTimeSpanString(
time, System.currentTimeMillis(), minResolution
)
fun Date.daysDiff(other: Long): Int { fun Date.daysDiff(other: Long): Int {
val thisDay = time / TimeUnit.DAYS.toMillis(1L) val thisDay = time / TimeUnit.DAYS.toMillis(1L)
val otherDay = other / TimeUnit.DAYS.toMillis(1L) val otherDay = other / TimeUnit.DAYS.toMillis(1L)
return (thisDay - otherDay).toInt() return (thisDay - otherDay).toInt()
} }
fun Date.startOfDay(): Long {
val calendar = Calendar.getInstance()
calendar.time = this
calendar[Calendar.HOUR_OF_DAY] = 0
calendar[Calendar.MINUTE] = 0
calendar[Calendar.SECOND] = 0
calendar[Calendar.MILLISECOND] = 0
return calendar.timeInMillis
}
Loading…
Cancel
Save