@@ -2,9 +2,12 @@ import { Injectable } from '@nestjs/common'
22
33import { BusinessEvents } from '~/constants/business-event.constant'
44import { NoteModel } from '~/modules/note/note.model'
5+ import { OwnerService } from '~/modules/owner/owner.service'
56import { PageModel } from '~/modules/page/page.model'
67import { PostModel } from '~/modules/post/post.model'
8+ import { ReaderService } from '~/modules/reader/reader.service'
79import { InjectModel } from '~/transformers/model.transformer'
10+ import { getAvatar } from '~/utils/tool.util'
811
912@Injectable ( )
1013export class EventPayloadEnricherService {
@@ -15,8 +18,40 @@ export class EventPayloadEnricherService {
1518 private readonly noteModel : MongooseModel < NoteModel > ,
1619 @InjectModel ( PageModel )
1720 private readonly pageModel : MongooseModel < PageModel > ,
21+ private readonly readerService : ReaderService ,
22+ private readonly ownerService : OwnerService ,
1823 ) { }
1924
25+ private async enrichCommentPayload ( data : any ) : Promise < any > {
26+ if ( ! data ?. readerId ) {
27+ return data
28+ }
29+
30+ const reader = await this . readerService
31+ . findReaderInIds ( [ data . readerId ] )
32+ . then ( ( readers ) => readers [ 0 ] ?? null )
33+
34+ if ( ! reader ) {
35+ return data
36+ }
37+
38+ if ( reader . role === 'owner' ) {
39+ const owner = await this . ownerService . getOwner ( ) . catch ( ( ) => null )
40+
41+ return {
42+ ...data ,
43+ author : owner ?. name || reader . name || data . author ,
44+ avatar : owner ?. avatar || reader . image || getAvatar ( reader . email ) ,
45+ }
46+ }
47+
48+ return {
49+ ...data ,
50+ author : reader . name || data . author ,
51+ avatar : reader . image || data . avatar || getAvatar ( reader . email ) ,
52+ }
53+ }
54+
2055 async enrichPayload ( event : BusinessEvents , data : any ) : Promise < any > {
2156 if ( ! data ?. id ) return data
2257
@@ -55,6 +90,9 @@ export class EventPayloadEnricherService {
5590 data
5691 )
5792 }
93+ case BusinessEvents . COMMENT_CREATE : {
94+ return this . enrichCommentPayload ( data )
95+ }
5896 default : {
5997 return data
6098 }
0 commit comments