Merge pull request #3332 from omnivore-app/fix/android-sync-all-folders

Request sync objects for all folders on Android
This commit is contained in:
Jackson Harper 2024-01-08 11:34:34 +08:00 committed by GitHub
commit 49fef8ac90
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 190 additions and 6 deletions

View file

@ -1,5 +1,10 @@
query UpdatesSince($after: String, $first: Int, $since: Date!) {
updatesSince(after: $after, first: $first, since: $since) {
query UpdatesSince(
$folder: String
$after: String
$first: Int
$since: Date!
) {
updatesSince(after: $after, first: $first, folder: $folder, since: $since) {
... on UpdatesSinceSuccess {
edges {
cursor

View file

@ -69,6 +69,7 @@ type Article {
contentReader: ContentReader!
createdAt: Date!
description: String
folder: String!
hasContent: Boolean
hash: String!
highlights(input: ArticleHighlightsInput): [Highlight!]!
@ -154,6 +155,7 @@ union ArticleSavingRequestResult = ArticleSavingRequestError | ArticleSavingRequ
enum ArticleSavingRequestStatus {
ARCHIVED
CONTENT_NOT_FETCHED
DELETED
FAILED
PROCESSING
@ -203,6 +205,7 @@ enum BulkActionType {
ARCHIVE
DELETE
MARK_AS_READ
MOVE_TO_FOLDER
}
enum ContentReader {
@ -227,8 +230,12 @@ enum CreateArticleErrorCode {
input CreateArticleInput {
articleSavingRequestId: ID
folder: String
labels: [CreateLabelInput!]
preparedDocument: PreparedDocumentInput
publishedAt: Date
rssFeedUrl: String
savedAt: Date
skipParsing: Boolean
source: String
state: ArticleSavingRequestStatus
@ -377,6 +384,12 @@ enum CreateNewsletterEmailErrorCode {
UNAUTHORIZED
}
input CreateNewsletterEmailInput {
description: String
folder: String
name: String
}
union CreateNewsletterEmailResult = CreateNewsletterEmailError | CreateNewsletterEmailSuccess
type CreateNewsletterEmailSuccess {
@ -631,6 +644,20 @@ type DeviceTokensSuccess {
deviceTokens: [DeviceToken!]!
}
type EmptyTrashError {
errorCodes: [EmptyTrashErrorCode!]!
}
enum EmptyTrashErrorCode {
UNAUTHORIZED
}
union EmptyTrashResult = EmptyTrashError | EmptyTrashSuccess
type EmptyTrashSuccess {
success: Boolean
}
type Feature {
createdAt: Date!
expiresAt: Date
@ -641,6 +668,19 @@ type Feature {
updatedAt: Date
}
type Feed {
author: String
createdAt: Date
description: String
id: ID
image: String
publishedAt: Date
title: String!
type: String
updatedAt: Date
url: String!
}
type FeedArticle {
annotationsCount: Int
article: Article!
@ -674,12 +714,56 @@ type FeedArticlesSuccess {
pageInfo: PageInfo!
}
type FeedEdge {
cursor: String!
node: Feed!
}
type FeedsError {
errorCodes: [FeedsErrorCode!]!
}
enum FeedsErrorCode {
BAD_REQUEST
UNAUTHORIZED
}
input FeedsInput {
after: String
first: Int
query: String
sort: SortParams
}
union FeedsResult = FeedsError | FeedsSuccess
type FeedsSuccess {
edges: [FeedEdge!]!
pageInfo: PageInfo!
}
type FetchContentError {
errorCodes: [FetchContentErrorCode!]!
}
enum FetchContentErrorCode {
BAD_REQUEST
UNAUTHORIZED
}
union FetchContentResult = FetchContentError | FetchContentSuccess
type FetchContentSuccess {
success: Boolean!
}
type Filter {
category: String!
category: String
createdAt: Date!
defaultFilter: Boolean
description: String
filter: String!
folder: String
id: ID!
name: String!
position: Int!
@ -901,6 +985,8 @@ type IntegrationsSuccess {
integrations: [Integration!]!
}
scalar JSON
type JoinGroupError {
errorCodes: [JoinGroupErrorCode!]!
}
@ -925,6 +1011,7 @@ type Label {
internal: Boolean
name: String!
position: Int
source: String
}
type LabelsError {
@ -1107,15 +1194,31 @@ type MoveLabelSuccess {
label: Label!
}
type MoveToFolderError {
errorCodes: [MoveToFolderErrorCode!]!
}
enum MoveToFolderErrorCode {
ALREADY_EXISTS
BAD_REQUEST
UNAUTHORIZED
}
union MoveToFolderResult = MoveToFolderError | MoveToFolderSuccess
type MoveToFolderSuccess {
success: Boolean!
}
type Mutation {
addPopularRead(name: String!): AddPopularReadResult!
bulkAction(action: BulkActionType!, async: Boolean, expectedCount: Int, labelIds: [ID!], query: String!): BulkActionResult!
bulkAction(action: BulkActionType!, arguments: JSON, async: Boolean, expectedCount: Int, labelIds: [ID!], query: String!): BulkActionResult!
createArticle(input: CreateArticleInput!): CreateArticleResult!
createArticleSavingRequest(input: CreateArticleSavingRequestInput!): CreateArticleSavingRequestResult!
createGroup(input: CreateGroupInput!): CreateGroupResult!
createHighlight(input: CreateHighlightInput!): CreateHighlightResult!
createLabel(input: CreateLabelInput!): CreateLabelResult!
createNewsletterEmail: CreateNewsletterEmailResult!
createNewsletterEmail(input: CreateNewsletterEmailInput): CreateNewsletterEmailResult!
deleteAccount(userID: ID!): DeleteAccountResult!
deleteFilter(id: ID!): DeleteFilterResult!
deleteHighlight(highlightId: ID!): DeleteHighlightResult!
@ -1124,6 +1227,8 @@ type Mutation {
deleteNewsletterEmail(newsletterEmailId: ID!): DeleteNewsletterEmailResult!
deleteRule(id: ID!): DeleteRuleResult!
deleteWebhook(id: ID!): DeleteWebhookResult!
emptyTrash: EmptyTrashResult!
fetchContent(id: ID!): FetchContentResult!
generateApiKey(input: GenerateApiKeyInput!): GenerateApiKeyResult!
googleLogin(input: GoogleLoginInput!): LoginResult!
googleSignup(input: GoogleSignupInput!): GoogleSignupResult!
@ -1135,6 +1240,7 @@ type Mutation {
mergeHighlight(input: MergeHighlightInput!): MergeHighlightResult!
moveFilter(input: MoveFilterInput!): MoveFilterResult!
moveLabel(input: MoveLabelInput!): MoveLabelResult!
moveToFolder(folder: String!, id: ID!): MoveToFolderResult!
optInFeature(input: OptInFeatureInput!): OptInFeatureResult!
recommend(input: RecommendInput!): RecommendResult!
recommendHighlights(input: RecommendHighlightsInput!): RecommendHighlightsResult!
@ -1161,6 +1267,7 @@ type Mutation {
updateFilter(input: UpdateFilterInput!): UpdateFilterResult!
updateHighlight(input: UpdateHighlightInput!): UpdateHighlightResult!
updateLabel(input: UpdateLabelInput!): UpdateLabelResult!
updateNewsletterEmail(input: UpdateNewsletterEmailInput!): UpdateNewsletterEmailResult!
updatePage(input: UpdatePageInput!): UpdatePageResult!
updateSubscription(input: UpdateSubscriptionInput!): UpdateSubscriptionResult!
updateUser(input: UpdateUserInput!): UpdateUserResult!
@ -1173,7 +1280,10 @@ type NewsletterEmail {
address: String!
confirmationCode: String
createdAt: Date!
description: String
folder: String!
id: ID!
name: String
subscriptionCount: Int!
}
@ -1292,6 +1402,7 @@ type Query {
article(format: String, slug: String!, username: String!): ArticleResult!
articleSavingRequest(id: ID, url: String): ArticleSavingRequestResult!
deviceTokens: DeviceTokensResult!
feeds(input: FeedsInput!): FeedsResult!
filters: FiltersResult!
getUserPersonalization: GetUserPersonalizationResult!
groups: GroupsResult!
@ -1303,11 +1414,12 @@ type Query {
recentEmails: RecentEmailsResult!
recentSearches: RecentSearchesResult!
rules(enabled: Boolean): RulesResult!
scanFeeds(input: ScanFeedsInput!): ScanFeedsResult!
search(after: String, first: Int, format: String, includeContent: Boolean, query: String): SearchResult!
sendInstallInstructions: SendInstallInstructionsResult!
subscriptions(sort: SortParams, type: SubscriptionType): SubscriptionsResult!
typeaheadSearch(first: Int, query: String!): TypeaheadSearchResult!
updatesSince(after: String, first: Int, since: Date!, sort: SortParams): UpdatesSinceResult!
updatesSince(after: String, first: Int, folder: String, since: Date!, sort: SortParams): UpdatesSinceResult!
user(userId: ID, username: String): UserResult!
users: UsersResult!
validateUsername(username: String!): Boolean!
@ -1604,6 +1716,7 @@ enum SaveErrorCode {
input SaveFileInput {
clientRequestId: ID!
folder: String
labels: [CreateLabelInput!]
source: String!
state: ArticleSavingRequestStatus
@ -1625,6 +1738,7 @@ input SaveFilterInput {
category: String
description: String
filter: String!
folder: String
name: String!
position: Int
}
@ -1637,6 +1751,7 @@ type SaveFilterSuccess {
input SavePageInput {
clientRequestId: ID!
folder: String
labels: [CreateLabelInput!]
originalContent: String!
parseResult: ParseResult
@ -1658,6 +1773,7 @@ type SaveSuccess {
input SaveUrlInput {
clientRequestId: ID!
folder: String
labels: [CreateLabelInput!]
locale: String
publishedAt: Date
@ -1668,6 +1784,25 @@ input SaveUrlInput {
url: String!
}
type ScanFeedsError {
errorCodes: [ScanFeedsErrorCode!]!
}
enum ScanFeedsErrorCode {
BAD_REQUEST
}
input ScanFeedsInput {
opml: String
url: String
}
union ScanFeedsResult = ScanFeedsError | ScanFeedsSuccess
type ScanFeedsSuccess {
feeds: [Feed!]!
}
type SearchError {
errorCodes: [SearchErrorCode!]!
}
@ -1686,16 +1821,20 @@ type SearchItem {
contentReader: ContentReader!
createdAt: Date!
description: String
folder: String!
highlights: [Highlight!]
id: ID!
image: String
isArchived: Boolean!
labels: [Label!]
language: String
links: JSON
originalArticleUrl: String
ownedByViewer: Boolean
pageId: ID
pageType: PageType!
previewContent: String
previewContentType: String
publishedAt: Date
quote: String
readAt: Date
@ -1844,6 +1983,7 @@ input SetIntegrationInput {
importItemState: ImportItemState
name: String!
syncedAt: Date
taskName: String
token: String!
type: IntegrationType
}
@ -1874,6 +2014,7 @@ input SetLabelsInput {
labelIds: [ID!]
labels: [CreateLabelInput!]
pageId: ID!
source: String
}
union SetLabelsResult = SetLabelsError | SetLabelsSuccess
@ -1963,6 +2104,7 @@ enum SetUserPersonalizationErrorCode {
}
input SetUserPersonalizationInput {
fields: JSON
fontFamily: String
fontSize: Int
libraryLayoutType: String
@ -2068,6 +2210,10 @@ enum SubscribeErrorCode {
}
input SubscribeInput {
autoAddToLibrary: Boolean
fetchContent: Boolean
folder: String
isPrivate: Boolean
subscriptionType: SubscriptionType
url: String!
}
@ -2079,11 +2225,15 @@ type SubscribeSuccess {
}
type Subscription {
autoAddToLibrary: Boolean
count: Int!
createdAt: Date!
description: String
fetchContent: Boolean!
folder: String!
icon: String
id: ID!
isPrivate: Boolean
lastFetchedAt: Date
name: String!
newsletterEmail: String
@ -2203,6 +2353,7 @@ input UpdateFilterInput {
category: String
description: String
filter: String
folder: String
id: String!
name: String
position: Int
@ -2307,6 +2458,28 @@ type UpdateLinkShareInfoSuccess {
message: String!
}
type UpdateNewsletterEmailError {
errorCodes: [UpdateNewsletterEmailErrorCode!]!
}
enum UpdateNewsletterEmailErrorCode {
BAD_REQUEST
UNAUTHORIZED
}
input UpdateNewsletterEmailInput {
description: String
folder: String
id: ID!
name: String
}
union UpdateNewsletterEmailResult = UpdateNewsletterEmailError | UpdateNewsletterEmailSuccess
type UpdateNewsletterEmailSuccess {
newsletterEmail: NewsletterEmail!
}
type UpdatePageError {
errorCodes: [UpdatePageErrorCode!]!
}
@ -2397,8 +2570,12 @@ enum UpdateSubscriptionErrorCode {
}
input UpdateSubscriptionInput {
autoAddToLibrary: Boolean
description: String
fetchContent: Boolean
folder: String
id: ID!
isPrivate: Boolean
lastFetchedAt: Date
lastFetchedChecksum: String
name: String
@ -2557,6 +2734,7 @@ enum UserErrorCode {
}
type UserPersonalization {
fields: JSON
fontFamily: String
fontSize: Int
id: ID

View file

@ -20,6 +20,7 @@ suspend fun Networker.savedItemUpdates(
try {
val result = authenticatedApolloClient().query(
UpdatesSinceQuery(
folder = Optional.presentIfNotNull("all"),
after = Optional.presentIfNotNull(cursor),
first = Optional.presentIfNotNull(limit),
since = since