From ef0bae06e761045db53d7daf4d1edeea9a77757a Mon Sep 17 00:00:00 2001 From: Craig Blake <40273884+craigwblake-openlaw@users.noreply.github.com> Date: Fri, 7 Aug 2020 13:24:21 -0400 Subject: [PATCH] Adding executions to render call in client. (#231) * Adding executions to render call in client. * scala lint fix Co-authored-by: jdville03 --- .../adridadou/openlaw/client/Openlaw.scala | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/scala/org/adridadou/openlaw/client/Openlaw.scala b/src/main/scala/org/adridadou/openlaw/client/Openlaw.scala index fad71e1..49d8eea 100644 --- a/src/main/scala/org/adridadou/openlaw/client/Openlaw.scala +++ b/src/main/scala/org/adridadou/openlaw/client/Openlaw.scala @@ -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._ @@ -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], @@ -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 @@ -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]] =