From 1fd7014c45c1033c3eb0aaccfc2ebff77fb552ce Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Wed, 30 Oct 2019 15:22:12 +0000 Subject: [PATCH] Fixed member.deleted webhook having an empty payload no issue - the members output serializer was passing model objects through on `frame.response` but the webhooks serializer doesn't know how to deal with those - adjusting the output serializer to use a mapper as per the other serializers means that POJOs are being passed through which allows the webhook serializer to correctly pick out the changed attributes --- .../api/canary/utils/serializers/output/members.js | 9 +++++---- .../api/canary/utils/serializers/output/utils/mapper.js | 6 ++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/core/server/api/canary/utils/serializers/output/members.js b/core/server/api/canary/utils/serializers/output/members.js index be7b35f16e..e5aec26009 100644 --- a/core/server/api/canary/utils/serializers/output/members.js +++ b/core/server/api/canary/utils/serializers/output/members.js @@ -1,18 +1,19 @@ const common = require('../../../../../lib/common'); const debug = require('ghost-ignition').debug('api:canary:utils:serializers:output:members'); +const mapper = require('./utils/mapper'); module.exports = { browse(data, apiConfig, frame) { debug('browse'); - frame.response = data; + frame.response = mapper.mapMember(data, frame); }, add(data, apiConfig, frame) { debug('add'); frame.response = { - members: [data] + members: [mapper.mapMember(data, frame)] }; }, @@ -20,7 +21,7 @@ module.exports = { debug('edit'); frame.response = { - members: [data] + members: [mapper.mapMember(data, frame)] }; }, @@ -34,7 +35,7 @@ module.exports = { } frame.response = { - members: [data] + members: [mapper.mapMember(data, frame)] }; }, diff --git a/core/server/api/canary/utils/serializers/output/utils/mapper.js b/core/server/api/canary/utils/serializers/output/utils/mapper.js index 36332a175b..064b52366f 100644 --- a/core/server/api/canary/utils/serializers/output/utils/mapper.js +++ b/core/server/api/canary/utils/serializers/output/utils/mapper.js @@ -119,6 +119,11 @@ const mapAction = (model, frame) => { return attrs; }; +const mapMember = (model, frame) => { + const jsonModel = model.toJSON ? model.toJSON(frame.options) : model; + return jsonModel; +}; + module.exports.mapPost = mapPost; module.exports.mapUser = mapUser; module.exports.mapTag = mapTag; @@ -126,3 +131,4 @@ module.exports.mapIntegration = mapIntegration; module.exports.mapSettings = mapSettings; module.exports.mapImage = mapImage; module.exports.mapAction = mapAction; +module.exports.mapMember = mapMember;