Skip to content

Commit d04fcf1

Browse files
committed
Allow Await(js.Promise) in a Future domain
1 parent 801e266 commit d04fcf1

File tree

2 files changed

+11
-4
lines changed
  • keywords-Await

2 files changed

+11
-4
lines changed

keywords-Await/.js/src/main/scala/com/thoughtworks/dsl/keywords/AwaitJS.scala

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,20 @@ import scalajs.js
55
import scala.util.Success
66
import scala.util.Failure
77
import scala.util.control.NonFatal
8+
import scala.concurrent.Future
9+
import scala.concurrent.ExecutionContext
810

911
private trait AwaitJS { this: Await.type =>
1012
given [PromiseResult]
1113
: Dsl.IsKeyword[Await[js.Promise[PromiseResult]], PromiseResult] with {}
1214

13-
given [Value, That]: Dsl[Await[js.Promise[Value]], js.Promise[That], Value] =
14-
Await.apply.liftCo[[X] =>> Dsl[X, js.Promise[That], Value]](_ `then` _)
15+
given [JsPromiseResult, That]: Dsl[Await[js.Promise[JsPromiseResult]], js.Promise[That], JsPromiseResult] =
16+
Await.apply.liftCo[[X] =>> Dsl[X, js.Promise[That], JsPromiseResult]](_ `then` _)
17+
18+
given [JsPromiseResult, That](using ExecutionContext): Dsl[Await[js.Promise[JsPromiseResult]], Future[That], JsPromiseResult] =
19+
Await.apply.liftCo[[X] =>> Dsl[X, Future[That], JsPromiseResult]] { (promise, handler) =>
20+
promise.toFuture.flatMap(handler)
21+
}
1522

1623
extension [FA, A](inline fa: FA)(using
1724
inline notKeyword: util.NotGiven[

keywords-Await/src/main/scala/com/thoughtworks/dsl/keywords/Await.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ object Await extends AwaitJS {
118118
Dsl.Keyword.Opaque.Of.apply
119119
given [FutureResult]: IsKeyword[Await[Future[FutureResult]], FutureResult] with {}
120120

121-
given [Value, That](using
121+
given [FutureResult, That](using
122122
ExecutionContext
123-
): Dsl[Await[Future[Value]], Future[That], Value] =
123+
): Dsl[Await[Future[FutureResult]], Future[That], FutureResult] =
124124
_ flatMap _
125125

126126
// // TODO:

0 commit comments

Comments
 (0)