< Br/> Es ist einfach in einem Staatshalter wie einem ViewModel - Machen Sie einfach einen StateFlow oder was auch immer. Aber was ist, wenn wir einen Flow der Liste (das nach jeder API -Anforderung zwischengespeichert wird) in einem Repository aus der UI -Ebene aus der UI -Ebene vorgenommen werden möchten? Was ist die Testsable , stabil und rechts , um dies zu erreichen? < /p>
Code: Select all
class UsersRepository @Inject constructor(
private val usersApi: UsersApi,
private val handler: ResponseHandler
) {
private val _usersFlow = MutableStateFlow(Resource.Empty)
val usersFlow = _usersFlow.asStateFlow()
suspend fun fetchUserList() = withContext(Dispatchers.IO) {
_usersFlow.emit(Resource.Loading)
_usersFlow.emit(
handler {
usersApi.getUsers()
}
)
}
}
istclass ResponseHandler {
suspend operator fun invoke(block: suspend () -> T) = try {
Resource.Success(block())
} catch (e: Exception) {
Log.e(javaClass.name, e.toString())
val errorCode = when (e) {
is HttpException -> e.code()
is SocketTimeoutException -> ErrorCodes.SocketTimeOut.code
is UnknownHostException -> ErrorCodes.UnknownHost.code
else -> Int.MAX_VALUE
}
Resource.Error(getErrorMessage(errorCode))
}
}
< /code>
Aber während ich recherchierte Die Natur wird daher nicht empfohlen, im Repository zu verwenden. Für den kalten und reaktiven Strom können Sie in Repository Flow, Channelflow oder Callbackflow verwenden. Wenn er ist, wie genau helfen Kaltflüsse in dieser Situation und wie können wir sie richtig verwalten?>