Skip to content

Commit 7c2d12b

Browse files
committed
refactor: improve Feed service
1 parent 0a78ac4 commit 7c2d12b

File tree

3 files changed

+32
-11
lines changed

3 files changed

+32
-11
lines changed

services/feed/feed.class.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,13 @@
1-
import _ from 'lodash';
21
import { Application } from '@feathersjs/express';
32
import { Params } from '@feathersjs/feathers';
43
import { Poll } from 'which-types';
54

6-
import { PollSchema } from '../../models/polls/poll.schema';
7-
import PollModel from '../../models/polls/poll.model';
8-
95

106
export default class Feed {
117
app!: Application;
128

139
async find(params: Params): Promise<Poll[]> {
14-
return this.app.service('polls')
15-
.find(params)
16-
.then( // Move new verified polls on top
17-
(polls: Poll[]) => _.sortBy(polls, poll => poll.author.verified && !poll.userChoice)
18-
).then( // But all seen posts go down
19-
(polls: Poll[]) => _.sortBy(polls, poll => !!poll.userChoice)
20-
);
10+
return this.app.service('polls').find(params);
2111
}
2212

2313
setup (app: Application) {

services/feed/feed.hooks.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import _ from 'lodash';
2+
import { HookContext } from '@feathersjs/feathers';
3+
4+
5+
const raiseNewVerifedPolls = async (context: HookContext): Promise<HookContext> => {
6+
// Raise unseen verified polls to the very top
7+
context.result = _.sortBy(
8+
context.result,
9+
poll => !(poll.author.verified && !poll.userChoice)
10+
);
11+
return context;
12+
};
13+
14+
const lowerOldPolls = async (context: HookContext): Promise<HookContext> => {
15+
// Move all seen polls down
16+
context.result = _.sortBy(
17+
context.result,
18+
poll => !!poll.userChoice
19+
);
20+
return context;
21+
};
22+
23+
export default {
24+
after: {
25+
find: [raiseNewVerifedPolls, lowerOldPolls]
26+
}
27+
};
28+

services/feed/feed.service.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { Application } from '@feathersjs/express';
22
import Feed from './feed.class';
33

4+
import hooks from './feed.hooks';
5+
46
export default (app: Application): void => {
57
app.use('/feed', new Feed());
8+
app.service('feed').hooks(hooks);
69
};
710

0 commit comments

Comments
 (0)