From 7f3c484ed7f48bb51dca5b2ac9a6bf845772b797 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 1 Mar 2023 12:04:38 -0800 Subject: [PATCH] fetch all labels at initialization --- .../app/src/main/graphql/Labels.graphql | 12 ++++++++++ .../dataService/SavedItemLabelSync.kt | 8 +++++++ .../networking/SavedItemLabelQuery.kt | 24 +++++++++++++++++++ .../omnivore/ui/library/LibraryViewModel.kt | 7 ++++-- 4 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 android/Omnivore/app/src/main/graphql/Labels.graphql create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/SavedItemLabelSync.kt create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/SavedItemLabelQuery.kt diff --git a/android/Omnivore/app/src/main/graphql/Labels.graphql b/android/Omnivore/app/src/main/graphql/Labels.graphql new file mode 100644 index 000000000..d61a6c868 --- /dev/null +++ b/android/Omnivore/app/src/main/graphql/Labels.graphql @@ -0,0 +1,12 @@ +query GetLabels { + labels { + ... on LabelsSuccess { + labels { + ...LabelFields + } + } + ... on LabelsError { + errorCodes + } + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/SavedItemLabelSync.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/SavedItemLabelSync.kt new file mode 100644 index 000000000..95d59e0bb --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/dataService/SavedItemLabelSync.kt @@ -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) +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/SavedItemLabelQuery.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/SavedItemLabelQuery.kt new file mode 100644 index 000000000..521249da6 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/networking/SavedItemLabelQuery.kt @@ -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 { + 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() + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt index 18ce116ac..9e1076011 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/library/LibraryViewModel.kt @@ -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 ->