Merge pull request #1353 from omnivore-app/fix/sync-integration-before-created-in-db

Persist integration in db before creating cloud task to sync with integrations
This commit is contained in:
Hongbo Wu 2022-10-27 13:05:47 +08:00 committed by GitHub
commit 53dc7f0fb0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -55,16 +55,12 @@ export const setIntegrationResolver = authorized<
}
}
if (existingIntegration.enabled === input.enabled) {
return {
integration: existingIntegration,
}
}
integrationToSave = {
...integrationToSave,
id: existingIntegration.id,
taskName: existingIntegration.taskName,
enabled: input.enabled,
token: input.token,
taskName: existingIntegration.taskName,
}
} else {
// Create
@ -93,18 +89,28 @@ export const setIntegrationResolver = authorized<
}
}
// save integration
const integration = await getRepository(Integration).save(integrationToSave)
if (!integrationToSave.id || integrationToSave.enabled) {
// create a task to sync all the pages if new integration or enable integration
const taskName = await enqueueSyncWithIntegration(user.id, input.type)
log.info('enqueued task', taskName)
integrationToSave.taskName = taskName
// update task name in integration
await getRepository(Integration).update(integration.id, { taskName })
integration.taskName = taskName
} else if (integrationToSave.taskName) {
// delete the task if disable integration and task exists
await deleteTask(integrationToSave.taskName)
integrationToSave.taskName = null
log.info('task deleted', integrationToSave.taskName)
// update task name in integration
await getRepository(Integration).update(integration.id, {
taskName: null,
})
integration.taskName = null
}
const integration = await getRepository(Integration).save(integrationToSave)
analytics.track({
userId: uid,