UNPKG

proca

Version:
112 lines (99 loc) 2.88 kB
import { Flags } from "@oclif/core"; import Command from "#src/procaCommand.mjs"; import { gql, mutation } from "#src/urql.mjs"; const SERVICE_NAMES = [ "MAILJET", "SES", "STRIPE", "TEST_STRIPE", "SYSTEM", "PREVIEW", "WEBHOOK", "SUPABASE", "SMTP", ].map((d) => d.toLowerCase()); export default class OrgEmail extends Command { static description = "Set email service and supporter confirmation for an org"; static args = this.multiid(); static flags = { ...this.flagify({ multiid: true }), mailer: Flags.string({ description: "service to send emails", options: SERVICE_NAMES, helpValue: SERVICE_NAMES, default: "system", }), from: Flags.string({ description: "Email address to send from", helpValue: "default <org>@proca.app", }), "supporter-confirm": Flags.boolean({ description: "enable/disable action confirmation emails", allowNo: true, }), "supporter-confirm-template": Flags.string({ description: "add confirmation template", }), }; async mutate(flags) { flags.from = flags.from || `${flags.org}@proca.app`; const Document = gql` mutation UpdateOrgProcessing( $name: String! $emailBackend: ServiceName! $emailFrom: String! $supporterConfirm: Boolean $supporterConfirmTemplate: String ) { updateOrgProcessing( name: $name emailBackend: $emailBackend emailFrom: $emailFrom supporterConfirm: $supporterConfirm supporterConfirmTemplate: $supporterConfirmTemplate ) { id name processing { emailBackend emailFrom supporterConfirm supporterConfirmTemplate } personalData { supporterConfirm supporterConfirmTemplate } } } `; const variables = { name: flags.name, emailBackend: flags.mailer.toUpperCase(), emailFrom: flags.from, }; if (flags["supporter-confirm"] !== undefined) { variables.supporterConfirm = flags["supporter-confirm"]; console.log("supporter-confirm", variables.supporterConfirm); } if (flags["supporter-confirm-template"]) { variables.supporterConfirmTemplate = flags["supporter-confirm-template"]; } const result = await mutation(Document, variables); return result.updateOrgProcessing; } simplify = (d) => ({ id: d.id, name: d.name, mailer: d.processing.emailBackend, from: d.processing.emailFrom, supporterConfirm: d.personalData?.supporterConfirm, supporterConfirmTemplate: d.personalData?.supporterConfirmTemplate, }); async run() { const { flags } = await this.parse(); const result = await this.mutate(flags); this.output(result); } }