@@ -69,38 +69,39 @@ const (
6969
7070// App is the global app context which is passed and injected in the http handlers.
7171type App struct {
72- redis * redis.Client
73- fs stuffbin.FileSystem
74- consts atomic.Value
75- auth * auth_.Auth
76- authz * authz.Enforcer
77- i18n * i18n.I18n
78- lo * logf.Logger
79- oidc * oidc.Manager
80- media * media.Manager
81- setting * setting.Manager
82- role * role.Manager
83- user * user.Manager
84- team * team.Manager
85- status * status.Manager
86- priority * priority.Manager
87- tag * tag.Manager
88- inbox * inbox.Manager
89- tmpl * template.Manager
90- macro * macro.Manager
91- conversation * conversation.Manager
92- automation * automation.Engine
93- businessHours * businesshours.Manager
94- sla * sla.Manager
95- csat * csat.Manager
96- view * view.Manager
97- ai * ai.Manager
98- search * search.Manager
99- activityLog * activitylog.Manager
100- notifier * notifier.Service
101- customAttribute * customAttribute.Manager
102- report * report.Manager
103- webhook * webhook.Manager
72+ redis * redis.Client
73+ fs stuffbin.FileSystem
74+ consts atomic.Value
75+ auth * auth_.Auth
76+ authz * authz.Enforcer
77+ i18n * i18n.I18n
78+ lo * logf.Logger
79+ oidc * oidc.Manager
80+ media * media.Manager
81+ setting * setting.Manager
82+ role * role.Manager
83+ user * user.Manager
84+ team * team.Manager
85+ status * status.Manager
86+ priority * priority.Manager
87+ tag * tag.Manager
88+ inbox * inbox.Manager
89+ tmpl * template.Manager
90+ macro * macro.Manager
91+ conversation * conversation.Manager
92+ automation * automation.Engine
93+ businessHours * businesshours.Manager
94+ sla * sla.Manager
95+ csat * csat.Manager
96+ view * view.Manager
97+ ai * ai.Manager
98+ search * search.Manager
99+ activityLog * activitylog.Manager
100+ notifier * notifier.Service
101+ userNotification * notifier.UserNotificationManager
102+ customAttribute * customAttribute.Manager
103+ report * report.Manager
104+ webhook * webhook.Manager
104105
105106 // Global state that stores data on an available app update.
106107 update * AppUpdate
@@ -210,9 +211,11 @@ func main() {
210211 user = initUser (i18n , db )
211212 wsHub = initWS (user )
212213 notifier = initNotifier ()
214+ userNotification = initUserNotification (db , i18n )
215+ notifDispatcher = initNotifDispatcher (userNotification , notifier , wsHub )
213216 automation = initAutomationEngine (db , i18n )
214- sla = initSLA (db , team , settings , businessHours , notifier , template , user , i18n )
215- conversation = initConversations (i18n , sla , status , priority , wsHub , notifier , db , inbox , user , team , media , settings , csat , automation , template , webhook )
217+ sla = initSLA (db , team , settings , businessHours , template , user , i18n , notifDispatcher )
218+ conversation = initConversations (i18n , sla , status , priority , wsHub , db , inbox , user , team , media , settings , csat , automation , template , webhook , notifDispatcher )
216219 autoassigner = initAutoAssigner (team , user , conversation )
217220 )
218221 automation .SetConversationStore (conversation )
@@ -229,40 +232,42 @@ func main() {
229232 go media .DeleteUnlinkedMedia (ctx )
230233 go user .MonitorAgentAvailability (ctx )
231234 go conversation .RunDraftCleaner (ctx , draftRetentionDuration )
235+ go userNotification .RunNotificationCleaner (ctx )
232236
233237 var app = & App {
234- lo : lo ,
235- redis : rdb ,
236- fs : fs ,
237- sla : sla ,
238- oidc : oidc ,
239- i18n : i18n ,
240- auth : auth ,
241- media : media ,
242- setting : settings ,
243- inbox : inbox ,
244- user : user ,
245- team : team ,
246- status : status ,
247- priority : priority ,
248- tmpl : template ,
249- notifier : notifier ,
250- consts : atomic.Value {},
251- conversation : conversation ,
252- automation : automation ,
253- businessHours : businessHours ,
254- activityLog : initActivityLog (db , i18n ),
255- customAttribute : initCustomAttribute (db , i18n ),
256- authz : initAuthz (i18n ),
257- view : initView (db , i18n ),
258- report : initReport (db , i18n ),
259- csat : initCSAT (db , i18n ),
260- search : initSearch (db , i18n ),
261- role : initRole (db , i18n ),
262- tag : initTag (db , i18n ),
263- macro : initMacro (db , i18n ),
264- ai : initAI (db , i18n ),
265- webhook : webhook ,
238+ lo : lo ,
239+ redis : rdb ,
240+ fs : fs ,
241+ sla : sla ,
242+ oidc : oidc ,
243+ i18n : i18n ,
244+ auth : auth ,
245+ media : media ,
246+ setting : settings ,
247+ inbox : inbox ,
248+ user : user ,
249+ team : team ,
250+ status : status ,
251+ priority : priority ,
252+ tmpl : template ,
253+ notifier : notifier ,
254+ userNotification : userNotification ,
255+ consts : atomic.Value {},
256+ conversation : conversation ,
257+ automation : automation ,
258+ businessHours : businessHours ,
259+ activityLog : initActivityLog (db , i18n ),
260+ customAttribute : initCustomAttribute (db , i18n ),
261+ authz : initAuthz (i18n ),
262+ view : initView (db , i18n ),
263+ report : initReport (db , i18n ),
264+ csat : initCSAT (db , i18n ),
265+ search : initSearch (db , i18n ),
266+ role : initRole (db , i18n ),
267+ tag : initTag (db , i18n ),
268+ macro : initMacro (db , i18n ),
269+ ai : initAI (db , i18n ),
270+ webhook : webhook ,
266271 }
267272 app .consts .Store (constants )
268273
0 commit comments