1 /*
2  *  Make.org Core API
3  *  Copyright (C) 2018 Make.org
4  *
5  * This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU Affero General Public License as
7  *  published by the Free Software Foundation, either version 3 of the
8  *  License, or (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Affero General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Affero General Public License
16  *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  *
18  */
19 
20 package org.make.api.technical
21 
22 import akka.actor.typed.eventstream.EventStream
23 import akka.actor.typed.scaladsl.ActorContext
24 import akka.persistence.typed.scaladsl.EffectBuilder
25 
26 object EffectBuilderHelper {
27   implicit class PublishOps[E, S](val effect: EffectBuilder[E, S]) extends AnyVal {
28     def thenPublish(event: E)(implicit context: ActorContext[_]): EffectBuilder[E, S] =
29       effect.thenRun(_ => context.system.eventStream ! EventStream.Publish(event))
30   }
31 }
Line Stmt Id Pos Tree Symbol Tests Code
29 339 1181 - 1207 Apply akka.actor.typed.eventstream.EventStream.Publish.apply akka.actor.typed.eventstream.EventStream.Publish.apply[E](event)
29 368 1132 - 1208 Apply akka.persistence.typed.scaladsl.EffectBuilder.thenRun PublishOps.this.effect.thenRun(((x$1: S) => typed.this.ActorRef.ActorRefOps[akka.actor.typed.eventstream.EventStream.Command](context.system.eventStream).!(akka.actor.typed.eventstream.EventStream.Publish.apply[E](event))))
29 362 1152 - 1178 Select akka.actor.typed.ActorSystem.eventStream context.system.eventStream
29 371 1152 - 1207 Apply akka.actor.typed.ActorRef.ActorRefOps.! typed.this.ActorRef.ActorRefOps[akka.actor.typed.eventstream.EventStream.Command](context.system.eventStream).!(akka.actor.typed.eventstream.EventStream.Publish.apply[E](event))