Skip to content
This repository was archived by the owner on Jun 27, 2019. It is now read-only.

Commit 0c57868

Browse files
committed
comment edit and delete
1 parent db718e8 commit 0c57868

File tree

4 files changed

+45
-3
lines changed

4 files changed

+45
-3
lines changed

server/hooks/add-deleted.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Add deleted items
2+
module.exports = () => hook => {
3+
if (!hook.params || !hook.params.query) {
4+
return hook;
5+
}
6+
delete hook.params.query.deleted;
7+
return hook;
8+
};

server/hooks/hide-deleted-data.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Remove data from deleted items
2+
const _ = require('lodash');
3+
const keepFields = [
4+
'_id',
5+
'deleted',
6+
'createdAt',
7+
'updatedAt'
8+
]
9+
10+
module.exports = () => hook => {
11+
if (!hook.result) {
12+
return hook;
13+
}
14+
const data = !_.isEmpty(hook.result.data) ? hook.result.data : hook.result;
15+
16+
_.castArray(data).forEach(item => {
17+
if(item.deleted) {
18+
Object.keys(item).forEach(key => {
19+
if (!keepFields.includes(key)) {
20+
delete item[key];
21+
}
22+
});
23+
}
24+
});
25+
26+
return hook;
27+
};

server/models/comments.model.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module.exports = function (app) {
1313
upvotes: { type: Array, default: [] },
1414
upvoteCount: { type: Number, default: 0 },
1515
language: { type: String, required: true },
16+
deleted: { type: Boolean, default: false },
1617
createdAt: { type: Date, default: Date.now },
1718
updatedAt: { type: Date, default: Date.now },
1819
wasSeeded: { type: Boolean }

server/services/comments/comments.hooks.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { authenticate } = require('feathers-authentication').hooks;
2-
const { unless, isProvider, populate, discard } = require('feathers-hooks-common');
2+
const { unless, isProvider, populate, discard, softDelete } = require('feathers-hooks-common');
33
const {
44
//queryWithCurrentUser,
55
associateCurrentUser,
@@ -8,6 +8,8 @@ const {
88
} = require('feathers-authentication-hooks');
99
const { isVerified } = require('feathers-authentication-management').hooks;
1010
const createExcerpt = require('../../hooks/create-excerpt');
11+
const addDeleted = require('../../hooks/add-deleted');
12+
const hideDeletedData = require('../../hooks/hide-deleted-data');
1113
const createNotifications = require('./hooks/create-notifications');
1214
const createMentionNotifications = require('./hooks/create-mention-notifications');
1315
const _ = require('lodash');
@@ -28,9 +30,12 @@ const xssFields = ['content', 'contentExcerpt'];
2830
module.exports = {
2931
before: {
3032
all: [
33+
softDelete(),
3134
xss({ fields: xssFields })
3235
],
33-
find: [],
36+
find: [
37+
addDeleted()
38+
],
3439
get: [],
3540
create: [
3641
authenticate('jwt'),
@@ -80,7 +85,8 @@ module.exports = {
8085
xss({ fields: xssFields })
8186
],
8287
find: [
83-
discard('content', 'user.coverImg', 'badgeIds')
88+
discard('content', 'user.coverImg', 'badgeIds'),
89+
hideDeletedData()
8490
],
8591
get: [],
8692
create: [

0 commit comments

Comments
 (0)