Skip to content

Commit e9fe019

Browse files
committed
Merge branch 'develop'
2 parents a71fbbf + 0aee1ef commit e9fe019

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+348
-468
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
44
[![CircleCI](https://circleci.com/gh/asherepenko/launchiteasy.svg?style=svg&circle-token=9d39fddaddad3536601814fbed8a2ffbcce72ece)](https://circleci.com/gh/asherepenko/launchiteasy)
5+
[![Latest Version](https://img.shields.io/github/v/tag/asherepenko/launchiteasy?sort=date)](https://github.com/asherepenko/launchiteasy/releases)
56

67
**Yet Another Launcher**
78

app/build.gradle.kts

Lines changed: 58 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1+
import com.github.triplet.gradle.androidpublisher.ReleaseStatus
12
import java.io.FileInputStream
23
import java.util.Properties
34
import org.jetbrains.kotlin.config.KotlinCompilerVersion
4-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
55
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType
66

77
plugins {
88
id("com.android.application")
9-
id("com.github.triplet.play") version "2.7.2"
10-
id("org.jlleitschuh.gradle.ktlint") version "9.2.1"
9+
id("com.github.triplet.play") version "3.0.0"
10+
id("com.sherepenko.gradle.plugin-build-version") version "0.2.3"
11+
id("org.jlleitschuh.gradle.ktlint") version "9.4.0"
1112
kotlin("android")
1213
kotlin("android.extensions")
1314
kotlin("kapt")
1415
}
1516

1617
val archivesBaseName = "launchiteasy"
17-
val buildVersion = BuildVersion(rootProject.file("version"))
1818

1919
val localPropertiesFile = rootProject.file("local.properties")
2020
val keystorePropertiesFile = rootProject.file("keystore.properties")
2121
val playstorePropertiesFile = rootProject.file("playstore.properties")
2222

2323
android {
24-
compileSdkVersion(29)
24+
compileSdkVersion(30)
2525

2626
defaultConfig {
2727
minSdkVersion(23)
28-
targetSdkVersion(29)
28+
targetSdkVersion(30)
2929
applicationId = "com.sherepenko.android.launchiteasy"
3030
versionCode = buildVersion.versionCode
3131
versionName = buildVersion.versionName
@@ -36,7 +36,7 @@ android {
3636

3737
javaCompileOptions {
3838
annotationProcessorOptions {
39-
arguments = mapOf("room.schemaLocation" to "$projectDir/schemas")
39+
argument("room.schemaLocation", "$projectDir/schemas")
4040
}
4141
}
4242

@@ -61,11 +61,21 @@ android {
6161
buildConfigField("int", "WEATHER_FORECASTS_LIMIT", "12")
6262
}
6363

64+
dependenciesInfo {
65+
includeInApk = false
66+
includeInBundle = false
67+
}
68+
6469
compileOptions {
70+
isCoreLibraryDesugaringEnabled = true
6571
sourceCompatibility = JavaVersion.VERSION_1_8
6672
targetCompatibility = JavaVersion.VERSION_1_8
6773
}
6874

75+
kotlinOptions {
76+
jvmTarget = JavaVersion.VERSION_1_8.toString()
77+
}
78+
6979
lintOptions {
7080
ignore("InvalidPackage")
7181
}
@@ -138,44 +148,44 @@ play {
138148
load(FileInputStream(playstorePropertiesFile))
139149
}
140150

141-
serviceAccountCredentials = rootProject.file(
142-
playstoreProperties.getProperty("playstore.credentials")
151+
serviceAccountCredentials.set(
152+
rootProject.file(playstoreProperties.getProperty("playstore.credentials"))
143153
)
144-
defaultToAppBundles = true
145-
track = "alpha"
146-
releaseStatus = "inProgress"
154+
defaultToAppBundles.set(true)
155+
track.set("alpha")
156+
releaseStatus.set(ReleaseStatus.IN_PROGRESS)
147157
} else if (!System.getenv("PLAYSTORE_CREDENTIALS").isNullOrEmpty()) {
148-
serviceAccountCredentials = rootProject.file(
149-
System.getenv("PLAYSTORE_CREDENTIALS")
158+
serviceAccountCredentials.set(
159+
rootProject.file(System.getenv("PLAYSTORE_CREDENTIALS"))
150160
)
151-
defaultToAppBundles = true
152-
track = "alpha"
153-
releaseStatus = "inProgress"
161+
defaultToAppBundles.set(true)
162+
track.set("alpha")
163+
releaseStatus.set(ReleaseStatus.IN_PROGRESS)
154164
} else {
155-
isEnabled = false
165+
enabled.set(false)
156166
}
157167
}
158168

159-
val glideVersion = "4.11.0"
160-
val jacksonVersion = "2.11.0"
161-
val koinVersion = "2.1.5"
169+
val jacksonVersion = "2.11.3"
170+
val koinVersion = "2.2.0-rc-4"
162171
val lifecycleVersion = "2.2.0"
163-
val navigationVersion = "2.3.0-alpha06"
164-
val okHttpVersion = "4.6.0"
165-
val retrofitVersion = "2.8.1"
172+
val navigationVersion = "2.3.0"
173+
val okHttpVersion = "4.9.0"
174+
val retrofitVersion = "2.9.0"
166175
val roomVersion = "2.2.5"
167-
val workVersion = "2.3.4"
176+
val stethoVersion = "1.5.1"
177+
val workVersion = "2.4.0"
168178

169179
dependencies {
180+
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.0")
170181
kapt("androidx.lifecycle:lifecycle-compiler:$lifecycleVersion")
171182
kapt("androidx.room:room-compiler:$roomVersion")
172-
kapt("com.github.bumptech.glide:compiler:$glideVersion")
173183
implementation(kotlin("stdlib-jdk8", KotlinCompilerVersion.VERSION))
174-
implementation("androidx.appcompat:appcompat:1.1.0")
184+
implementation("androidx.appcompat:appcompat:1.2.0")
175185
implementation("androidx.collection:collection-ktx:1.1.0")
176-
implementation("androidx.constraintlayout:constraintlayout:2.0.0-beta5")
177-
implementation("androidx.core:core-ktx:1.2.0")
178-
implementation("androidx.fragment:fragment-ktx:1.2.4")
186+
implementation("androidx.constraintlayout:constraintlayout:2.0.4")
187+
implementation("androidx.core:core-ktx:1.3.2")
188+
implementation("androidx.fragment:fragment-ktx:1.3.0-beta01")
179189
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion")
180190
implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion")
181191
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion")
@@ -186,23 +196,24 @@ dependencies {
186196
implementation("androidx.preference:preference-ktx:1.1.1")
187197
implementation("androidx.room:room-runtime:$roomVersion")
188198
implementation("androidx.room:room-ktx:$roomVersion")
189-
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-rc01")
199+
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
190200
implementation("androidx.work:work-runtime-ktx:$workVersion")
201+
implementation("com.facebook.stetho:stetho:$stethoVersion")
202+
implementation("com.facebook.stetho:stetho-okhttp3:$stethoVersion")
191203
implementation("com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion")
192204
implementation("com.fasterxml.jackson.core:jackson-core:$jacksonVersion")
193205
implementation("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion")
194206
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion")
195-
implementation("com.github.bumptech.glide:glide:$glideVersion")
207+
implementation("io.coil-kt:coil:1.0.0")
196208
implementation("io.github.inflationx:calligraphy3:3.1.1")
197209
implementation("io.github.inflationx:viewpump:2.0.3")
198-
implementation("com.google.android.gms:play-services-location:17.0.0")
199-
implementation("com.google.android.material:material:1.2.0-alpha06")
200-
implementation("com.google.firebase:firebase-analytics:17.4.1")
201-
implementation("com.google.firebase:firebase-config-ktx:19.1.4")
202-
implementation("com.google.firebase:firebase-crashlytics:17.0.0")
203-
implementation("com.google.firebase:firebase-messaging:20.1.7")
204-
implementation("com.google.firebase:firebase-perf:19.0.7")
205-
implementation("com.jakewharton.threetenabp:threetenabp:1.2.2")
210+
implementation("com.google.android.gms:play-services-location:17.1.0")
211+
implementation("com.google.android.material:material:1.3.0-alpha03")
212+
implementation("com.google.firebase:firebase-analytics-ktx:18.0.0")
213+
implementation("com.google.firebase:firebase-config-ktx:20.0.0")
214+
implementation("com.google.firebase:firebase-crashlytics-ktx:17.2.2")
215+
implementation("com.google.firebase:firebase-messaging:21.0.0")
216+
implementation("com.google.firebase:firebase-perf:19.0.9")
206217
implementation("com.jakewharton.timber:timber:4.7.1")
207218
implementation("com.squareup.okhttp3:okhttp:$okHttpVersion")
208219
implementation("com.squareup.okhttp3:logging-interceptor:$okHttpVersion")
@@ -213,39 +224,17 @@ dependencies {
213224
implementation("org.koin:koin-androidx-viewmodel:$koinVersion")
214225
debugImplementation("com.squareup.leakcanary:leakcanary-android:2.3")
215226
testImplementation("junit:junit:4.13")
216-
testImplementation("androidx.test:core:1.2.0")
217-
testImplementation("androidx.test:runner:1.2.0")
218-
testImplementation("androidx.test.ext:junit:1.1.1")
219-
testImplementation("com.google.truth:truth:0.44")
220-
testImplementation("com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0")
227+
testImplementation("androidx.test:core:1.3.0")
228+
testImplementation("androidx.test:runner:1.3.0")
229+
testImplementation("androidx.test.ext:junit:1.1.2")
230+
testImplementation("com.google.truth:truth:1.0.1")
231+
testImplementation("io.mockk:mockk:1.10.2")
221232
testImplementation("org.koin:koin-test:$koinVersion")
222-
testImplementation("org.robolectric:robolectric:4.3.1")
223-
}
224-
225-
tasks {
226-
withType<KotlinCompile> {
227-
kotlinOptions {
228-
jvmTarget = "1.8"
229-
}
230-
}
231-
232-
val incrementMajor by registering(IncrementVersion::class) {
233-
increment = Increment.MAJOR
234-
version = buildVersion
235-
}
236-
237-
val incrementMinor by registering(IncrementVersion::class) {
238-
increment = Increment.MINOR
239-
version = buildVersion
240-
}
241-
242-
val incrementPatch by registering(IncrementVersion::class) {
243-
increment = Increment.PATCH
244-
version = buildVersion
245-
}
233+
testImplementation("org.robolectric:robolectric:4.4")
246234
}
247235

248236
apply(plugin = "androidx.navigation.safeargs.kotlin")
249237
apply(plugin = "com.google.gms.google-services")
250238
apply(plugin = "com.google.firebase.crashlytics")
251239
apply(plugin = "com.google.firebase.firebase-perf")
240+
apply(plugin = "koin")

app/proguard-rules.pro

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,6 @@
2121
*;
2222
}
2323

24-
# Glide
25-
-keep public class * implements com.bumptech.glide.module.GlideModule
26-
-keep public class * extends com.bumptech.glide.module.AppGlideModule
27-
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
28-
**[] $VALUES;
29-
public *;
30-
}
31-
32-
-dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder
33-
3424
# Jackson
3525
-keep class com.fasterxml.jackson.databind.ObjectMapper {
3626
public <methods>;

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<uses-permission android:name="android.permission.INTERNET" />
1010
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
1111
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
12+
<uses-permission android:name="com.android.alarm.permission.WAKE_LOCK" />
1213

1314
<supports-screens
1415
android:smallScreens="false" />

app/src/main/java/com/sherepenko/android/launchiteasy/LauncherApp.kt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import android.app.Application
44
import android.util.Log
55
import androidx.preference.PreferenceManager
66
import androidx.room.Room
7-
import com.bumptech.glide.annotation.GlideModule
8-
import com.bumptech.glide.module.AppGlideModule
7+
import com.facebook.stetho.Stetho
8+
import com.facebook.stetho.okhttp3.StethoInterceptor
99
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
10-
import com.google.firebase.crashlytics.FirebaseCrashlytics
11-
import com.jakewharton.threetenabp.AndroidThreeTen
10+
import com.google.firebase.crashlytics.ktx.crashlytics
11+
import com.google.firebase.ktx.Firebase
1212
import com.sherepenko.android.launchiteasy.api.OpenWeatherApi
1313
import com.sherepenko.android.launchiteasy.data.db.AppDatabase
1414
import com.sherepenko.android.launchiteasy.livedata.AppStateLiveData
@@ -40,12 +40,15 @@ import okhttp3.logging.HttpLoggingInterceptor
4040
import org.koin.android.ext.koin.androidContext
4141
import org.koin.android.ext.koin.androidLogger
4242
import org.koin.androidx.viewmodel.dsl.viewModel
43+
import org.koin.core.component.KoinApiExtension
4344
import org.koin.core.context.startKoin
45+
import org.koin.core.logger.Level
4446
import org.koin.dsl.module
4547
import retrofit2.Retrofit
4648
import retrofit2.converter.jackson.JacksonConverterFactory
4749
import timber.log.Timber
4850

51+
@KoinApiExtension
4952
class LauncherApp : Application() {
5053

5154
companion object {
@@ -67,16 +70,13 @@ class LauncherApp : Application() {
6770
single {
6871
OkHttpClient.Builder()
6972
.addInterceptor(
70-
HttpLoggingInterceptor(
71-
object : HttpLoggingInterceptor.Logger {
72-
override fun log(message: String) {
73-
Timber.tag(tag).i(message)
74-
}
75-
}
76-
).apply {
73+
HttpLoggingInterceptor {
74+
Timber.tag(tag).i(it)
75+
}.apply {
7776
level = HttpLoggingInterceptor.Level.BODY
7877
}
7978
)
79+
.addNetworkInterceptor(StethoInterceptor())
8080
.build()
8181
}
8282

@@ -157,9 +157,8 @@ class LauncherApp : Application() {
157157
override fun onCreate() {
158158
super.onCreate()
159159

160-
AndroidThreeTen.init(this@LauncherApp)
161-
162160
setupTimber()
161+
setupStetho()
163162
setupCalligraphy()
164163
setupKoin()
165164
}
@@ -172,6 +171,10 @@ class LauncherApp : Application() {
172171
}
173172
}
174173

174+
private fun setupStetho() {
175+
Stetho.initializeWithDefaults(this@LauncherApp)
176+
}
177+
175178
private fun setupCalligraphy() {
176179
ViewPump.init(
177180
ViewPump.builder()
@@ -187,7 +190,7 @@ class LauncherApp : Application() {
187190

188191
private fun setupKoin() {
189192
startKoin {
190-
androidLogger()
193+
androidLogger(Level.ERROR)
191194
androidContext(this@LauncherApp)
192195
modules(
193196
appModule,
@@ -200,16 +203,13 @@ class LauncherApp : Application() {
200203
}
201204
}
202205

203-
@GlideModule
204-
class LauncherAppGlideModule : AppGlideModule()
205-
206206
internal class CrashlyticsTree : Timber.Tree() {
207207

208208
override fun isLoggable(tag: String?, priority: Int): Boolean =
209209
priority == Log.WARN || priority == Log.ERROR || priority == Log.ASSERT
210210

211211
override fun log(priority: Int, tag: String?, message: String, throwable: Throwable?) {
212-
FirebaseCrashlytics.getInstance().apply {
212+
Firebase.crashlytics.apply {
213213
log(message)
214214

215215
throwable?.let {

app/src/main/java/com/sherepenko/android/launchiteasy/api/json/deserialization/CurrentWeatherResponseDeserializer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.sherepenko.android.launchiteasy.data.TemperatureItem
1313
import com.sherepenko.android.launchiteasy.data.WeatherItem
1414
import com.sherepenko.android.launchiteasy.data.WindItem
1515
import java.io.IOException
16-
import org.threeten.bp.Instant
16+
import java.time.Instant
1717

1818
class CurrentWeatherResponseDeserializer : JsonDeserializer<CurrentWeatherResponse>() {
1919

app/src/main/java/com/sherepenko/android/launchiteasy/api/json/deserialization/WeatherForecastResponseDeserializer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.sherepenko.android.launchiteasy.data.LocationItem
1313
import com.sherepenko.android.launchiteasy.data.TemperatureItem
1414
import com.sherepenko.android.launchiteasy.data.WindItem
1515
import java.io.IOException
16-
import org.threeten.bp.Instant
16+
import java.time.Instant
1717

1818
class WeatherForecastResponseDeserializer : JsonDeserializer<WeatherForecastResponse>() {
1919

app/src/main/java/com/sherepenko/android/launchiteasy/data/AppItem.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.sherepenko.android.launchiteasy.data
33
import androidx.room.ColumnInfo
44
import androidx.room.Entity
55
import androidx.room.PrimaryKey
6-
import org.threeten.bp.Instant
6+
import java.time.Instant
77

88
@Entity(tableName = "applications")
99
data class AppItem(

app/src/main/java/com/sherepenko/android/launchiteasy/data/ForecastItem.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import androidx.room.Embedded
55
import androidx.room.Entity
66
import androidx.room.Index
77
import androidx.room.PrimaryKey
8-
import org.threeten.bp.Instant
8+
import java.time.Instant
99

1010
@Entity(
1111
tableName = "weather_forecasts",

app/src/main/java/com/sherepenko/android/launchiteasy/data/WeatherItem.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import androidx.room.Embedded
55
import androidx.room.Entity
66
import androidx.room.Index
77
import androidx.room.PrimaryKey
8-
import org.threeten.bp.Instant
8+
import java.time.Instant
99

1010
@Entity(
1111
tableName = "current_weather",

0 commit comments

Comments
 (0)