Android 在Firestore回调中实现错误包装时遇到问题

Android 在Firestore回调中实现错误包装时遇到问题,android,kotlin,google-cloud-firestore,Android,Kotlin,Google Cloud Firestore,我的应用程序中有以下错误包装- 开放类响应处理程序{ 趣味handleSuccess(数据:T):资源{ 返回资源。成功(数据) } FunHandleException(e:异常):资源{ 返回时(e){ 是HttpException->Resource.error(getErrorMessage(e.code()),null) else->Resource.error(getErrorMessage(Int.MAX_值),null) } } private fun getErrorMessa

我的应用程序中有以下错误包装-

开放类响应处理程序{
趣味handleSuccess(数据:T):资源{
返回资源。成功(数据)
}
FunHandleException(e:异常):资源{
返回时(e){
是HttpException->Resource.error(getErrorMessage(e.code()),null)
else->Resource.error(getErrorMessage(Int.MAX_值),null)
}
}
private fun getErrorMessage(代码:Int):字符串{
返回时间(代码){
401->错误401
404->ERROR404
else->GENERAL\u错误
}
}
/**
*支持错误/加载/成功处理的包装器类。
*/
数据类资源(val状态:状态,val数据:T?,val消息:字符串?){
伴星{
有趣的成功(数据:T?):资源{
返回资源(Status.SUCCESS,data,null)
}
有趣的错误(消息:字符串,数据:T?):资源{
返回资源(状态、错误、数据、消息)
}
乐趣加载(数据:T?):资源{
返回资源(Status.LOADING,data,null)
}
}
枚举类状态{
成功,,
错误,
加载
}
}
}
当使用改型+协同程序时,用户可以非常直接地使用它-

suspend fun getSomethingFromPath():ResponseHandler.Resource{
回击{
responseHandler.handleSuccess(networkApi.getSomethingFromPath())
}捕获(e:例外){
响应句柄异常(e)
}
}
但是,当我想从Firestore集合中获取数据时,我在实现该方法时遇到了困难-

fun getAllApplicationActivities(groupsList:List):ResponseHandler.Resource{
Firebase.firestore.collection(活动\集合)
.其中(组ID,组列表)
.get()
.addOnSuccessListener{文档->
val activitiesList=documents.toObjects(ActivityCollectionModel::class.java)
//现在怎么办?
}
.addOnSuccessListener{异常->
}
}
如何使函数从
addOnSuccessListener
addOnSuccessListener
回调返回
ResponseHandler.Resource

suspend fun getAllApplicationActivities(groupsList: List<String>) = suspendCoroutine { cont ->
    Firebase.firestore.collection(ACTIVITIES_COLLECTION)
        .whereIn(GROUP_ID, groupsList)
        .get()
        .addOnSuccessListener { documents ->
            val activitiesList = documents.toObjects(ActivityCollectionModel::class.java)
            cont.resume(activitiesList)
        }
        .addOnFailureListener { exception ->
            cont.resumeWithException(exception)
        }
}
suspend fun getAllApplicationActivities(groupsList:List)=suspendCoroutine{cont->
Firebase.firestore.collection(活动\集合)
.其中(组ID,组列表)
.get()
.addOnSuccessListener{文档->
val activitiesList=documents.toObjects(ActivityCollectionModel::class.java)
续简历(活动列表)
}
.addOnFailureListener{异常->
cont.resumeWithException(异常)
}
}
使用或SuspendCancelableCorroutine

suspend fun getAllApplicationActivities(groupsList: List<String>) = suspendCoroutine { cont ->
    Firebase.firestore.collection(ACTIVITIES_COLLECTION)
        .whereIn(GROUP_ID, groupsList)
        .get()
        .addOnSuccessListener { documents ->
            val activitiesList = documents.toObjects(ActivityCollectionModel::class.java)
            cont.resume(activitiesList)
        }
        .addOnFailureListener { exception ->
            cont.resumeWithException(exception)
        }
}
suspend fun getAllApplicationActivities(groupsList:List)=suspendCoroutine{cont->
Firebase.firestore.collection(活动\集合)
.其中(组ID,组列表)
.get()
.addOnSuccessListener{文档->
val activitiesList=documents.toObjects(ActivityCollectionModel::class.java)
续简历(活动列表)
}
.addOnFailureListener{异常->
cont.resumeWithException(异常)
}
}