Skip to content

Commit

Permalink
sync mutation event with latest synced version
Browse files Browse the repository at this point in the history
  • Loading branch information
5d committed Nov 23, 2023
1 parent 8b45ef0 commit e21e316
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,10 @@ final class OutgoingMutationQueue: OutgoingMutationQueueBehavior {
}

Task {
let latestSyncMetadata = try? storageAdapter.queryMutationSyncMetadata(for: mutationEvent.modelId, modelName: mutationEvent.modelName)
let syncMutationToCloudOperation = await SyncMutationToCloudOperation(
mutationEvent: mutationEvent,
latestSyncMetadata: latestSyncMetadata,
api: api,
authModeStrategy: authModeStrategy
) { [weak self] result in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class SyncMutationToCloudOperation: AsynchronousOperation {

private weak var api: APICategoryGraphQLBehaviorExtended?
private let mutationEvent: MutationEvent
private let latestSyncMetadata: MutationSyncMetadata?
private let completion: GraphQLOperation<MutationSync<AnyModel>>.ResultListener
private let requestRetryablePolicy: RequestRetryablePolicy

Expand All @@ -31,13 +32,15 @@ class SyncMutationToCloudOperation: AsynchronousOperation {
private var authTypesIterator: AWSAuthorizationTypeIterator?

init(mutationEvent: MutationEvent,
latestSyncMetadata: MutationSyncMetadata?,
api: APICategoryGraphQLBehaviorExtended,
authModeStrategy: AuthModeStrategy,
networkReachabilityPublisher: AnyPublisher<ReachabilityUpdate, Never>? = nil,
currentAttemptNumber: Int = 1,
requestRetryablePolicy: RequestRetryablePolicy? = RequestRetryablePolicy(),
completion: @escaping GraphQLOperation<MutationSync<AnyModel>>.ResultListener) async {
self.mutationEvent = mutationEvent
self.latestSyncMetadata = latestSyncMetadata
self.api = api
self.networkReachabilityPublisher = networkReachabilityPublisher
self.completion = completion
Expand Down Expand Up @@ -128,7 +131,7 @@ class SyncMutationToCloudOperation: AsynchronousOperation {
request = GraphQLRequest<MutationSyncResult>.deleteMutation(of: model,
modelSchema: modelSchema,
where: graphQLFilter,
version: mutationEvent.version)
version: latestSyncMetadata?.version)
case .update:
let model = try mutationEvent.decodeModel()
guard let modelSchema = ModelRegistry.modelSchema(from: mutationEvent.modelName) else {
Expand All @@ -140,7 +143,7 @@ class SyncMutationToCloudOperation: AsynchronousOperation {
request = GraphQLRequest<MutationSyncResult>.updateMutation(of: model,
modelSchema: modelSchema,
where: graphQLFilter,
version: mutationEvent.version)
version: latestSyncMetadata?.version)
case .create:
let model = try mutationEvent.decodeModel()
guard let modelSchema = ModelRegistry.modelSchema(from: mutationEvent.modelName) else {
Expand All @@ -151,7 +154,7 @@ class SyncMutationToCloudOperation: AsynchronousOperation {
}
request = GraphQLRequest<MutationSyncResult>.createMutation(of: model,
modelSchema: modelSchema,
version: mutationEvent.version)
version: latestSyncMetadata?.version)
}
} catch {
let apiError = APIError.unknown("Couldn't decode model", "", error)
Expand Down

0 comments on commit e21e316

Please sign in to comment.