Итак, я пробую Store 4 (https://github.com/dropbox/Store) с помощью простого android приложения, которое извлекает данные с этого сайта-заполнителя: https://jsonplaceholder.typicode.com/
На первом экране будет список всех пользователей. Я хочу получить их при первом запуске приложения. Но когда вы снова открываете приложение или возвращаетесь к первому экрану, я хочу сначала извлечь его из базы данных комнаты, а затем извлечь их из целого числа rnet (факт, что база данных не изменяется, тривиален).
Я ожидаю, что моя ViewModel должна будет принять объект, созданный StoreBuilder, поэтому я создаю определение этого объекта в моем DI (Koin). StoreBuilder продолжает просить меня предоставить ключ. И я начинаю подозревать, что Store - неправильный выбор, если вы выбираете всех пользователей. Я пытаюсь использовать Store в моей программе, потому что я заинтересован в его использовании. У меня вопрос как? Или проще говоря:
Какой ключ я должен использовать в этом случае? Должен ли я использовать ключ вообще? Зачем мне нужен ключ?
Небольшая выдержка из моего кода (пока он не собирается):
object KoinModules {
val repositoryModule = module {
single { StoreBuilder
.fromNonFlow { provideUserService(get()).getAll() //** THIS IS NOT WORKING **
}.persister(
reader = provideUserDAO(get())::getAll,
writer = provideUserDAO(get())::insert
)
}
}
}
@Dao
interface UserDao {
@Query("SELECT * FROM UserDTO")
suspend fun getAll(): List<UserDto>
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(vararg userDTO: UserDto)
}
interface UserService {
@GET("/users")
suspend fun getAll(): List<User>
}
@Parcelize
data class User(val id: Int, val name: String, val username: String, val email: String) : Parcelable