Skip to content

Commit 6a066d8

Browse files
authored
refactor: centralize field update logic (#140)
in preparation of #136
1 parent ae42f51 commit 6a066d8

2 files changed

Lines changed: 20 additions & 32 deletions

File tree

api/items.add-draft.js

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import { addDraftIssueToProjectMutation } from "./lib/queries.js";
44
import { projectItemNodeToGitHubProjectItem } from "./lib/project-item-node-to-github-project-item.js";
55
import { getStateWithProjectFields } from "./lib/get-state-with-project-fields.js";
6-
import { getFieldsUpdateQueryAndFields } from "./lib/get-fields-update-query-and-fields.js";
76
import { removeObjectKeys } from "./lib/remove-object-keys.js";
7+
import { updateItemFields } from "./lib/update-project-item-fields.js";
88

99
/**
1010
* Creates draft item in project.
@@ -38,30 +38,24 @@ export async function addDraftItem(project, state, content, fields) {
3838
const nonExistingProjectFields = Object.entries(stateWithFields.fields)
3939
.filter(([, field]) => field.existsInProject === false)
4040
.map(([key]) => key);
41-
const existingProjectFieldKeys = Object.keys(fields).filter(
42-
(key) => !nonExistingProjectFields.includes(key)
41+
42+
const fieldsAfterUpdate = await updateItemFields(
43+
project,
44+
state,
45+
draftItem.id,
46+
fields
4347
);
4448

45-
if (existingProjectFieldKeys.length === 0)
49+
if (!fieldsAfterUpdate) {
4650
return {
4751
...draftItem,
4852
// @ts-expect-error - complaints that built-in fields `title` and `status` might not exist, but we are good here
4953
fields: removeObjectKeys(draftItem.fields, nonExistingProjectFields),
5054
};
51-
52-
const existingFields = Object.fromEntries(
53-
existingProjectFieldKeys.map((key) => [key, fields[key]])
54-
);
55-
56-
const result = getFieldsUpdateQueryAndFields(stateWithFields, existingFields);
57-
58-
await project.octokit.graphql(result.query, {
59-
projectId: stateWithFields.id,
60-
itemId: draftItem.id,
61-
});
55+
}
6256

6357
return {
6458
...draftItem,
65-
fields: result.fields,
59+
fields: fieldsAfterUpdate,
6660
};
6761
}

api/items.add.js

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import { addIssueToProjectMutation } from "./lib/queries.js";
44
import { projectItemNodeToGitHubProjectItem } from "./lib/project-item-node-to-github-project-item.js";
55
import { getStateWithProjectFields } from "./lib/get-state-with-project-fields.js";
6-
import { getFieldsUpdateQueryAndFields } from "./lib/get-fields-update-query-and-fields.js";
76
import { removeObjectKeys } from "./lib/remove-object-keys.js";
7+
import { updateItemFields } from "./lib/update-project-item-fields.js";
88

99
/**
1010
* Adds new item to project.
@@ -33,30 +33,24 @@ export async function addItem(project, state, contentNodeId, fields) {
3333
const nonExistingProjectFields = Object.entries(stateWithFields.fields)
3434
.filter(([, field]) => field.existsInProject === false)
3535
.map(([key]) => key);
36-
const existingProjectFieldKeys = Object.keys(fields).filter(
37-
(key) => !nonExistingProjectFields.includes(key)
36+
37+
const fieldsAfterUpdate = await updateItemFields(
38+
project,
39+
state,
40+
newItem.id,
41+
fields
3842
);
3943

40-
if (existingProjectFieldKeys.length === 0)
44+
if (!fieldsAfterUpdate) {
4145
return {
4246
...newItem,
4347
// @ts-expect-error - complaints that built-in fields `title` and `status` might not exist, but we are good here
4448
fields: removeObjectKeys(newItem.fields, nonExistingProjectFields),
4549
};
46-
47-
const existingFields = Object.fromEntries(
48-
existingProjectFieldKeys.map((key) => [key, fields[key]])
49-
);
50-
51-
const result = getFieldsUpdateQueryAndFields(stateWithFields, existingFields);
52-
53-
await project.octokit.graphql(result.query, {
54-
projectId: stateWithFields.id,
55-
itemId: newItem.id,
56-
});
50+
}
5751

5852
return {
5953
...newItem,
60-
fields: result.fields,
54+
fields: fieldsAfterUpdate,
6155
};
6256
}

0 commit comments

Comments
 (0)