В моем приложении есть своего рода раздел комментариев, где я подключил дочерний слушатель событий, чтобы получать обновления комментариев в режиме реального времени.
private fun addListener() {
reference.addChildEventListener(this)
}
override fun onChildAdded(dataSnapshot: DataSnapshot, previousChildName: String?) {
val newPost = dataSnapshot.getValue(Comment::class.java)
adapter.addToTop(newPost)
key.add(dataSnapshot.key!!)
errorDiscussion.visibility = View.GONE
}
При добавлении нового комментария tt прекрасно работает, когда я не загружаю изображение в FirebaseStorage и не публикую комментарий с нулевым значением в поле attachImage
.
Но когда я пытаюсь загрузить изображение в FirebaseStorage и добавить, чем пытаться добавить новый комментарий с полем attachImage
в этом конкретном databaseReference
, данные фактически отправляются в базу данных, но метод onChildAdded
не вызывается , И слушатель не привязан.
Что я вижу в журналах: SocketTimeoutException
08-30 09:18:43.175 12208-25905/np.com.aawaz.csitentrance D/NativeCrypto: jniThrowException: java/net/SocketTimeoutException: Read timed out
08-30 09:18:43.693 12208-25905/np.com.aawaz.csitentrance D/UploadTask: Increasing chunk size to 524288
08-30 09:18:43.719 12208-25905/np.com.aawaz.csitentrance D/NativeCrypto: jniThrowException: java/net/SocketTimeoutException: Read timed out
Я что-то здесь не так делаю? Разве это не хороший способ выполнить эту задачу.
Логика загрузки изображений
val ref = FirebaseStorage.getInstance().getReference("discussion").child(fileName)
val file = Uri.fromFile(File(image?.path))
val uploadTask = ref.putFile(file)
val progressDialog = MaterialDialog.Builder(this)
.content("Uploading....")
.progress(false, 100)
.autoDismiss(false)
.build()
progressDialog.show()
uploadTask.addOnProgressListener {
val data = it.bytesTransferred / it.totalByteCount * 100;
val progress = data.toInt()
progressDialog.setProgress(progress)
}
uploadTask.addOnSuccessListener {
addCommentWithImage(addCommentTextDiscussion.text.toString(), fileName)
progressDialog.dismiss()
image = null
itemSelected.visibility = View.GONE
}
uploadTask.addOnFailureListener {
progressDialog.dismiss()
it.printStackTrace()
Toast.makeText(this, "Unable to upload image, please try again later.", Toast.LENGTH_SHORT).show()
}
База данных Push Logic
val comment = Comment(currentUser!!.uid, currentUser.displayName, System.currentTimeMillis(), message, currentUser.photoUrl!!.toString(), imagePath)
val postValues = comment.toMap()
reference.push().setValue(postValues)