public async Task <GetNftByTypeSharedResponse> Handle
        (
            GetNftByTypeSharedRequest aGetNftByTypeSharedRequest,
            CancellationToken aCancellationToken
        )
        {
            var aNftRequest = new GetNftByTypeServiceRequest {
                GetNftId = aGetNftByTypeSharedRequest.GetNftId
            };

            GetNftByTypeServiceResponse response = await Mediator.Send(aNftRequest);

            var nftDto = new NftTemplate()
            {
                Name           = response.Name,
                Symbol         = response.Symbol,
                AttachedTokens = response.AttachedTokens,
                MintLimit      = response.MintLimit
            };

            return(new GetNftByTypeSharedResponse(new System.Guid())
            {
                NftTypeDto = nftDto
            });
        }
Пример #2
0
            private async Task <NftTemplate> GetNft(uint aToken)
            { // TokenNftTypeData Should already have the data in state so no need to make a service call
                GetTokenNftTypeSharedResponse nftContainer = await HttpClient.GetJsonAsync <GetTokenNftTypeSharedResponse>(GetTokenNftTypeSharedRequest.RouteFactory((int)aToken));

                NftTemplate template = WebThreeState.TemplateDataList.Find(aNft => aNft.NftId == nftContainer.NftType);

                return(template);
            }
Пример #3
0
 protected override void Initialize()
 {
     TotalTokenTypes     = 0;
     TokenDataList       = new List <TokenBase>();
     OwnedTokenIdList    = new List <uint>();
     CurrentTokenId      = 0;
     CurrentTokenData    = null;
     CurrentTokenNftType = 0;
     TotalNftTypes       = 0;
     TemplateDataList    = new List <NftTemplate>();
     CurrentNftTemplate  = new NftTemplate();
 }
            public override Task <WebThreeState> Handle
            (
                ChangeCurrentNftAction aChangeCurrentNftRequest,
                CancellationToken aCancellationToken
            )
            {
                string TemplateName = aChangeCurrentNftRequest.TemplateName;

                //string requestUri = QueryHelpers.AddQueryString(GetNftByTypeSharedRequest.Route, "GetNftType", getNftId.ToString());

                NftTemplate newSelectedTemplate = WebThreeState.TemplateDataList.Find(nft => nft.Name == TemplateName);

                WebThreeState.CurrentNftTemplate = newSelectedTemplate;

                return(Task.FromResult(WebThreeState));
            }
        public async Task <GetNftByTypeServiceResponse> Handle(GetNftByTypeServiceRequest aGetNftByTypeServiceRequest, CancellationToken aCancellationToken)
        {
            Function aGetNftByTypeFunction = NftCreatorInstance.Instance.GetFunction("getNFTData");

            var aGetNftByTypeFunctionMessage = new GetNftByTypeFunctionInput {
                NftId = aGetNftByTypeServiceRequest.GetNftId
            };

            GetNftByTypeOutputDto aTemplate = await aGetNftByTypeFunction.CallDeserializingToObjectAsync <GetNftByTypeOutputDto>(aGetNftByTypeFunctionMessage.NftId);

            var response = new NftTemplate
            {
                Name           = aTemplate.TokenName,
                Symbol         = aTemplate.TokenSymbol,
                MintLimit      = aTemplate.TokenMintLimit,
                AttachedTokens = aTemplate.TokenAttachedTokens
            };

            return(new GetNftByTypeServiceResponse {
                NftTypeData = response
            });
        }
Пример #6
0
        public async Task Should_Generate_NftTypesListWithIds()
        {
            var NftTypeList = new List <NftTemplate>();


            var fetchNftTypes = new GetNftTypesClientFeaturesAction();

            WebThreeState response = await Mediator.Send(fetchNftTypes);

            int NumOfTemplates = (int)response.TotalNftTypes;

            // Nft templates are not zero indexed.
            for (uint ctr = 1; ctr <= NumOfTemplates; ctr++)
            {
                string requestUri = GetNftByTypeSharedRequest.RouteFactory((int)ctr);

                GetNftByTypeSharedResponse templateResponse = await HttpClient.GetJsonAsync <GetNftByTypeSharedResponse>(requestUri);

                templateResponse.NftTypeData.ShouldBeOfType <NftTemplate>();
                var template = new NftTemplate()
                {
                    NftId          = ctr,
                    Name           = templateResponse.NftTypeData.Name,
                    Symbol         = templateResponse.NftTypeData.Symbol,
                    MintLimit      = templateResponse.NftTypeData.MintLimit,
                    AttachedTokens = templateResponse.NftTypeData.AttachedTokens
                };
                NftTypeList.Add(template);
                //  NftTypeDict[ctr] = templateResponse;
                //
            }

            NftTypeList[3].NftId.ShouldBe((uint)4);

            //NftTypeList[3].Name.ShouldBe("TesterTemplate_0");
            //NftTypeDict[4].Name.ShouldBe("TesterTemplate_0");
        }
            public override async Task <WebThreeState> Handle
            (
                GetNftTypesClientFeaturesAction aGetNftTypesClientRequest,
                CancellationToken aCancellationToken
            )
            {
                _TemplateList = new List <NftTemplate>();

                GetNftCountSharedResponse aSharedResponse = await HttpClient.GetJsonAsync <GetNftCountSharedResponse>(GetNftCountSharedRequest.Route);

                int nftCount = (int)aSharedResponse.NftCount;

                for (int ctr = 1; ctr <= nftCount; ctr++)
                {
                    string requestUri = GetNftByTypeSharedRequest.RouteFactory(ctr);
                    GetNftByTypeSharedResponse templateResponse = await HttpClient.GetJsonAsync <GetNftByTypeSharedResponse>(requestUri);

                    var template = new NftTemplate()
                    {
                        NftId          = (uint)ctr,
                        Name           = templateResponse.NftTypeDto.Name,
                        Symbol         = templateResponse.NftTypeDto.Symbol,
                        MintLimit      = templateResponse.NftTypeDto.MintLimit,
                        AttachedTokens = templateResponse.NftTypeDto.AttachedTokens
                    };

                    _TemplateList.Add(template);
                }

                var TemplateInfoContainer = new WebThreeState {
                    TemplateDataList = _TemplateList
                };

                TemplateInfoContainer.TotalNftTypes = aSharedResponse.NftCount;
                return(TemplateInfoContainer);
            }
            public override async Task <WebThreeState> Handle
            (
                GetNftTypesClientFeaturesAction aGetNftTypesClientRequest,
                CancellationToken aCancellationToken
            )
            {
                _TemplateList = new List <NftTemplate>();

                GetNftTypesSharedResponse aSharedResponse = await HttpClient.GetJsonAsync <GetNftTypesSharedResponse>(GetNftTypesSharedRequest.Route);

                int NumOfTemplates = (int)aSharedResponse.TotalNftTypes;

                for (uint ctr = 1; ctr <= NumOfTemplates; ctr++)
                {
                    string requestUri = GetNftByTypeSharedRequest.RouteFactory((int)ctr);
                    GetNftByTypeSharedResponse templateResponse = await HttpClient.GetJsonAsync <GetNftByTypeSharedResponse>(requestUri);

                    var template = new NftTemplate()
                    {
                        NftId          = ctr,
                        Name           = templateResponse.NftTypeData.Name,
                        Symbol         = templateResponse.NftTypeData.Symbol,
                        MintLimit      = templateResponse.NftTypeData.MintLimit,
                        AttachedTokens = templateResponse.NftTypeData.AttachedTokens
                    };


                    _TemplateList.Add(template);
                }

                WebThreeState.TemplateDataList = _TemplateList;

                WebThreeState.TotalNftTypes = aSharedResponse.TotalNftTypes;

                return(WebThreeState);
            }
        //List<NftTemplate> TemplateDataList => WebThreeState.TemplateDataList;

        public async Task ShouldBuildTokenList()
        {
            WebThreeState webThree = await Mediator.Send(new GetNftTypesClientFeaturesAction());

            GetAllOwnedTokensSharedResponse aTokenList = await HttpClient.GetJsonAsync <GetAllOwnedTokensSharedResponse>(GetAllOwnedTokensSharedRequest.Route);

            aTokenList.TokenIdList.Count.ShouldBeGreaterThan(3);
            aTokenList.TokenIdList.Contains(3).ShouldBe(true);
            aTokenList.TokenIdList.Contains(4).ShouldBe(true);
            aTokenList.TokenIdList.Contains(5).ShouldBe(true);

            foreach (uint token in aTokenList.TokenIdList)
            {
                // TokenId
                var ownedToken = new TokenBase()
                {
                    TokenId = token
                };

                // TokenNFtTypeId
                string getNftTypeUri = GetTokenNftTypeSharedRequest.RouteFactory((int)token);

                WebThreeState NftTypeContainer = await Mediator.Send(new FetchTokenNftTypeAction()
                {
                    TokenId = (int)ownedToken.TokenId
                });

                // TokenNftTypeData Should already have the data in state so no need to make a service call
                NftTemplate nftType = webThree.TemplateDataList.Find(nft => nft.NftId == NftTypeContainer.CurrentTokenNftType);

                ownedToken.TemplateData = nftType;

                // Token Balance

                BalanceOfSharedResponse BalanceContainer = await HttpClient.GetJsonAsync <BalanceOfSharedResponse>(BalanceOfSharedRequest.RouteFactory((int)token));

                ownedToken.Balance = BalanceContainer.Balance;

                // Token ImmutableData (Data)

                ownedToken.TemplateData.ShouldBeOfType <NftTemplate>();

                ViewTokenDataSharedResponse DataString = await HttpClient.GetJsonAsync <ViewTokenDataSharedResponse>(ViewTokenDataSharedRequest.RouteFactory((int)token));

                DataString.TokenDataString.ShouldNotBe(null);
                if (token == 3)
                {
                    byte[] serializedImmutableData = Convert.FromBase64String(DataString.TokenDataString);
                    // need to figure out a way to get the type occording to the nftId
                    ImmutableData DeserializedObject = Serializer.Deserialize <ImmutableData>(serializedImmutableData, options); // options == 0

                    ownedToken.ImmDataObj = DeserializedObject;

                    // Add to StateList
                    TokenDataList.Add(ownedToken);
                }
                else
                {
                    ownedToken.Data = DataString.TokenDataString;

                    TokenDataList.Add(ownedToken);
                }
            }

            TokenDataList.Count.ShouldBe(3);
        }