| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 | using System;using System.Collections;using System.Globalization;using System.Text;using Models;using Newtonsoft.Json;using UnityEngine;using UnityEngine.Networking;using UnityEngine.UI;using Web3Unity.Scripts.Library.ETHEREUEM.Connect;using Web3Unity.Scripts.Library.Web3Wallet;namespace Web3Unity.Scripts.Prefabs.Minter{    public class ListNftWebWallet : MonoBehaviour    {        private readonly string chain = "ethereum";        private readonly string network = "goerli";        private readonly string chainID = "5";        private string _itemPrice = "0.001";        private string _tokenType = "";        private string _itemID = "";        private string account;        public Renderer textureObject;        public Text description;        public Text tokenURI;        public Text contractAddr;        public Text isApproved;        public InputField itemPrice;        public Text noListedItems;        public Text playerAccount;        public void Awake()        {            account = PlayerPrefs.GetString("Account");            description.text = "";            tokenURI.text = "";            isApproved.text = "";            contractAddr.text = "";        }        // Start is called before the first frame update        private async void Start()        {            playerAccount.text = account;            try            {                var response = await EVM.GetMintedNFT(chain, network, account);                if (response[1].uri == null)                {                    Debug.Log("Not Listed Items");                    return;                }                if (response[1].uri.StartsWith("ipfs://"))                {                    response[1].uri = response[1].uri.Replace("ipfs://", "https://ipfs.chainsafe.io/ipfs/");                }                var webRequest = UnityWebRequest.Get(response[1].uri);                await webRequest.SendWebRequest();                var data = JsonConvert.DeserializeObject<RootGetNFT>(Encoding.UTF8.GetString(webRequest.downloadHandler.data));                description.text = data.description;                // parse json to get image uri                var imageUri = data.image;                if (imageUri.StartsWith("ipfs://"))                {                    imageUri = imageUri.Replace("ipfs://", "https://ipfs.chainsafe.io/ipfs/");                    StartCoroutine(DownloadImage(imageUri));                }                else                {                    StartCoroutine(DownloadImage(imageUri));                }                tokenURI.text = response[1].uri;                Debug.Log(response[1].uri);                contractAddr.text = response[1].nftContract;                Debug.Log("NFT Contract: " + response[1].nftContract);                isApproved.text = response[1].isApproved.ToString();                _itemID = response[1].id;                _itemPrice = itemPrice.text;                Debug.Log("Token Type: " + response[1].tokenType);                _tokenType = response[1].tokenType;            }            catch (Exception e)            {                noListedItems.text = "NO LISTED ITEM for " + account;                Debug.Log("No Listed Items" + e);            }        }        // ReSharper disable Unity.PerformanceAnalysis        private IEnumerator DownloadImage(string mediaUrl)        {            var request = UnityWebRequestTexture.GetTexture(mediaUrl);            yield return request.SendWebRequest();            if (request.result == UnityWebRequest.Result.ProtocolError)            {                Debug.Log(request.error);            }            else            {                var webTexture = ((DownloadHandlerTexture)request.downloadHandler).texture;                var webSprite = SpriteFromTexture2D(webTexture);                textureObject.GetComponent<Image>().sprite = webSprite;            }        }        private Sprite SpriteFromTexture2D(Texture2D texture)        {            return Sprite.Create(texture, new Rect(0.0f, 0.0f, texture.width, texture.height), new Vector2(0.5f, 0.5f), 100.0f);        }        public async void ListItem()        {            var eth = float.Parse(_itemPrice);            float decimals = 1000000000000000000; // 18 decimals            var wei = eth * decimals;            Debug.Log("ItemID: " + _itemID);            var response =                await EVM.CreateListNftTransaction(chain, network, account, _itemID, Convert.ToDecimal(wei).ToString(CultureInfo.InvariantCulture),                    _tokenType);            var value = Convert.ToInt32(response.tx.value.hex, 16);            Debug.Log("Response: " + response);            try            {                var responseNft = await Web3Wallet.SendTransaction(chainID, response.tx.to, value.ToString(),                    response.tx.data, response.tx.gasLimit, response.tx.gasPrice);                if (responseNft == null) Debug.Log("Empty Response Object:");            }            catch (Exception e)            {                Debug.Log("Error: " + e);            }        }    }}
 |