in apps/chat-android/app/src/main/java/com/amazonaws/services/chime/sdkdemo/data/source/DefaultUserRepository.kt [50:87]
override suspend fun updateAppInstanceUserEndpoint(
name: String?,
allowMessage: AllowMessages,
endpointId: String,
appInstanceUserArn: String
) = chimeSDKService.updateAppInstanceUserEndpoint(name, allowMessage, endpointId, appInstanceUserArn)
override suspend fun deregisterAppInstanceUserEndpoint(endpointId: String, appInstanceUserArn: String) =
chimeSDKService.deregisterAppInstanceUserEndpoint(endpointId, appInstanceUserArn)
override suspend fun getCurrentUserEndpoint(): Result<UserEndpoint> {
val result = CompletableDeferred<Result<UserEndpoint>>()
var token = ""
Firebase.messaging.token.addOnCompleteListener(OnCompleteListener { task ->
if (!task.isSuccessful) {
return@OnCompleteListener
}
token = task.result.toString()
})
getCurrentUser().onSuccess { user ->
listAppInstanceUserEndpoints(user.chimeAppInstanceUserArn)
.onSuccess { listAppInstanceUserEndpointsResult ->
for (endpoint in listAppInstanceUserEndpointsResult.appInstanceUserEndpoints) {
describeAppInstanceUserEndpoint(endpoint.endpointId, endpoint.appInstanceUserArn)
.onSuccess {
if (it.appInstanceUserEndpoint.endpointAttributes.deviceToken == token) {
val ep = it.appInstanceUserEndpoint
result.complete(Success(UserEndpoint(ep.endpointId, ep.appInstanceUserArn, ep.name, ep.allowMessages)))
}
}
}
}
}
result.complete(Failure(RuntimeException("Failed to fetch current endpoint")))
return result.await()
}