From 2169ade48ff1730be5ff21dfd43bbb6bdde0e75f Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 27 Oct 2022 11:32:56 +0800 Subject: [PATCH] Persist integration in db before creating cloud task to sync with integrations --- .../api/src/resolvers/integrations/index.ts | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/api/src/resolvers/integrations/index.ts b/packages/api/src/resolvers/integrations/index.ts index 1ae83b55b..302054706 100644 --- a/packages/api/src/resolvers/integrations/index.ts +++ b/packages/api/src/resolvers/integrations/index.ts @@ -55,16 +55,11 @@ 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, } } else { // Create @@ -93,18 +88,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,