From e789dd806f0cc4fc222b185ad441e77e754514e7 Mon Sep 17 00:00:00 2001
From: Angelo Capossele <angelocapossele@gmail.com>
Date: Mon, 29 Jun 2020 12:43:57 +0100
Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20search=20(#574)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 plugins/dashboard/explorer_routes.go | 45 ++++++++++++----------------
 1 file changed, 19 insertions(+), 26 deletions(-)

diff --git a/plugins/dashboard/explorer_routes.go b/plugins/dashboard/explorer_routes.go
index de9b3ae4..d392f875 100644
--- a/plugins/dashboard/explorer_routes.go
+++ b/plugins/dashboard/explorer_routes.go
@@ -3,7 +3,6 @@ package dashboard
 import (
 	"fmt"
 	"net/http"
-	"sync"
 
 	"github.com/iotaledger/goshimmer/dapps/valuetransfers"
 	"github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/address"
@@ -12,6 +11,7 @@ import (
 	"github.com/iotaledger/goshimmer/plugins/messagelayer"
 	"github.com/iotaledger/goshimmer/plugins/webapi/value/utils"
 	"github.com/labstack/echo"
+	"github.com/mr-tron/base58/base58"
 )
 
 // ExplorerMessage defines the struct of the ExplorerMessage.
@@ -111,42 +111,35 @@ func setupExplorerRoutes(routeGroup *echo.Group) {
 	routeGroup.GET("/search/:search", func(c echo.Context) error {
 		search := c.Param("search")
 		result := &SearchResult{}
-		wg := sync.WaitGroup{}
 
-		switch len(search) {
+		searchInByte, err := base58.Decode(search)
+		if err != nil {
+			return fmt.Errorf("%w: search ID %s", ErrInvalidParameter, search)
+		}
+
+		switch len(searchInByte) {
 
 		case address.Length:
-			wg.Add(1)
-			go func() {
-				defer wg.Done()
-				addr, err := findAddress(search)
-				if err == nil {
-					result.Address = addr
-				}
-			}()
+			addr, err := findAddress(search)
+			if err == nil {
+				result.Address = addr
+			}
 
 		case message.IdLength:
-			wg.Add(1)
-			go func() {
-				defer wg.Done()
-
-				messageID, err := message.NewId(search)
-				if err != nil {
-					return
-				}
+			messageID, err := message.NewId(search)
+			if err != nil {
+				return fmt.Errorf("%w: search ID %s", ErrInvalidParameter, search)
+			}
 
-				msg, err := findMessage(messageID)
-				if err == nil {
-					result.Message = msg
-				}
-			}()
+			msg, err := findMessage(messageID)
+			if err == nil {
+				result.Message = msg
+			}
 
 		default:
 			return fmt.Errorf("%w: search ID %s", ErrInvalidParameter, search)
 		}
 
-		wg.Wait()
-
 		return c.JSON(http.StatusOK, result)
 	})
 }
-- 
GitLab