Kermit 1.0

This commit is contained in:
John O'Reilly 2021-12-09 21:30:59 +00:00
parent 5b5196dbf6
commit c5f5c7ca8b
14 changed files with 9 additions and 42 deletions

View file

@ -1,20 +1,16 @@
package com.surrus.peopleinspace package com.surrus.peopleinspace
import android.app.Application import android.app.Application
import co.touchlab.kermit.Kermit import co.touchlab.kermit.Logger
import com.surrus.common.di.initKoin import com.surrus.common.di.initKoin
import com.surrus.peopleinspace.di.appModule import com.surrus.peopleinspace.di.appModule
import org.koin.android.ext.android.inject
import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger import org.koin.android.ext.koin.androidLogger
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
import org.koin.core.logger.Level import org.koin.core.logger.Level
import org.osmdroid.config.Configuration import org.osmdroid.config.Configuration
import java.io.File import java.io.File
class PeopleInSpaceApplication : Application() { class PeopleInSpaceApplication : Application() {
private val logger: Kermit by inject()
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
@ -32,6 +28,6 @@ class PeopleInSpaceApplication : Application() {
modules(appModule) modules(appModule)
} }
logger.d { "PeopleInSpaceApplication" } Logger.d { "PeopleInSpaceApplication" }
} }
} }

View file

@ -2,9 +2,7 @@ package com.surrus.peopleinspace.ui
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import co.touchlab.kermit.Kermit
import com.surrus.common.remote.Assignment import com.surrus.common.remote.Assignment
import com.surrus.common.repository.PeopleInSpaceRepository
import com.surrus.common.repository.PeopleInSpaceRepositoryInterface import com.surrus.common.repository.PeopleInSpaceRepositoryInterface
import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.stateIn

View file

@ -38,7 +38,7 @@ object Versions {
const val slf4j = "1.7.30" const val slf4j = "1.7.30"
const val logback = "1.2.3" const val logback = "1.2.3"
const val kermit = "0.1.9" const val kermit = "1.0.0"
const val gradleVersionsPlugin = "0.39.0" const val gradleVersionsPlugin = "0.39.0"
} }

View file

@ -1,6 +1,5 @@
package com.surrus.common.repository package com.surrus.common.repository
import co.touchlab.kermit.LogcatLogger
import co.touchlab.kermit.Logger import co.touchlab.kermit.Logger
import com.squareup.sqldelight.android.AndroidSqliteDriver import com.squareup.sqldelight.android.AndroidSqliteDriver
import com.surrus.common.di.PeopleInSpaceDatabaseWrapper import com.surrus.common.di.PeopleInSpaceDatabaseWrapper
@ -14,5 +13,4 @@ actual fun platformModule() = module {
PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver)) PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver))
} }
single<Logger> { LogcatLogger() }
} }

View file

@ -1,6 +1,5 @@
package com.surrus.common.di package com.surrus.common.di
import co.touchlab.kermit.Kermit
import com.surrus.common.remote.PeopleInSpaceApi import com.surrus.common.remote.PeopleInSpaceApi
import com.surrus.common.repository.PeopleInSpaceRepository import com.surrus.common.repository.PeopleInSpaceRepository
import com.surrus.common.repository.PeopleInSpaceRepositoryInterface import com.surrus.common.repository.PeopleInSpaceRepositoryInterface
@ -35,7 +34,6 @@ fun commonModule(enableNetworkLogs: Boolean) = module {
single<PeopleInSpaceRepositoryInterface> { PeopleInSpaceRepository() } single<PeopleInSpaceRepositoryInterface> { PeopleInSpaceRepository() }
single { PeopleInSpaceApi(get()) } single { PeopleInSpaceApi(get()) }
single { Kermit(logger = get()) }
} }
fun createJson() = Json { isLenient = true; ignoreUnknownKeys = true } fun createJson() = Json { isLenient = true; ignoreUnknownKeys = true }

View file

@ -1,6 +1,6 @@
package com.surrus.common.repository package com.surrus.common.repository
import co.touchlab.kermit.Kermit import co.touchlab.kermit.Logger
import com.rickclephas.kmp.nativecoroutines.NativeCoroutineScope import com.rickclephas.kmp.nativecoroutines.NativeCoroutineScope
import com.squareup.sqldelight.runtime.coroutines.asFlow import com.squareup.sqldelight.runtime.coroutines.asFlow
import com.squareup.sqldelight.runtime.coroutines.mapToList import com.squareup.sqldelight.runtime.coroutines.mapToList
@ -22,13 +22,14 @@ interface PeopleInSpaceRepositoryInterface {
class PeopleInSpaceRepository : KoinComponent, PeopleInSpaceRepositoryInterface { class PeopleInSpaceRepository : KoinComponent, PeopleInSpaceRepositoryInterface {
private val peopleInSpaceApi: PeopleInSpaceApi by inject() private val peopleInSpaceApi: PeopleInSpaceApi by inject()
private val logger: Kermit by inject()
@NativeCoroutineScope @NativeCoroutineScope
private val coroutineScope: CoroutineScope = MainScope() private val coroutineScope: CoroutineScope = MainScope()
private val peopleInSpaceDatabase: PeopleInSpaceDatabaseWrapper by inject() private val peopleInSpaceDatabase: PeopleInSpaceDatabaseWrapper by inject()
private val peopleInSpaceQueries = peopleInSpaceDatabase.instance?.peopleInSpaceQueries private val peopleInSpaceQueries = peopleInSpaceDatabase.instance?.peopleInSpaceQueries
val logger = Logger.withTag("PeopleInSpaceRepository")
init { init {
coroutineScope.launch { coroutineScope.launch {
fetchAndStorePeople() fetchAndStorePeople()
@ -77,12 +78,11 @@ class PeopleInSpaceRepository : KoinComponent, PeopleInSpaceRepositoryInterface
// The returned will be frozen in Kotlin Native. We can't freeze the Koin internals // The returned will be frozen in Kotlin Native. We can't freeze the Koin internals
// so we'll use local variables to prevent the Koin internals from freezing. // so we'll use local variables to prevent the Koin internals from freezing.
val api = peopleInSpaceApi val api = peopleInSpaceApi
val logger = logger
return flow { return flow {
while (true) { while (true) {
val position = api.fetchISSPosition().iss_position val position = api.fetchISSPosition().iss_position
emit(position) emit(position)
logger.d("PeopleInSpaceRepository") { position.toString() } logger.d { position.toString() }
delay(POLL_INTERVAL) delay(POLL_INTERVAL)
} }
} }

View file

@ -1,7 +1,5 @@
package com.surrus.common.repository package com.surrus.common.repository
import co.touchlab.kermit.Logger
import co.touchlab.kermit.NSLogLogger
import com.squareup.sqldelight.drivers.native.NativeSqliteDriver import com.squareup.sqldelight.drivers.native.NativeSqliteDriver
import com.surrus.common.di.PeopleInSpaceDatabaseWrapper import com.surrus.common.di.PeopleInSpaceDatabaseWrapper
import com.surrus.peopleinspace.db.PeopleInSpaceDatabase import com.surrus.peopleinspace.db.PeopleInSpaceDatabase
@ -12,5 +10,4 @@ actual fun platformModule() = module {
val driver = NativeSqliteDriver(PeopleInSpaceDatabase.Schema, "peopleinspace.db") val driver = NativeSqliteDriver(PeopleInSpaceDatabase.Schema, "peopleinspace.db")
PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver)) PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver))
} }
single<Logger> { NSLogLogger() }
} }

View file

@ -1,7 +1,5 @@
package com.surrus.common.repository package com.surrus.common.repository
import co.touchlab.kermit.CommonLogger
import co.touchlab.kermit.Logger
import com.surrus.common.di.PeopleInSpaceDatabaseWrapper import com.surrus.common.di.PeopleInSpaceDatabaseWrapper
import org.koin.dsl.module import org.koin.dsl.module
@ -9,6 +7,4 @@ actual fun platformModule() = module {
single { single {
PeopleInSpaceDatabaseWrapper(null) PeopleInSpaceDatabaseWrapper(null)
} }
single<Logger> { CommonLogger() }
} }

View file

@ -1,7 +1,5 @@
package com.surrus.common.repository package com.surrus.common.repository
import co.touchlab.kermit.CommonLogger
import co.touchlab.kermit.Logger
import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver import com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver
import com.surrus.common.di.PeopleInSpaceDatabaseWrapper import com.surrus.common.di.PeopleInSpaceDatabaseWrapper
import com.surrus.peopleinspace.db.PeopleInSpaceDatabase import com.surrus.peopleinspace.db.PeopleInSpaceDatabase
@ -13,6 +11,4 @@ actual fun platformModule() = module {
.also { PeopleInSpaceDatabase.Schema.create(it) } .also { PeopleInSpaceDatabase.Schema.create(it) }
PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver)) PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver))
} }
single<Logger> { CommonLogger() }
} }

View file

@ -1,7 +1,5 @@
package com.surrus.common.repository package com.surrus.common.repository
import co.touchlab.kermit.Logger
import co.touchlab.kermit.NSLogLogger
import com.squareup.sqldelight.drivers.native.NativeSqliteDriver import com.squareup.sqldelight.drivers.native.NativeSqliteDriver
import com.surrus.common.di.PeopleInSpaceDatabaseWrapper import com.surrus.common.di.PeopleInSpaceDatabaseWrapper
import com.surrus.peopleinspace.db.PeopleInSpaceDatabase import com.surrus.peopleinspace.db.PeopleInSpaceDatabase
@ -12,5 +10,4 @@ actual fun platformModule() = module {
val driver = NativeSqliteDriver(PeopleInSpaceDatabase.Schema, "peopleinspace.db") val driver = NativeSqliteDriver(PeopleInSpaceDatabase.Schema, "peopleinspace.db")
PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver)) PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver))
} }
single<Logger> { NSLogLogger() }
} }

View file

@ -1,7 +1,5 @@
package com.surrus.common.repository package com.surrus.common.repository
import co.touchlab.kermit.Logger
import co.touchlab.kermit.NSLogLogger
import com.squareup.sqldelight.drivers.native.NativeSqliteDriver import com.squareup.sqldelight.drivers.native.NativeSqliteDriver
import com.surrus.common.di.PeopleInSpaceDatabaseWrapper import com.surrus.common.di.PeopleInSpaceDatabaseWrapper
import com.surrus.peopleinspace.db.PeopleInSpaceDatabase import com.surrus.peopleinspace.db.PeopleInSpaceDatabase
@ -12,5 +10,4 @@ actual fun platformModule() = module {
val driver = NativeSqliteDriver(PeopleInSpaceDatabase.Schema, "peopleinspace.db") val driver = NativeSqliteDriver(PeopleInSpaceDatabase.Schema, "peopleinspace.db")
PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver)) PeopleInSpaceDatabaseWrapper(PeopleInSpaceDatabase(driver))
} }
single<Logger> { NSLogLogger() }
} }

View file

@ -2,7 +2,7 @@ package com.surrus.peopleinspace
import android.app.Application import android.app.Application
import android.util.Log import android.util.Log
import co.touchlab.kermit.Kermit import co.touchlab.kermit.Logger
import coil.ImageLoader import coil.ImageLoader
import coil.util.CoilUtils import coil.util.CoilUtils
import coil.util.DebugLogger import coil.util.DebugLogger
@ -19,7 +19,6 @@ import org.koin.core.logger.Level
import org.koin.dsl.module import org.koin.dsl.module
class PeopleInSpaceApplication : Application(), KoinComponent { class PeopleInSpaceApplication : Application(), KoinComponent {
private val logger: Kermit by inject()
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
@ -33,7 +32,7 @@ class PeopleInSpaceApplication : Application(), KoinComponent {
modules(appModule) modules(appModule)
} }
logger.d { "PeopleInSpaceApplication" } Logger.d { "PeopleInSpaceApplication" }
} }
} }

View file

@ -2,9 +2,7 @@ package com.surrus.peopleinspace
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import co.touchlab.kermit.Kermit
import com.surrus.common.remote.Assignment import com.surrus.common.remote.Assignment
import com.surrus.common.repository.PeopleInSpaceRepository
import com.surrus.common.repository.PeopleInSpaceRepositoryInterface import com.surrus.common.repository.PeopleInSpaceRepositoryInterface
import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.stateIn

View file

@ -1,4 +1,3 @@
import co.touchlab.kermit.Kermit
import com.surrus.common.di.initKoin import com.surrus.common.di.initKoin
import com.surrus.common.repository.PeopleInSpaceRepositoryInterface import com.surrus.common.repository.PeopleInSpaceRepositoryInterface
import kotlinx.coroutines.InternalCoroutinesApi import kotlinx.coroutines.InternalCoroutinesApi
@ -10,12 +9,10 @@ import react.dom.render
object AppDependencies : KoinComponent { object AppDependencies : KoinComponent {
val repository: PeopleInSpaceRepositoryInterface val repository: PeopleInSpaceRepositoryInterface
val logger: Kermit
init { init {
initKoin() initKoin()
repository = get() repository = get()
logger = get()
} }
} }