Skip to content

Instantly share code, notes, and snippets.

Avatar
Coffee coffee

Jaewoong Eum skydoves

Coffee coffee
View GitHub Profile
View SearchActivityViewModel.kt
class SearchActivityViewModel @Inject
constructor(private val githubUserRepository: GithubUserRepository, private val historyRepository: HistoryRepository): ViewModel() {
val login: MutableLiveData<String> = MutableLiveData()
var githubUserLiveData: LiveData<Resource<GithubUser>> = MutableLiveData()
val historiesLiveData: MutableLiveData<List<History>> = MutableLiveData()
val toast: MutableLiveData<String> = MutableLiveData()
init {
@skydoves
skydoves / InjectionExampleMainActivity.kt
Last active Mar 15, 2018
InjectionExampleMainActivity
View InjectionExampleMainActivity.kt
@Inject lateinit var viewModelFactory: AppViewModelFactory
private val viewModel by lazy { ViewModelProviders.of(this, viewModelFactory).get(MainActivityViewModel::class.java) }
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
View History.kt
@Entity(tableName = "SearchHistory")
data class History(
@PrimaryKey val search: String,
val history: Long
)
View HistoryDao.kt
@Dao
interface HistoryDao {
@Query("SELECT* FROM SearchHistory ORDER BY history DESC LIMIT 20")
fun selectRecentHistoryList(): LiveData<List<History>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertHistory(history: History)
@Query("DELETE FROM SearchHistory WHERE search = :search")
fun deleteHistory(search: String)
View AppDatabase.kt
@Database(entities = [(History::class), (Follower::class), (GithubUser::class)], version = 2)
abstract class AppDatabase: RoomDatabase() {
abstract fun historyDao(): HistoryDao
abstract fun githubUserDao(): GithubUserDao
abstract fun followersDao(): FollowersDao
}
View loadFromDb.kt
override
fun loadFromDb(): LiveData<List<Follower>> {
return followersDao.getFollowers(user, page, isFollowers)
}
@skydoves
skydoves / GithubUserRepository.kt
Last active Mar 16, 2018
GithubUserRepository
View GithubUserRepository.kt
@Singleton
class GithubUserRepository @Inject
constructor(val githubUserDao: GithubUserDao, val service: GithubService) {
@InjectPreference lateinit var profile: Preference_UserProfile
init {
Timber.d("Injection GithubUserRepository")
PreferenceComponent_PrefAppComponent.getInstance().inject(this)
}
View Profile.kt
@PreferenceEntity(name = "UserProfile")
open class Profile {
@KeyName(name = "name") @JvmField val userName = "skydoves"
@KeyName(name = "menuPosition") @JvmField val selectedPosition = 0
}
View PrefAppComponent.kt
@PreferenceComponent(entities = [(Profile::class)])
interface PrefAppComponent {
fun inject(target: SearchActivityViewModel)
fun inject(target: DetailActivityViewModel)
fun inject(target: GithubUserRepository)
}
@skydoves
skydoves / PreferenceComponent_PrefAppComponent.kt
Created Mar 16, 2018
PreferenceComponent_PrefAppComponent
View PreferenceComponent_PrefAppComponent.kt
@InjectPreference lateinit var profile: Preference_UserProfile
init {
Timber.d("Injection GithubUserRepository")
PreferenceComponent_PrefAppComponent.getInstance().inject(this)
}