Skip to content

Commit

Permalink
Adding executions to render call in client. (openlawteam#231)
Browse files Browse the repository at this point in the history
* Adding executions to render call in client.

* scala lint fix

Co-authored-by: jdville03 <[email protected]>
  • Loading branch information
craig-openlaw and jdville03 authored Aug 7, 2020
1 parent 040af88 commit ef0bae0
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions src/main/scala/org/adridadou/openlaw/client/Openlaw.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ import org.adridadou.openlaw.parser.template.variableTypes._

import scala.scalajs.js
import cats.implicits._
import org.adridadou.openlaw.result.{Failure, Result, Success}
import org.adridadou.openlaw.result.{Failure, Result, Success, attempt}
import org.adridadou.openlaw.result.Implicits._
import org.adridadou.openlaw.values.{
ContractId,
TemplateParameters,
TemplateTitle
}
import org.adridadou.openlaw.vm.OpenlawExecutionEngine
import org.adridadou.openlaw.vm.{Executions, OpenlawExecutionEngine}
import slogging.LazyLogging
import io.circe.parser._
import io.circe.syntax._
Expand Down Expand Up @@ -89,6 +89,7 @@ object Openlaw extends LazyLogging {
proofs: js.Dictionary[String],
jsTemplates: js.Dictionary[CompiledTemplate],
jsParams: js.Dictionary[Any],
executions: js.Dictionary[String],
externalCallStructures: js.Dictionary[Any],
contractId: js.UndefOr[String],
profileAddress: js.UndefOr[String],
Expand All @@ -100,7 +101,7 @@ object Openlaw extends LazyLogging {
prepareParameters(jsParams),
prepareTemplates(jsTemplates),
signatureProofs = prepareProofs(proofs.toMap).getOrThrow(),
executions = Map.empty,
executions = prepareExecutions(executions.toMap).getOrThrow(),
prepareStructures(externalCallStructures),
contractId.toOption.map(ContractId(_)),
contractCreationDate.toOption
Expand All @@ -110,6 +111,24 @@ object Openlaw extends LazyLogging {
)
)

private def prepareExecutions(
executions: Map[String, String]
): Result[Map[ActionIdentifier, Executions]] = {
executions.toList
.map {
case (k, v) =>
for {
one <- decode[ActionIdentifier](k)
two <- decode[Executions](v)
} yield one -> two
}
.sequence
.map(_.toMap)
} match {
case Right(map) => Success(map)
case Left(error) => Failure(error)
}

private def prepareProofs(
proofs: Map[String, String]
): Result[Map[Email, SignatureProof]] =
Expand Down

0 comments on commit ef0bae0

Please sign in to comment.