6
6
* 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file).
7
7
*/
8
8
9
- import { Injectable } from '@nestjs/common' ;
9
+ import {
10
+ Injectable ,
11
+ InternalServerErrorException ,
12
+ Optional ,
13
+ } from '@nestjs/common' ;
10
14
import { OnEvent } from '@nestjs/event-emitter' ;
11
15
12
16
import EventWrapper from '@/channel/lib/EventWrapper' ;
@@ -21,6 +25,15 @@ import { PluginType } from '@/plugins/types';
21
25
import { SettingService } from '@/setting/services/setting.service' ;
22
26
import { BaseService } from '@/utils/generics/base-service' ;
23
27
import { getRandomElement } from '@/utils/helpers/safeRandom' ;
28
+ import {
29
+ SocketGet ,
30
+ SocketPost ,
31
+ } from '@/websocket/decorators/socket-method.decorator' ;
32
+ import { SocketReq } from '@/websocket/decorators/socket-req.decorator' ;
33
+ import { SocketRes } from '@/websocket/decorators/socket-res.decorator' ;
34
+ import { SocketRequest } from '@/websocket/utils/socket-request' ;
35
+ import { SocketResponse } from '@/websocket/utils/socket-response' ;
36
+ import { WebsocketGateway } from '@/websocket/websocket.gateway' ;
24
37
25
38
import { BlockDto } from '../dto/block.dto' ;
26
39
import { EnvelopeFactory } from '../helpers/envelope-factory' ;
@@ -46,15 +59,40 @@ export class BlockService extends BaseService<
46
59
BlockFull ,
47
60
BlockDto
48
61
> {
62
+ private readonly gateway : WebsocketGateway ;
63
+
49
64
constructor (
50
65
readonly repository : BlockRepository ,
51
66
private readonly contentService : ContentService ,
52
67
private readonly settingService : SettingService ,
53
68
private readonly pluginService : PluginService ,
54
69
protected readonly i18n : I18nService ,
55
70
protected readonly languageService : LanguageService ,
71
+ @Optional ( ) gateway ?: WebsocketGateway ,
56
72
) {
57
73
super ( repository ) ;
74
+ if ( gateway ) {
75
+ this . gateway = gateway ;
76
+ }
77
+ }
78
+
79
+ @SocketGet ( '/block/subscribe/' )
80
+ @SocketPost ( '/block/subscribe/' )
81
+ subscribe ( @SocketReq ( ) req : SocketRequest , @SocketRes ( ) res : SocketResponse ) {
82
+ debugger ;
83
+ try {
84
+ if ( req . session . web ?. profile ?. id ) {
85
+ this . gateway . io . socketsJoin ( `blocks:${ req . session . web . profile . id } ` ) ;
86
+ return res . status ( 200 ) . json ( {
87
+ success : true ,
88
+ } ) ;
89
+ } else {
90
+ throw new Error ( 'Unable to join highlight blocks room' ) ;
91
+ }
92
+ } catch ( e ) {
93
+ this . logger . error ( 'Websocket subscription' , e ) ;
94
+ throw new InternalServerErrorException ( e ) ;
95
+ }
58
96
}
59
97
60
98
/**
@@ -577,7 +615,7 @@ export class BlockService extends BaseService<
577
615
this . logger . log ( 'triggered: hook:highlight:error' ) ;
578
616
this . eventEmitter . emit ( 'hook:highlight:error' , {
579
617
flowId,
580
- userId : recipient . foreign_id ,
618
+ userId : recipient . id ,
581
619
blockId : block . id ,
582
620
} ) ;
583
621
} else {
@@ -641,7 +679,7 @@ export class BlockService extends BaseService<
641
679
this . logger . log ( 'triggered: hook:highlight:error' ) ;
642
680
this . eventEmitter . emit ( 'hook:highlight:error' , {
643
681
flowId,
644
- userId : recipient . foreign_id ,
682
+ userId : recipient . id ,
645
683
blockId : block . id ,
646
684
} ) ;
647
685
} else {
@@ -678,7 +716,7 @@ export class BlockService extends BaseService<
678
716
this . logger . log ( 'triggered: hook:highlight:error' ) ;
679
717
this . eventEmitter . emit ( 'hook:highlight:error' , {
680
718
flowId,
681
- userId : recipient . foreign_id ,
719
+ userId : recipient . id ,
682
720
blockId : block . id ,
683
721
} ) ;
684
722
} else {
0 commit comments