From 53c315e5c2d2baef16f8a6dc7cba18f2c55c55ae Mon Sep 17 00:00:00 2001
From: "Ching-Hua (Vivian) Lin" <jkrvivian@gmail.com>
Date: Mon, 15 Jun 2020 21:17:41 +0800
Subject: [PATCH] feat: Add inclusion states to webapis (#476)

* feat: Add inclusion states to weapis

* refactor: Rename Conflict to Rejected
---
 .../webapi/value/gettransactionbyid/handler.go   | 16 ++++++++++++----
 plugins/webapi/value/unspentoutputs/handler.go   |  8 ++++----
 .../webapi/value/utils/transaction_handler.go    |  3 ++-
 3 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/plugins/webapi/value/gettransactionbyid/handler.go b/plugins/webapi/value/gettransactionbyid/handler.go
index ba4d9248..df4791ab 100644
--- a/plugins/webapi/value/gettransactionbyid/handler.go
+++ b/plugins/webapi/value/gettransactionbyid/handler.go
@@ -26,13 +26,21 @@ func Handler(c echo.Context) error {
 	}
 	txn := utils.ParseTransaction(txnObj.Unwrap())
 
-	// TODO: get inclusion state
+	// get txn metadata
+	txnMetadataObj := valuetransfers.Tangle.TransactionMetadata(txnID)
+	defer txnMetadataObj.Release()
+	if !txnMetadataObj.Exists() {
+		return c.JSON(http.StatusNotFound, Response{Error: "Transaction Metadata not found"})
+	}
+	txnMetadata := txnMetadataObj.Unwrap()
+
 	return c.JSON(http.StatusOK, Response{
 		Transaction: txn,
 		InclusionState: utils.InclusionState{
-			Confirmed: true,
-			Conflict:  false,
-			Liked:     true,
+			Solid:     txnMetadata.Solid(),
+			Confirmed: txnMetadata.Confirmed(),
+			Rejected:  txnMetadata.Rejected(),
+			Liked:     txnMetadata.Liked(),
 		},
 	})
 }
diff --git a/plugins/webapi/value/unspentoutputs/handler.go b/plugins/webapi/value/unspentoutputs/handler.go
index e22c9b0a..738c278f 100644
--- a/plugins/webapi/value/unspentoutputs/handler.go
+++ b/plugins/webapi/value/unspentoutputs/handler.go
@@ -32,7 +32,6 @@ func Handler(c echo.Context) error {
 			defer outputObj.Release()
 			output := outputObj.Unwrap()
 
-			// TODO: get inclusion state
 			if output.ConsumerCount() == 0 {
 				// iterate balances
 				var b []utils.Balance
@@ -47,9 +46,10 @@ func Handler(c echo.Context) error {
 					ID:       id.String(),
 					Balances: b,
 					InclusionState: utils.InclusionState{
-						Confirmed: true,
-						Conflict:  false,
-						Liked:     true,
+						Solid:     output.Solid(),
+						Confirmed: output.Confirmed(),
+						Rejected:  output.Rejected(),
+						Liked:     output.Liked(),
 					},
 				})
 			}
diff --git a/plugins/webapi/value/utils/transaction_handler.go b/plugins/webapi/value/utils/transaction_handler.go
index 308904d5..359446a2 100644
--- a/plugins/webapi/value/utils/transaction_handler.go
+++ b/plugins/webapi/value/utils/transaction_handler.go
@@ -64,7 +64,8 @@ type Balance struct {
 
 // InclusionState represents the different states of an OutputID
 type InclusionState struct {
+	Solid     bool `json:"solid,omitempty"`
 	Confirmed bool `json:"confirmed,omitempty"`
-	Conflict  bool `json:"conflict,omitempty"`
+	Rejected  bool `json:"rejected,omitempty"`
 	Liked     bool `json:"liked,omitempty"`
 }
-- 
GitLab