diff --git a/ghost/members-csv/lib/unparse.js b/ghost/members-csv/lib/unparse.js index 5f72cab673..02b68425de 100644 --- a/ghost/members-csv/lib/unparse.js +++ b/ghost/members-csv/lib/unparse.js @@ -2,15 +2,30 @@ const _ = require('lodash'); const papaparse = require('papaparse'); const unparse = (members) => { + const columns = new Set([ + 'id', + 'email', + 'name', + 'note', + 'subscribed_to_emails', + 'complimentary_plan', + 'stripe_customer_id', + 'created_at', + 'deleted_at', + 'labels' + ]); const mappedMembers = members.map((member) => { - let stripeCustomerId; - - if (member.stripe) { - stripeCustomerId = _.get(member, 'stripe.subscriptions[0].customer.id'); + if (member.error) { + columns.add('error'); } - let labels = []; - if (member.labels) { - labels = `${member.labels.map(l => l.name).join(',')}`; + + let labels = ''; + if (typeof member.labels === 'string') { + labels = member.labels; + } else if (Array.isArray(member.labels)) { + labels = member.labels.map((l) => { + return typeof l === 'string' ? l : l.name; + }).join(','); } return { @@ -19,15 +34,18 @@ const unparse = (members) => { name: member.name, note: member.note, subscribed_to_emails: member.subscribed, - complimentary_plan: member.comped, - stripe_customer_id: stripeCustomerId, + complimentary_plan: member.comped || member.complimentary_plan, + stripe_customer_id: _.get(member, 'stripe.subscriptions[0].customer.id') || member.stripe_customer_id, created_at: member.created_at, deleted_at: member.deleted_at, - labels: labels + labels: labels, + error: member.error || null }; }); - return papaparse.unparse(mappedMembers); + return papaparse.unparse(mappedMembers, { + columns: Array.from(columns.values()) + }); }; module.exports = unparse;