From a04dca2614b839160ce230de0c1fb974caf8331e Mon Sep 17 00:00:00 2001 From: Afrisal Yodi Purnama Date: Thu, 9 Sep 2021 10:27:31 +0700 Subject: [PATCH] #432 fix registeredWebhookId missing in the update project function. --- src/services/ProjectService.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/services/ProjectService.js b/src/services/ProjectService.js index db68fcf..a2a407f 100644 --- a/src/services/ProjectService.js +++ b/src/services/ProjectService.js @@ -202,7 +202,11 @@ async function update(project, currentUser) { return item; }); const oldRepositories = await dbHelper.queryRepositoriesByProjectId(dbProject.id); + const weebhookIds = {}; for (const repo of oldRepositories) { // eslint-disable-line + if (repo.registeredWebhookId) { + weebhookIds[repo.url] = repo.registeredWebhookId; + } await dbHelper.removeById(models.Repository, repo.id); } for (const repoUrl of repoUrls) { // eslint-disable-line no-restricted-syntax @@ -210,7 +214,8 @@ async function update(project, currentUser) { id: helper.generateIdentifier(), projectId: dbProject.id, url: repoUrl, - archived: project.archived + archived: project.archived, + registeredWebhookId: weebhookIds[repoUrl] }) } dbProject.updatedAt = new Date(); @@ -542,6 +547,12 @@ async function createHook(body, currentUser, repoUrl) { _.find(hooks, {id: parseInt(dbRepo.registeredWebhookId, 10)})) { await client.ProjectHooks.remove(`${repoOwner}/${repoName}`, dbRepo.registeredWebhookId); } + for (const currentHook of hooks) { // eslint-disable-line no-restricted-syntax + if (currentHook.id !== parseInt(dbRepo.registeredWebhookId, 10) && + currentHook.url === `${config.HOOK_BASE_URL}/webhooks/gitlab`) { + await client.ProjectHooks.remove(`${repoOwner}/${repoName}`, currentHook.id); + } + } const hook = await client.ProjectHooks.add(`${repoOwner}/${repoName}`, `${config.HOOK_BASE_URL}/webhooks/gitlab`, { push_events: true,