Cleaning.

This commit is contained in:
aminecmi 2022-10-29 20:50:44 +02:00
parent 6076eb1cee
commit 5494978db8
8 changed files with 80 additions and 104 deletions

View File

@ -54,9 +54,13 @@ fun versionNameFromGit(): String {
android {
compileOptions {
// Flag to enable support for the new language APIs
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
// For Kotlin projects
kotlinOptions {
jvmTarget = "11"
}
compileSdk = 32
buildToolsVersion = "31.0.0"
@ -130,8 +134,6 @@ dependencies {
implementation("androidx.constraintlayout:constraintlayout:2.1.3")
implementation("org.jsoup:jsoup:1.14.3")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
//multidex
implementation("androidx.multidex:multidex:2.0.1")
@ -140,9 +142,6 @@ dependencies {
implementation("com.mikepenz:aboutlibraries:8.9.4")
implementation("com.mikepenz:aboutlibraries-definitions:8.9.4")
// Async
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0")
// Retrofit + http logging + okhttp
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.3")

View File

@ -94,7 +94,7 @@ class AddSourceActivity : AppCompatActivity(), DIAware {
CoroutineScope(Dispatchers.Main).launch {
try {
val items = repository.getSpouts()
if (items != null) {
if (items.isNotEmpty()) {
val itemsStrings = items.map { it.value.name }
for ((key, value) in items) {
spoutsKV[value.name] = key

View File

@ -101,7 +101,7 @@ class LoginActivity : AppCompatActivity(), DIAware {
finish()
}
private fun preferenceError(t: Throwable) {
private fun preferenceError() {
appSettingsService.resetLoginInformation()
binding.urlView.error = getString(R.string.wrong_infos)
@ -169,7 +169,7 @@ class LoginActivity : AppCompatActivity(), DIAware {
goToMain()
} else {
CoroutineScope(Dispatchers.Main).launch {
preferenceError(Exception("Not success"))
preferenceError()
}
}
}

View File

@ -56,7 +56,7 @@ class SourcesActivity : AppCompatActivity(), DIAware {
CoroutineScope(Dispatchers.Main).launch {
val response = repository.getSources()
if (response != null) {
if (response.isNotEmpty()) {
items = response
val mAdapter = SourcesListAdapter(
this@SourcesActivity, items

View File

@ -64,14 +64,14 @@ class RepositoryTest {
}
@Test
fun Instantiate_repository() {
fun instantiate_repository() {
initializeRepository()
coVerify(exactly = 1) { api.version() }
}
@Test
fun Instantiate_repository_without_api_version() {
fun instantiate_repository_without_api_version() {
every { appSettingsService.getApiVersion() } returns -1
initializeRepository(MutableStateFlow(false))
@ -81,7 +81,7 @@ class RepositoryTest {
}
@Test
fun Get_api_4_date_with_api_1_version_stored() {
fun get_api_4_date_with_api_1_version_stored() {
every { appSettingsService.getApiVersion() } returns 1
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
SelfossModel.StatusAndData(success = true, data = generateTestApiItem())
@ -97,7 +97,7 @@ class RepositoryTest {
}
@Test
fun Get_api_1_date_with_api_4_version_stored() {
fun get_api_1_date_with_api_4_version_stored() {
every { appSettingsService.getApiVersion() } returns 4
coEvery { api.version() } returns SelfossModel.StatusAndData(success = false, null)
val itemParameters = FakeItemParameters()
@ -117,7 +117,7 @@ class RepositoryTest {
}
@Test
fun Get_newer_items() {
fun get_newer_items() {
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
SelfossModel.StatusAndData(success = true, data = generateTestApiItem())
@ -132,7 +132,7 @@ class RepositoryTest {
}
@Test
fun Get_all_newer_items() {
fun get_all_newer_items() {
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
SelfossModel.StatusAndData(success = true, data = generateTestApiItem())
@ -148,7 +148,7 @@ class RepositoryTest {
}
@Test
fun Get_newer_starred_items() {
fun get_newer_starred_items() {
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
SelfossModel.StatusAndData(success = true, data = generateTestApiItem())
@ -164,7 +164,7 @@ class RepositoryTest {
}
@Test
fun Get_newer_items_without_connectivity() {
fun get_newer_items_without_connectivity() {
every { appSettingsService.isItemCachingEnabled() } returns true
initializeRepository(MutableStateFlow(false))
@ -178,7 +178,7 @@ class RepositoryTest {
}
@Test
fun Get_newer_items_without_connectivity_and_tag_filter() {
fun get_newer_items_without_connectivity_and_tag_filter() {
val itemParameter1 = FakeItemParameters()
val itemParameter2 = FakeItemParameters()
val itemParameter3 = FakeItemParameters()
@ -206,7 +206,7 @@ class RepositoryTest {
}
@Test
fun Get_newer_items_without_connectivity_and_source_filter() {
fun get_newer_items_without_connectivity_and_source_filter() {
val itemParameter1 = FakeItemParameters()
val itemParameter2 = FakeItemParameters()
val itemParameter3 = FakeItemParameters()
@ -241,7 +241,7 @@ class RepositoryTest {
}
@Test
fun Get_older_items() {
fun get_older_items() {
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
SelfossModel.StatusAndData(success = true, data = generateTestApiItem())
@ -257,7 +257,7 @@ class RepositoryTest {
}
@Test
fun Get_all_older_items() {
fun get_all_older_items() {
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
SelfossModel.StatusAndData(success = true, data = generateTestApiItem())
@ -274,7 +274,7 @@ class RepositoryTest {
}
@Test
fun Get_older_starred_items() {
fun get_older_starred_items() {
coEvery { api.getItems(any(), any(), any(), any(), any(), any(), any()) } returns
SelfossModel.StatusAndData(success = true, data = generateTestApiItem())
@ -291,8 +291,8 @@ class RepositoryTest {
}
@Test
fun Reload_badges() {
var success = false
fun reload_badges() {
var success: Boolean
initializeRepository()
runBlocking {
@ -308,10 +308,10 @@ class RepositoryTest {
}
@Test
fun Reload_badges_without_response() {
fun reload_badges_without_response() {
coEvery { api.stats() } returns SelfossModel.StatusAndData(success = false, data = null)
var success = false
var success: Boolean
initializeRepository()
runBlocking {
@ -327,11 +327,11 @@ class RepositoryTest {
}
@Test
fun Reload_badges_without_connection() {
fun reload_badges_without_connection() {
every { appSettingsService.isItemCachingEnabled() } returns true
every { db.itemsQueries.items().executeAsList() } returns generateTestDBItems()
var success = false
var success: Boolean
initializeRepository(MutableStateFlow(false))
runBlocking {
@ -347,11 +347,11 @@ class RepositoryTest {
}
@Test
fun Reload_badges_without_connection_and_items_caching_disabled() {
fun reload_badges_without_connection_and_items_caching_disabled() {
every { appSettingsService.isItemCachingEnabled() } returns false
every { appSettingsService.isUpdateSourcesEnabled() } returns true
var success = false
var success: Boolean
initializeRepository(MutableStateFlow(false))
runBlocking {
@ -367,7 +367,7 @@ class RepositoryTest {
}
@Test
fun Get_tags() {
fun get_tags() {
val tags = listOf(
SelfossModel.Tag("test", "red", 6),
SelfossModel.Tag("second", "yellow", 0)
@ -383,7 +383,7 @@ class RepositoryTest {
every { appSettingsService.isItemCachingEnabled() } returns true
initializeRepository()
var testTags: List<SelfossModel.Tag>? = null
var testTags: List<SelfossModel.Tag>?
runBlocking {
testTags = repository.getTags()
}
@ -394,7 +394,7 @@ class RepositoryTest {
}
@Test
fun Get_tags_with_sources_update_disabled() {
fun get_tags_with_sources_update_disabled() {
val tags = listOf(
SelfossModel.Tag("test", "red", 6),
SelfossModel.Tag("second", "yellow", 0)
@ -410,7 +410,7 @@ class RepositoryTest {
every { appSettingsService.isItemCachingEnabled() } returns true
initializeRepository()
var testTags: List<SelfossModel.Tag> = emptyList()
var testTags: List<SelfossModel.Tag>
runBlocking {
testTags = repository.getTags()
// Tags will be fetched from the database on the second call, thus testTags != tags
@ -424,7 +424,7 @@ class RepositoryTest {
}
@Test
fun Get_tags_with_items_caching_disabled() {
fun get_tags_with_items_caching_disabled() {
val tags = listOf(
SelfossModel.Tag("test", "red", 6),
SelfossModel.Tag("second", "yellow", 0)
@ -440,7 +440,7 @@ class RepositoryTest {
every { appSettingsService.isItemCachingEnabled() } returns false
initializeRepository()
var testTags: List<SelfossModel.Tag> = emptyList()
var testTags: List<SelfossModel.Tag>
runBlocking {
testTags = repository.getTags()
}
@ -451,7 +451,7 @@ class RepositoryTest {
}
@Test
fun Get_tags_with_sources_update_and_items_caching_disabled() {
fun get_tags_with_sources_update_and_items_caching_disabled() {
val tags = listOf(
SelfossModel.Tag("test", "red", 6),
SelfossModel.Tag("second", "yellow", 0)
@ -467,7 +467,7 @@ class RepositoryTest {
every { appSettingsService.isItemCachingEnabled() } returns false
initializeRepository()
var testTags: List<SelfossModel.Tag> = emptyList()
var testTags: List<SelfossModel.Tag>
runBlocking {
testTags = repository.getTags()
testTags = repository.getTags()
@ -480,7 +480,7 @@ class RepositoryTest {
}
@Test
fun Get_tags_without_connection() {
fun get_tags_without_connection() {
val tags = listOf(
SelfossModel.Tag("test", "red", 6),
SelfossModel.Tag("second", "yellow", 0)
@ -496,7 +496,7 @@ class RepositoryTest {
every { appSettingsService.isItemCachingEnabled() } returns true
initializeRepository(MutableStateFlow(false))
var testTags: List<SelfossModel.Tag> = emptyList()
var testTags: List<SelfossModel.Tag>
runBlocking {
testTags = repository.getTags()
}
@ -508,7 +508,7 @@ class RepositoryTest {
}
@Test
fun Get_tags_without_connection_and_items_caching_disabled() {
fun get_tags_without_connection_and_items_caching_disabled() {
val tags = listOf(
SelfossModel.Tag("test", "red", 6),
SelfossModel.Tag("second", "yellow", 0)
@ -524,7 +524,7 @@ class RepositoryTest {
every { appSettingsService.isUpdateSourcesEnabled() } returns true
initializeRepository(MutableStateFlow(false))
var testTags: List<SelfossModel.Tag> = emptyList()
var testTags: List<SelfossModel.Tag>
runBlocking {
testTags = repository.getTags()
}
@ -535,7 +535,7 @@ class RepositoryTest {
}
@Test
fun Get_tags_without_connection_and_sources_update_disabled() {
fun get_tags_without_connection_and_sources_update_disabled() {
val tags = listOf(
SelfossModel.Tag("test", "red", 6),
SelfossModel.Tag("second", "yellow", 0)
@ -551,7 +551,7 @@ class RepositoryTest {
every { appSettingsService.isItemCachingEnabled() } returns true
initializeRepository(MutableStateFlow(false))
var testTags: List<SelfossModel.Tag> = emptyList()
var testTags: List<SelfossModel.Tag>
runBlocking {
testTags = repository.getTags()
}
@ -563,7 +563,7 @@ class RepositoryTest {
}
@Test
fun Get_tags_without_connection_and_sources_update_and_items_caching_disabled() {
fun get_tags_without_connection_and_sources_update_and_items_caching_disabled() {
val tags = listOf(
SelfossModel.Tag("test", "red", 6),
SelfossModel.Tag("second", "yellow", 0)
@ -579,7 +579,7 @@ class RepositoryTest {
every { appSettingsService.isItemCachingEnabled() } returns false
initializeRepository(MutableStateFlow(false))
var testTags: List<SelfossModel.Tag> = emptyList()
var testTags: List<SelfossModel.Tag>
runBlocking {
testTags = repository.getTags()
}
@ -631,7 +631,7 @@ class RepositoryTest {
coEvery { api.sources() } returns SelfossModel.StatusAndData(success = true, data = sources)
every { db.sourcesQueries.sources().executeAsList() } returns sourcesDB
initializeRepository()
var testSources: List<SelfossModel.Source>? = null
var testSources: List<SelfossModel.Source>?
runBlocking {
testSources = repository.getSources()
}
@ -685,7 +685,7 @@ class RepositoryTest {
coEvery { api.sources() } returns SelfossModel.StatusAndData(success = true, data = sources)
every { db.sourcesQueries.sources().executeAsList() } returns sourcesDB
initializeRepository()
var testSources: List<SelfossModel.Source>? = null
var testSources: List<SelfossModel.Source>?
runBlocking {
testSources = repository.getSources()
// Sources will be fetched from the database on the second call, thus testSources != sources
@ -742,7 +742,7 @@ class RepositoryTest {
coEvery { api.sources() } returns SelfossModel.StatusAndData(success = true, data = sources)
every { db.sourcesQueries.sources().executeAsList() } returns sourcesDB
initializeRepository()
var testSources: List<SelfossModel.Source>? = null
var testSources: List<SelfossModel.Source>?
runBlocking {
testSources = repository.getSources()
}
@ -796,7 +796,7 @@ class RepositoryTest {
coEvery { api.sources() } returns SelfossModel.StatusAndData(success = true, data = sources)
every { db.sourcesQueries.sources().executeAsList() } returns sourcesDB
initializeRepository()
var testSources: List<SelfossModel.Source>? = null
var testSources: List<SelfossModel.Source>?
runBlocking {
testSources = repository.getSources()
}
@ -848,7 +848,7 @@ class RepositoryTest {
coEvery { api.sources() } returns SelfossModel.StatusAndData(success = true, data = sources)
every { db.sourcesQueries.sources().executeAsList() } returns sourcesDB
initializeRepository(MutableStateFlow(false))
var testSources: List<SelfossModel.Source>? = null
var testSources: List<SelfossModel.Source>?
runBlocking {
testSources = repository.getSources()
}
@ -902,7 +902,7 @@ class RepositoryTest {
coEvery { api.sources() } returns SelfossModel.StatusAndData(success = true, data = sources)
every { db.sourcesQueries.sources().executeAsList() } returns sourcesDB
initializeRepository(MutableStateFlow(false))
var testSources: List<SelfossModel.Source>? = null
var testSources: List<SelfossModel.Source>?
runBlocking {
testSources = repository.getSources()
}
@ -956,7 +956,7 @@ class RepositoryTest {
coEvery { api.sources() } returns SelfossModel.StatusAndData(success = true, data = sources)
every { db.sourcesQueries.sources().executeAsList() } returns sourcesDB
initializeRepository(MutableStateFlow(false))
var testSources: List<SelfossModel.Source>? = null
var testSources: List<SelfossModel.Source>?
runBlocking {
testSources = repository.getSources()
}
@ -1010,7 +1010,7 @@ class RepositoryTest {
coEvery { api.sources() } returns SelfossModel.StatusAndData(success = true, data = sources)
every { db.sourcesQueries.sources().executeAsList() } returns sourcesDB
initializeRepository(MutableStateFlow(false))
var testSources: List<SelfossModel.Source>? = null
var testSources: List<SelfossModel.Source>?
runBlocking {
testSources = repository.getSources()
}
@ -1026,7 +1026,7 @@ class RepositoryTest {
SelfossModel.SuccessResponse(true)
initializeRepository()
var response = false
var response: Boolean
runBlocking {
response = repository.createSource(
"test",
@ -1056,7 +1056,7 @@ class RepositoryTest {
SelfossModel.SuccessResponse(false)
initializeRepository()
var response = false
var response: Boolean
runBlocking {
response = repository.createSource(
"test",
@ -1086,7 +1086,7 @@ class RepositoryTest {
SelfossModel.SuccessResponse(true)
initializeRepository(MutableStateFlow(false))
var response = false
var response: Boolean
runBlocking {
response = repository.createSource(
"test",
@ -1115,7 +1115,7 @@ class RepositoryTest {
coEvery { api.deleteSource(any()) } returns SelfossModel.SuccessResponse(true)
initializeRepository()
var response = false
var response: Boolean
runBlocking {
response = repository.deleteSource(5)
}
@ -1129,7 +1129,7 @@ class RepositoryTest {
coEvery { api.deleteSource(any()) } returns SelfossModel.SuccessResponse(false)
initializeRepository()
var response = false
var response: Boolean
runBlocking {
response = repository.deleteSource(5)
}
@ -1143,7 +1143,7 @@ class RepositoryTest {
coEvery { api.deleteSource(any()) } returns SelfossModel.SuccessResponse(false)
initializeRepository(MutableStateFlow(false))
var response = false
var response: Boolean
runBlocking {
response = repository.deleteSource(5)
}
@ -1160,7 +1160,7 @@ class RepositoryTest {
)
initializeRepository()
var response = false
var response: Boolean
runBlocking {
response = repository.updateRemote()
}
@ -1177,7 +1177,7 @@ class RepositoryTest {
)
initializeRepository()
var response = false
var response: Boolean
runBlocking {
response = repository.updateRemote()
}
@ -1194,7 +1194,7 @@ class RepositoryTest {
)
initializeRepository()
var response = false
var response: Boolean
runBlocking {
response = repository.updateRemote()
}
@ -1211,7 +1211,7 @@ class RepositoryTest {
)
initializeRepository(MutableStateFlow(false))
var response = false
var response: Boolean
runBlocking {
response = repository.updateRemote()
}
@ -1225,7 +1225,7 @@ class RepositoryTest {
coEvery { api.login() } returns SelfossModel.SuccessResponse(success = true)
initializeRepository()
var response = false
var response: Boolean
runBlocking {
response = repository.login()
}
@ -1239,7 +1239,7 @@ class RepositoryTest {
coEvery { api.login() } returns SelfossModel.SuccessResponse(success = false)
initializeRepository()
var response = false
var response: Boolean
runBlocking {
response = repository.login()
}
@ -1253,7 +1253,7 @@ class RepositoryTest {
coEvery { api.login() } returns SelfossModel.SuccessResponse(success = true)
initializeRepository(MutableStateFlow(false))
var response = false
var response: Boolean
runBlocking {
response = repository.login()
}

View File

@ -34,4 +34,3 @@ org.gradle.caching=true
ignoreGitVersion=false
kotlin.native.cacheKind.iosX64=none
pushCache=true

View File

@ -58,6 +58,7 @@ kotlin {
val androidMain by getting {
dependencies {
implementation("io.ktor:ktor-client-okhttp:2.1.1")
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")
// Sql
implementation(SqlDelight.android)

View File

@ -1,49 +1,26 @@
package bou.amine.apps.readerforselfossv2.utils
import android.os.Build
import android.text.format.DateUtils
import bou.amine.apps.readerforselfossv2.service.AppSettingsService
import java.time.Instant
import java.time.LocalDateTime
import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
actual class DateUtils actual constructor(actual val appSettingsService: AppSettingsService) {
actual fun parseDate(dateString: String): Long {
val FORMATTERV1 = "yyyy-MM-dd HH:mm:ss"
return if (appSettingsService.getApiVersion() >= 4) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
OffsetDateTime.parse(dateString).toInstant().toEpochMilli()
} else {
TODO("VERSION.SDK_INT < O")
}
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern(FORMATTERV1)).toInstant(
ZoneOffset.UTC).toEpochMilli()
} else {
TODO("VERSION.SDK_INT < O")
}
}
return Instant.parse(dateString).toEpochMilliseconds()
}
actual fun parseRelativeDate(dateString: String): String {
val date = parseDate(dateString)
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
" " + DateUtils.getRelativeTimeSpanString(
date,
Instant.now().toEpochMilli(),
DateUtils.MINUTE_IN_MILLIS,
DateUtils.FORMAT_ABBREV_RELATIVE
)
} else {
TODO("VERSION.SDK_INT < O")
}
return " " + DateUtils.getRelativeTimeSpanString(
date,
Clock.System.now().toEpochMilliseconds(),
DateUtils.MINUTE_IN_MILLIS,
DateUtils.FORMAT_ABBREV_RELATIVE
)
}
}