Как мне обработать функцию, которая вызывает репозиторий, а также используется в двух отдельных моделях представления?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как мне обработать функцию, которая вызывает репозиторий, а также используется в двух отдельных моделях представления?

Сообщение Anonymous »

У меня есть две модели представления, содержащие одну и ту же функцию. Функция вызывает интерфейс/репозиторий для получения данных из базы данных, а затем функция манипулирует данными.
Насколько я понимаю, репозиторий должен обрабатывать только вызов базы данных и Модели представления никогда не должны взаимодействовать друг с другом. Я также не хочу, чтобы эта функция находилась в обеих моделях представления, поскольку это привело бы к ненужному дополнительному вызову базы данных, и мне кажется, что это просто избыточный код.
Поэтому, что лучше практикуется писать эту функцию только один раз и быть доступной для обеих моделей представления?
Репозиторий:
class PartsScreenImpl : PartsScreenRepository {
private val log = logging("KMLogging Tag")
private val db = Firebase.firestore
private val storage = Firebase.storage

override suspend fun getPartsList(): QuerySnapshot {
val result = db.collection("parts").get()
val doc = result.documents
return result
}
}

Рассматриваемая функция
private fun getPartsList(): List? {
val result = runBlocking {
val querySnapshot = async {
return@async repository.getPartsList()
}.await()
return@runBlocking querySnapshot
}

val documents = result.documents

var partsList: MutableList? = null

for (document in documents) {
val partNumber = document.get("part_number")
val partDesc = document.get("part_desc")

val partImage = getImageUrl(partNumber)

val part = Part(partNumber, partDesc, partImage)

if (partsList == null) {
partsList = mutableListOf(part)
} else {
partsList.add(part)
}
}
return partsList
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... -used-in-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»