import streak from "../../streak.app.mjs";
const docLink = "https://streak.readme.io/reference/create-a-box";
export default {
key: "streak-create-box",
name: "Create Box",
description: `Create a new box in Streak. [See the docs](${docLink})`,
version: "0.0.1",
type: "action",
props: {
streak,
pipelineId: {
propDefinition: [
streak,
"pipelineId",
],
reloadProps: true,
},
name: {
type: "string",
label: "Name",
description: "Name of the box",
},
stage: {
propDefinition: [
streak,
"stage",
(c) => ({
pipelineId: c.pipelineId,
}),
],
optional: true,
},
notes: {
type: "string",
label: "Notes",
description: "The notes on the box",
optional: true,
},
teamId: {
propDefinition: [
streak,
"teamId",
],
optional: true,
},
assignees: {
propDefinition: [
streak,
"teamMembers",
(c) => ({
teamId: c.teamId,
}),
],
description: "The member(s) of your team this box will be assigned to",
optional: true,
},
},
async additionalProps() {
const props = {};
const fields = await this.streak.listPipelineFields({
pipelineId: this.pipelineId,
});
for (const field of fields) {
props[`${this.pipelineId}_${field.key}`] = this.streak.customFieldToProp(field);
}
return props;
},
async run({ $ }) {
const response = await this.streak.createBox({
$,
pipelineId: this.pipelineId,
data: {
name: this.name,
stageKey: this.stage,
notes: this.notes,
assignedToSharingEntries: this.assignees?.map((assignee) => ({
email: assignee,
})),
},
});
const updateCustomFields = Object.keys(this)
.filter((k) => k.includes(`${this.pipelineId}_`))
.map((k) => this.streak.updateFieldValue({
boxId: response.boxKey,
fieldId: k.split(`${this.pipelineId}_`)[1],
value: this[k],
}));
await Promise.all(updateCustomFields);
$.export("$summary", "Successfully created box");
return response;
},
};