title: Firebase Firestore: Is there a callback when there is no internet connection?
body: <p>I am developing an Android app using Cloud Firestore to store data. This is how I set data to the database:</p>
  
  <pre><code>private fun setData() {
      val task = UploadDataTask()
      task.setOnUploadFinishedListener(object: UploadDataTask.OnUploadFinishedListener{
          override fun uploadFinished() {
              // Do something
          }
  
          override fun uploadFailed() {
              // Do something
          }
      })
  }
  
  private class UploadDataTask: AsyncTask&lt;Void, Void, Void&gt;() {
  
      private var onUploadFinishedListener: OnUploadFinishedListener? = null
      fun setOnUploadFinishedListener(listener: OnUploadFinishedListener) {
          onUploadFinishedListener = listener
      }
  
      override fun doInBackground(vararg params: Void?): Void? {
          val map = hashMapOf(
              UID to firebaseUser.uid
          )
          firebaseFirestore.collection(USERS)
              .document(firebaseUser.uid)
              .set(map)
              .addOnSuccessListener {
                  if(onUploadFinishedListener != null)
                      onUploadFinishedListener!!.uploadFinished()
              }
              .addOnFailureListener {
                  if(onUploadFinishedListener != null)
                      onUploadFinishedListener!!.uploadFailed()
              }
          return null
      }
  
      interface OnUploadFinishedListener {
          fun uploadFinished()
          fun uploadFailed()
      }
  }
  </code></pre>
  
  <p>This works great, but there is one exception. When I want to load data to the Firestore, but there is no connection to the internet, neither the <code>onSuccessListener</code> nor the onFailureListener gets called. I know that this is because they only get called when the data is written to the Firestore. But I don't know of any other way to check if there is a connection or not. For example, when I want to show a progress dialog until the data is successfully written to the Firestore, it would not dismiss if there was no connection. So how can I check that?</p>