Skip to content

Commit 9bf5575

Browse files
committed
Merge branch 'v_1.7'
2 parents bb91e11 + cf0af5d commit 9bf5575

File tree

5 files changed

+39
-49
lines changed

5 files changed

+39
-49
lines changed

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ dependencies {
6969
implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
7070

7171
//协程 + room
72-
implementation "androidx.room:room-runtime:2.2.3"
73-
kapt "androidx.room:room-compiler:2.2.3"
74-
implementation "androidx.room:room-ktx:2.2.3"
72+
implementation "androidx.room:room-runtime:2.2.4"
73+
kapt "androidx.room:room-compiler:2.2.4"
74+
implementation "androidx.room:room-ktx:2.2.4"
7575

7676
//koin(依赖注入)
7777
implementation "org.koin:koin-androidx-scope:2.0.1"
Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package com.fmt.github.base.viewmodel
22

3-
import androidx.lifecycle.MutableLiveData
4-
import androidx.lifecycle.ViewModel
5-
import androidx.lifecycle.viewModelScope
3+
import androidx.lifecycle.*
64
import kotlinx.coroutines.CoroutineScope
75
import kotlinx.coroutines.launch
86

@@ -11,7 +9,6 @@ open class BaseViewModel : ViewModel() {
119
val mStateLiveData = MutableLiveData<StateActionEvent>()//通用事件模型驱动(如:显示对话框、取消对话框、错误提示)
1210

1311
fun launch(block: suspend CoroutineScope.() -> Unit) {//使用协程封装统一的网络请求处理
14-
1512
viewModelScope.launch {
1613
//ViewModel自带的viewModelScope.launch,会在页面销毁的时候自动取消请求,有效封装内存泄露
1714
try {
@@ -22,7 +19,17 @@ open class BaseViewModel : ViewModel() {
2219
mStateLiveData.value = ErrorState(e.message)
2320
}
2421
}
25-
2622
}
2723

24+
fun <T> emit(block: suspend LiveDataScope<T>.() -> T): LiveData<T> {
25+
return liveData {
26+
try {
27+
mStateLiveData.value = LoadState
28+
emit(block())
29+
mStateLiveData.value = SuccessState
30+
} catch (e: Exception) {
31+
mStateLiveData.value = ErrorState(e.message)
32+
}
33+
}
34+
}
2835
}

app/src/main/java/com/fmt/github/home/viewmodel/HomeViewModel.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,9 @@ import com.fmt.github.user.repository.UserRepository
88

99
class HomeViewModel(private val mUserRepository: UserRepository) : BaseViewModel() {
1010

11-
fun deleteAuthorization(id: Int): LiveData<Boolean> = liveData {
11+
fun deleteAuthorization(id: Int): LiveData<Boolean> = emit {
1212
val response = mUserRepository.deleteAuthorization(id)
13-
(response.code() == 204).yes {
14-
emit(true)
15-
}
13+
response.code() == 204
1614
}
1715

1816
fun deleteUser() {

app/src/main/java/com/fmt/github/repos/viewmodel/ReposViewModel.kt

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,31 +14,19 @@ class ReposViewModel(private val mReposRepository: ReposRepository) : BaseViewMo
1414
sort: String,
1515
order: String,
1616
page: Int
17-
): LiveData<List<ReposItemModel>> = liveData {
18-
emit(mReposRepository.searchRepos(query, sort, order, page).items)//挂起函数
17+
): LiveData<List<ReposItemModel>> = emit {
18+
mReposRepository.searchRepos(query, sort, order, page).items
1919
}
2020

21-
fun checkRepoStarred(owner: String, repo: String): LiveData<Boolean> = liveData {
22-
val response = mReposRepository.checkRepoStarred(owner, repo)
23-
if (response.code() == 204) {
24-
emit(true)
25-
} else if (response.code() == 404) {
26-
emit(false)
27-
}
21+
fun checkRepoStarred(owner: String, repo: String): LiveData<Boolean> = emit {
22+
mReposRepository.starRepo(owner, repo).code() == 204
2823
}
2924

30-
fun starRepo(owner: String, repo: String): LiveData<Boolean> = liveData {
31-
val response = mReposRepository.starRepo(owner, repo)
32-
(response.code() == 204).yes {
33-
emit(true)
34-
}
25+
fun starRepo(owner: String, repo: String): LiveData<Boolean> = emit {
26+
mReposRepository.starRepo(owner, repo).code() == 204
3527
}
3628

37-
fun unStarRepo(owner: String, repo: String): LiveData<Boolean> = liveData {
38-
val response = mReposRepository.unStarRepo(owner, repo)
39-
(response.code() == 204).yes {
40-
emit(true)
41-
}
29+
fun unStarRepo(owner: String, repo: String): LiveData<Boolean> = emit {
30+
mReposRepository.unStarRepo(owner, repo).code() == 204
4231
}
43-
4432
}

app/src/main/java/com/fmt/github/user/viewmodel/UserViewModel.kt

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.fmt.github.user.viewmodel
22

33
import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MutableLiveData
5-
import androidx.lifecycle.liveData
65
import com.fmt.github.base.viewmodel.BaseViewModel
76
import com.fmt.github.config.Configs
87
import com.fmt.github.repos.model.ReposItemModel
@@ -20,19 +19,17 @@ class UserViewModel(private val mUserRepository: UserRepository) : BaseViewModel
2019
Configs.SCOPE,
2120
Configs.NOTE, Configs.NOTE_URL
2221
)
23-
return liveData {
24-
emit(
25-
mUserRepository.createOrGetAuthorization(
26-
authorizationReqModel,
27-
Configs.CLIENT_ID,
28-
Configs.FINGERPRINT
29-
)
22+
return emit {
23+
mUserRepository.createOrGetAuthorization(
24+
authorizationReqModel,
25+
Configs.CLIENT_ID,
26+
Configs.FINGERPRINT
3027
)
3128
}
3229
}
3330

34-
fun getUser(): LiveData<UserModel> = liveData {
35-
emit(mUserRepository.getUser())
31+
fun getUser(): LiveData<UserModel> = emit {
32+
mUserRepository.getUser()
3633
}
3734

3835
fun saveLocalUser(user: User) {
@@ -46,22 +43,22 @@ class UserViewModel(private val mUserRepository: UserRepository) : BaseViewModel
4643
sort: String,
4744
order: String,
4845
page: Int
49-
): LiveData<List<UserModel>> = liveData {
50-
emit(mUserRepository.searchUsers(query, sort, order, page).items)
46+
): LiveData<List<UserModel>> = emit {
47+
mUserRepository.searchUsers(query, sort, order, page).items
5148
}
5249

53-
fun getUserInfo(user: String): MutableLiveData<UserInfoModel> {
50+
fun getUserInfo(user: String): LiveData<UserInfoModel> {
5451
launch {
5552
mUserInfoModel.value = mUserRepository.getUserInfo(user)
5653
}
5754
return mUserInfoModel
5855
}
5956

60-
fun getUserPublicRepos(user: String, page: Int): LiveData<List<ReposItemModel>> = liveData {
61-
emit(mUserRepository.getUserPublicRepos(user, page))
57+
fun getUserPublicRepos(user: String, page: Int):LiveData<List<ReposItemModel>> = emit {
58+
mUserRepository.getUserPublicRepos(user, page)
6259
}
6360

64-
fun getStarredRepos(user: String, page: Int): LiveData<List<ReposItemModel>> = liveData {
65-
emit(mUserRepository.getStarredRepos(user, page))
61+
fun getStarredRepos(user: String, page: Int): LiveData<List<ReposItemModel>> = emit {
62+
mUserRepository.getStarredRepos(user, page)
6663
}
6764
}

0 commit comments

Comments
 (0)