fetch all labels at initialization
This commit is contained in:
12
android/Omnivore/app/src/main/graphql/Labels.graphql
Normal file
12
android/Omnivore/app/src/main/graphql/Labels.graphql
Normal file
@ -0,0 +1,12 @@
|
||||
query GetLabels {
|
||||
labels {
|
||||
... on LabelsSuccess {
|
||||
labels {
|
||||
...LabelFields
|
||||
}
|
||||
}
|
||||
... on LabelsError {
|
||||
errorCodes
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
package app.omnivore.omnivore.dataService
|
||||
|
||||
import app.omnivore.omnivore.networking.savedItemLabels
|
||||
|
||||
suspend fun DataService.syncLabels() {
|
||||
val fetchedLabels = networker.savedItemLabels()
|
||||
db.savedItemLabelDao().insertAll(fetchedLabels)
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
package app.omnivore.omnivore.networking
|
||||
|
||||
import app.omnivore.omnivore.graphql.generated.GetLabelsQuery
|
||||
import app.omnivore.omnivore.persistence.entities.SavedItemLabel
|
||||
|
||||
|
||||
suspend fun Networker.savedItemLabels(): List<SavedItemLabel> {
|
||||
try {
|
||||
val result = authenticatedApolloClient().query(GetLabelsQuery()).execute()
|
||||
val labels = result.data?.labels?.onLabelsSuccess?.labels ?: listOf()
|
||||
|
||||
return labels.map {
|
||||
SavedItemLabel(
|
||||
savedItemLabelId = it.labelFields.id,
|
||||
name = it.labelFields.name,
|
||||
color = it.labelFields.color,
|
||||
createdAt = it.labelFields.createdAt as String?,
|
||||
labelDescription = it.labelFields.description
|
||||
)
|
||||
}
|
||||
} catch (e: java.lang.Exception) {
|
||||
return listOf()
|
||||
}
|
||||
}
|
||||
@ -51,8 +51,11 @@ class LibraryViewModel @Inject constructor(
|
||||
if (hasLoadedInitialFilters) { return }
|
||||
hasLoadedInitialFilters = false
|
||||
|
||||
// TODO: Fetch all labels
|
||||
|
||||
viewModelScope.launch {
|
||||
withContext(Dispatchers.IO) {
|
||||
dataService.syncLabels()
|
||||
}
|
||||
}
|
||||
|
||||
runBlocking {
|
||||
datastoreRepo.getString(DatastoreKeys.lastUsedSavedItemFilter)?.let { str ->
|
||||
|
||||
Reference in New Issue
Block a user