'Firestore database read count

In my app i use the snapshot listener connected to a collection in the firestore database.

private fun getMessages() {
    Firebase.firestore.collection(Constants.MESSAGES)
        .orderBy(Constants.SENT_ON)
        .addSnapshotListener { value, e ->
            if (e != null) {
                Log.w(Constants.TAG, "Listen failed.", e)
                return@addSnapshotListener
            }

            val list = emptyList<Map<String, Any>>().toMutableList()

            if (value != null) {
                for (doc in value) {
                    val data = doc.data

                    list.add(data)
                }

            }

            updateMessages(list)
        }
}

In the collection there are 1000 items. Is my code snippet the most efficient one ? What i want is that a new app user the first time he connects to the database uses 1000 reads. After that due to the snappshot listener only the new documents in the collection.



Solution 1:[1]

The code looks fine at first glance to me.

The only thing I'd do is add a limit to the query for what you think is a reasonable maximum that any user may want to see.

What you can consider is implementing pagination or endless scrolling with query cursors, and only load the even smaller subset that the user can actually see on their device screen.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Frank van Puffelen