Skip to content

Commit

Permalink
🎨 do not ping slack if we import content (#8476)
Browse files Browse the repository at this point in the history
closes #7275

- forward options for events (post model only for now)
  • Loading branch information
kirrg001 authored and aileen committed May 22, 2017
1 parent c7bbaff commit b22151a
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 16 deletions.
24 changes: 15 additions & 9 deletions core/server/data/slack/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ var https = require('https'),
api = require('../../api/settings'),
i18n = require('../../i18n'),
schema = require('../schema').checks,
options,
req,
slackData = {};

Expand Down Expand Up @@ -44,8 +43,15 @@ function makeRequest(reqOptions, reqPayload) {
req.end();
}

function ping(post) {
var message;
function ping(post, options) {
options = options || {};

var message, reqOptions;

// CASE: do not ping slack if we import a database
if (options.importing) {
return Promise.resolve();
}

// If this is a post, we want to send the link of the post
if (schema.isPost(post)) {
Expand Down Expand Up @@ -79,20 +85,20 @@ function ping(post) {
};

// fill the options for https request
options = url.parse(slackSettings.url);
options.method = 'POST';
options.headers = {'Content-type': 'application/json'};
reqOptions = url.parse(slackSettings.url);
reqOptions.method = 'POST';
reqOptions.headers = {'Content-type': 'application/json'};

// with all the data we have, we're doing the request now
makeRequest(options, slackData);
makeRequest(reqOptions, slackData);
} else {
return;
}
});
}

function listener(model) {
ping(model.toJSON());
function listener(model, options) {
ping(model.toJSON(), options);
}

function testPing() {
Expand Down
17 changes: 10 additions & 7 deletions core/server/models/post.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,16 @@ Post = ghostBookshelf.Model.extend({

tableName: 'posts',

emitChange: function emitChange(event, usePreviousResourceType) {
emitChange: function emitChange(event, options) {
options = options || {};

var resourceType = this.get('page') ? 'page' : 'post';
if (usePreviousResourceType) {

if (options.usePreviousResourceType) {
resourceType = this.updated('page') ? 'page' : 'post';
}

events.emit(resourceType + '.' + event, this);
events.emit(resourceType + '.' + event, this, options);
},

defaults: function defaults() {
Expand All @@ -47,7 +50,7 @@ Post = ghostBookshelf.Model.extend({
model.emitChange('added');

if (['published', 'scheduled'].indexOf(status) !== -1) {
model.emitChange(status);
model.emitChange(status, {importing: options.importing});
}

return this.updateTags(model, response, options);
Expand Down Expand Up @@ -87,14 +90,14 @@ Post = ghostBookshelf.Model.extend({
// Handle added and deleted for post -> page or page -> post
if (model.resourceTypeChanging) {
if (model.wasPublished) {
model.emitChange('unpublished', true);
model.emitChange('unpublished', {usePreviousResourceType: true});
}

if (model.wasScheduled) {
model.emitChange('unscheduled', true);
model.emitChange('unscheduled', {usePreviousResourceType: true});
}

model.emitChange('deleted', true);
model.emitChange('deleted', {usePreviousResourceType: true});
model.emitChange('added');

if (model.isPublished) {
Expand Down
10 changes: 10 additions & 0 deletions core/test/unit/slack_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -294,5 +294,15 @@ describe('Slack', function () {
done();
});
});

it('do not ping if content is imported', function (done) {
ping({}, {importing: true}).then(function () {
isPostStub.called.should.be.false();
urlForSpy.called.should.be.false();
settingsAPIStub.called.should.be.false();
makeRequestSpy.called.should.be.false();
done();
}).catch(done);
});
});
});

0 comments on commit b22151a

Please sign in to comment.