Skip to content

Instantly share code, notes, and snippets.

View Thomas-Boutin's full-sized avatar
🐽

Thomas Boutin Thomas-Boutin

🐽
View GitHub Profile
graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;
@Thomas-Boutin
Thomas-Boutin / CoinViewModel.kt
Created November 14, 2018 14:52
CoinSentinel : 7-Room
package fr.ippon.androidaacsample.coinsentinel.vm
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import fr.ippon.androidaacsample.coinsentinel.db.Coin
import fr.ippon.androidaacsample.coinsentinel.repository.CoinRepository
import fr.ippon.androidaacsample.coinsentinel.repository.Resource
import javax.inject.Inject
import javax.inject.Singleton
@Thomas-Boutin
Thomas-Boutin / CoinRepository.kt
Created November 14, 2018 14:51
CoinSentinel : 7-Room
package fr.ippon.androidaacsample.coinsentinel.repository
import androidx.lifecycle.LiveData
import androidx.lifecycle.MediatorLiveData
import awaitObjectResult
import com.github.kittinunf.fuel.Fuel
import fr.ippon.androidaacsample.coinsentinel.api.CoinResultDeserializer
import fr.ippon.androidaacsample.coinsentinel.api.CoinRouting
import fr.ippon.androidaacsample.coinsentinel.db.Coin
import fr.ippon.androidaacsample.coinsentinel.db.CoinDao
@Thomas-Boutin
Thomas-Boutin / AppModule.kt
Created November 14, 2018 14:45
CoinSentinel : 7-Room
package fr.ippon.androidaacsample.coinsentinel.di
import android.app.Application
import androidx.room.Room
import com.google.gson.Gson
import com.google.gson.GsonBuilder
import dagger.Module
import dagger.Provides
import fr.ippon.androidaacsample.coinsentinel.api.CoinResultDeserializer
import fr.ippon.androidaacsample.coinsentinel.api.CoinTypeAdapter
@Thomas-Boutin
Thomas-Boutin / AppDatabase.kt
Created November 14, 2018 14:45
CoinSentinel : 7-Room
package fr.ippon.androidaacsample.coinsentinel.db
import androidx.room.Database
import androidx.room.RoomDatabase
@Database(entities = [Coin::class], version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
abstract fun coinDao(): CoinDao
}
@Thomas-Boutin
Thomas-Boutin / CoinDao.kt
Created November 14, 2018 14:38
CoinSentinel : 7-Room
package fr.ippon.androidaacsample.coinsentinel.db
import androidx.lifecycle.LiveData
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
@Dao
interface CoinDao {
@Thomas-Boutin
Thomas-Boutin / Coin.kt
Created November 14, 2018 14:37
CoinSentinel : 7-Room
package fr.ippon.androidaacsample.coinsentinel.db
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "COIN")
data class Coin (
@PrimaryKey
val id: Long,
val name: String,
@Thomas-Boutin
Thomas-Boutin / build.gradle
Created November 14, 2018 14:36
CoinSentinel : 7-Room
// ...
// Room
implementation "androidx.room:room-runtime:$lifecycle_version"
kapt "androidx.room:room-compiler:$lifecycle_version"
// ...
@Thomas-Boutin
Thomas-Boutin / MainActivity.kt
Created November 14, 2018 10:23
CoinSentinel : 6-ViewModel_LiveData
// ...
this.coinViewModel.coins.observe(this, this.updateCoins)
// ...
@Thomas-Boutin
Thomas-Boutin / MainActivity.kt
Created November 14, 2018 10:22
CoinSentinel : 6-ViewModel_LiveData
// ...
@Inject
lateinit var coinViewModel: CoinViewModel
// ...