diff --git a/src/cadence/mainnet/getNFTIDs.cdc b/src/cadence/mainnet/getNFTIDs.cdc index 84ef5638..2125b61c 100644 --- a/src/cadence/mainnet/getNFTIDs.cdc +++ b/src/cadence/mainnet/getNFTIDs.cdc @@ -93,6 +93,7 @@ import FlovatarComponent from 0x921ea449dffec68a import Moments from 0xd4ad4740ee426334 import MotoGPCard from 0xa49cc0ee46c54bfb import UFC_NFT from 0x329feb3ab062d289 +import StoreFront from 0x766b859539a6679b import ByteNextMedalNFT from 0x3b16cb9f5c036412 import MaxarNFT from 0xa4e9020ad21eb30b import RCRDSHPNFT from 0x6c3ff40b90b928ab @@ -545,6 +546,10 @@ pub fun main(ownerAddress: Address): {String: [UInt64]} { .borrow<&{NonFungibleToken.CollectionPublic}>() { ids["FlovatarComponent"] = col.getIDs() } + if let col = owner.getCapability(StoreFront.collectionPublicPath) + .borrow<&{StoreFront.CollectionPublic}>() { + ids["StoreFront"] = col.getIDs() + } if let col = owner.getCapability(ByteNextMedalNFT.CollectionPublicPath) .borrow<&{NonFungibleToken.CollectionPublic}>() { diff --git a/src/cadence/mainnet/getNFTs.cdc b/src/cadence/mainnet/getNFTs.cdc index 18d38c96..39e28937 100644 --- a/src/cadence/mainnet/getNFTs.cdc +++ b/src/cadence/mainnet/getNFTs.cdc @@ -95,6 +95,8 @@ import MaxarNFT from 0xa4e9020ad21eb30b import Flovatar from 0x921ea449dffec68a import FlovatarComponent from 0x921ea449dffec68a import FlovatarComponentTemplate from 0x921ea449dffec68a +import StoreFront from 0x766b859539a6679b +import StoreFrontViews from 0x766b859539a6679b import ByteNextMedalNFT from 0x3b16cb9f5c036412 import RCRDSHPNFT from 0x6c3ff40b90b928ab import Seussibles from 0x321d8fcde05f6e8c @@ -286,6 +288,7 @@ pub fun main(ownerAddress: Address, ids: {String:[UInt64]}): [NFTData?] { case "MotoGPCard": d = getMotoGPCardNFT(owner: owner, id: id) case "UFC_NFT": d = getUFCNFT(owner: owner, id: id) case "Flovatar": d = getFlovatarNFT(owner: owner, id: id) + case "StoreFront": d = getStoreFront(owner: owner, id: id) case "FlovatarComponent": d = getFlovatarComponentNFT(owner: owner, id: id) case "ByteNextMedalNFT": d = getByteNextMedalNFT(owner: owner, id: id) case "RCRDSHPNFT": d = getRCRDSHPNFT(owner: owner, id: id) @@ -4709,4 +4712,54 @@ pub fun getFlunks(owner: PublicAccount, id: UInt64): NFTData? { media: [NFTMedia(uri: httpFile.uri(), mimetype: "image")], metadata: {} ) +} + +// https://flow-view-source.com/mainnet/account/0x766b859539a6679b/contract/StoreFront +pub fun getStoreFront(owner: PublicAccount, id: UInt64): NFTData? { + + let col = owner.getCapability(StoreFront.collectionPublicPath) + .borrow<&{StoreFront.CollectionPublic}>() + if col == nil { return nil } + + let nft = col!.borrow(id: id) + if nft == nil { return nil } + + let view = nft!.resolveView(Type())! as! StoreFrontViews.StoreFrontDisplay + var metadata = view.metadata + let title = metadata["name"]! + let description = metadata["description"]! + + let viewNFTCollection = nft!.resolveView(Type())! as! MetadataViews.NFTCollectionDisplay + + metadata["editionNumber"] = "1" + metadata["editionCount"] = "1" + + let template = StoreFront.getTemplate(templateId: nft!.data.templateId)! + let contract = NFTContractData( + name: "StoreFront", + address: 0x766b859539a6679b, + storage_path: "StoreFront.collectionStoragePath", + public_path: "StoreFront.collectionPublicPath", + public_collection_name: "StoreFront.CollectionPublic", + external_domain: viewNFTCollection.externalURL.url, + ) + + let rawMetadata: {String:String?} = {} + for key in metadata.keys { + rawMetadata.insert(key: key, metadata[key]) + } + + return NFTData( + contract: contract, + id: nft!.id, + uuid: nft!.uuid, + title: title, + description: description, + external_domain_view_url: metadata["external_url"]!, + token_uri: nil, + media: [ + NFTMedia(uri: metadata["image"], mimetype: "image") + ], + metadata: rawMetadata + ) } \ No newline at end of file diff --git a/src/cadence/mainnet/testGetNFTIDs.sh b/src/cadence/mainnet/testGetNFTIDs.sh index 02a0af7b..c7d38bdd 100755 --- a/src/cadence/mainnet/testGetNFTIDs.sh +++ b/src/cadence/mainnet/testGetNFTIDs.sh @@ -470,6 +470,10 @@ Flovatar) echo "Flovatar" flow scripts execute getNFTIDs.cdc 0x2a0eccae942667be --network mainnet ;; +StoreFront) + echo "StoreFront" + flow scripts execute getNFTIDs.cdc 0x766b859539a6679b --network mainnet + ;; FlovatarComponent) echo "FlovatarComponent" diff --git a/src/cadence/mainnet/testGetNFTs.sh b/src/cadence/mainnet/testGetNFTs.sh index c189da28..15cb5dee 100755 --- a/src/cadence/mainnet/testGetNFTs.sh +++ b/src/cadence/mainnet/testGetNFTs.sh @@ -463,6 +463,10 @@ Flovatar) echo "FlovatarComponent" flow scripts execute getNFTs.cdc --args-json '[{ "type": "Address", "value": "0x2a0eccae942667be" }, { "type": "Dictionary", "value": [{ "key": { "type": "String", "value": "FlovatarComponent" }, "value": { "type": "Array", "value": [{ "type": "UInt64", "value": "440" }] } }] }]' --network mainnet ;; +StoreFront) + echo "StoreFront" + flow scripts execute getNFTs.cdc --args-json '[{ "type": "Address", "value": "0x766b859539a6679b" }, { "type": "Dictionary", "value": [{ "key": { "type": "String", "value": "StoreFront" }, "value": { "type": "Array", "value": [{ "type": "UInt64", "value": "1" }] } }] }]' --network mainnet + ;; ByteNextMedalNFT) echo "ByteNextMedalNFT" flow scripts execute getNFTs.cdc --args-json '[{ "type": "Address", "value": "0x3f9d4046fcd6fce3" }, { "type": "Dictionary", "value": [{ "key": { "type": "String", "value": "ByteNextMedalNFT" }, "value": { "type": "Array", "value": [{ "type": "UInt64", "value": "9999" }] } }] }]' --network mainnet diff --git a/src/cadence/testnet/getNFTIDs.cdc b/src/cadence/testnet/getNFTIDs.cdc index af89e9dc..ddf64435 100644 --- a/src/cadence/testnet/getNFTIDs.cdc +++ b/src/cadence/testnet/getNFTIDs.cdc @@ -66,6 +66,8 @@ import DooverseItems from 0x5ab407dfb3bf35e8 import TrartContractNFT from 0x4e024b8545e52d07 import SturdyItems from 0xfafb022e4e45634b import QRLNFT from 0x5dfbd0d5aba6acf7 +import StoreFront from 0x34d2a0f0a4f8c6e8 + import MaxarNFT from 0x5dfbd0d5aba6acf7 import Gear from 0x8c7e52f597aa6117 import ProShop_5 from 0x8c7e52f597aa6117 @@ -402,6 +404,10 @@ pub fun main(ownerAddress: Address): {String: [UInt64]} { .borrow<&{NonFungibleToken.CollectionPublic}>() { ids["FlovatarComponent"] = col.getIDs() } + if let col = owner.getCapability(StoreFront.collectionPublicPath) + .borrow<&{StoreFront.CollectionPublic}>() { + ids["StoreFront"] = col.getIDs() + } if let col = owner.getCapability(ByteNextMedalNFT.CollectionPublicPath) .borrow<&{NonFungibleToken.CollectionPublic}>() { diff --git a/src/cadence/testnet/getNFTs.cdc b/src/cadence/testnet/getNFTs.cdc index 799567af..6f2beb74 100644 --- a/src/cadence/testnet/getNFTs.cdc +++ b/src/cadence/testnet/getNFTs.cdc @@ -69,6 +69,8 @@ import ProShop_5 from 0x8c7e52f597aa6117 import Flovatar from 0x9392a4a7c3f49a0b import FlovatarComponent from 0x9392a4a7c3f49a0b import FlovatarComponentTemplate from 0x9392a4a7c3f49a0b +import StoreFront from 0x34d2a0f0a4f8c6e8 +import StoreFrontViews from 0x34d2a0f0a4f8c6e8 import MaxarNFT from 0x5dfbd0d5aba6acf7 import ByteNextMedalNFT from 0x734061e710725233 @@ -226,6 +228,7 @@ pub fun main(ownerAddress: Address, ids: {String:[UInt64]}): [NFTData?] { case "SturdyItems": d = getSturdyItemsNFT(owner: owner, id: id) case "QRL": d = getQRLNFT(owner: owner, id: id) case "Flovatar": d = getFlovatarNFT(owner: owner, id: id) + case "StoreFront": d = getStoreFront(owner: owner, id: id) case "FlovatarComponent": d = getFlovatarComponentNFT(owner: owner, id: id) case "ByteNextMedalNFT": d = getByteNextMedalNFT(owner: owner, id: id) default: @@ -3191,4 +3194,54 @@ pub fun getByteNextMedalNFT(owner: PublicAccount, id: UInt64): NFTData? { media: [NFTMedia(uri: rawMetadata["metaURI"], mimetype: "image")], metadata: rawMetadata ) +} + +// https://flow-view-source.com/testnet/account/0x34d2a0f0a4f8c6e8/contract/StoreFront +pub fun getStoreFront(owner: PublicAccount, id: UInt64): NFTData? { + + let col = owner.getCapability(StoreFront.collectionPublicPath) + .borrow<&{StoreFront.CollectionPublic}>() + if col == nil { return nil } + + let nft = col!.borrow(id: id) + if nft == nil { return nil } + + let view = nft!.resolveView(Type())! as! StoreFrontViews.StoreFrontDisplay + var metadata = view.metadata + let title = metadata["name"]! + let description = metadata["description"]! + + let viewNFTCollection = nft!.resolveView(Type())! as! MetadataViews.NFTCollectionDisplay + + metadata["editionNumber"] = "1" + metadata["editionCount"] = "1" + + let template = StoreFront.getTemplate(templateId: nft!.data.templateId)! + let contract = NFTContractData( + name: "StoreFront", + address: 0x34d2a0f0a4f8c6e8, + storage_path: "StoreFront.collectionStoragePath", + public_path: "StoreFront.collectionPublicPath", + public_collection_name: "StoreFront.CollectionPublic", + external_domain: viewNFTCollection.externalURL.url, + ) + + let rawMetadata: {String:String?} = {} + for key in metadata.keys { + rawMetadata.insert(key: key, metadata[key]) + } + + return NFTData( + contract: contract, + id: nft!.id, + uuid: nft!.uuid, + title: title, + description: description, + external_domain_view_url: metadata["external_url"]!, + token_uri: nil, + media: [ + NFTMedia(uri: metadata["image"], mimetype: "image") + ], + metadata: rawMetadata + ) } \ No newline at end of file diff --git a/src/cadence/testnet/testGetNFTIDs.sh b/src/cadence/testnet/testGetNFTIDs.sh index 3616a1e1..e76ac387 100755 --- a/src/cadence/testnet/testGetNFTIDs.sh +++ b/src/cadence/testnet/testGetNFTIDs.sh @@ -161,6 +161,11 @@ Flovatar) echo "Flovatar" flow scripts execute getNFTIDs.cdc 0x57991b17c63ea6c1 --network mainnet ;; +StoreFront) + echo "StoreFront" + flow scripts execute getNFTIDs.cdc 0xa3bad204ca0e87d9 --network testnet + ;; + FlovatarComponent) echo "FlovatarComponent" flow scripts execute getNFTIDs.cdc 0x57991b17c63ea6c1 --network mainnet diff --git a/src/cadence/testnet/testGetNFTs.sh b/src/cadence/testnet/testGetNFTs.sh index a9242e37..962055d3 100755 --- a/src/cadence/testnet/testGetNFTs.sh +++ b/src/cadence/testnet/testGetNFTs.sh @@ -169,6 +169,10 @@ FlovatarComponent) echo "FlovatarComponent" flow scripts execute getNFTs.cdc --args-json '[{ "type": "Address", "value": "0x57991b17c63ea6c1" }, { "type": "Dictionary", "value": [{ "key": { "type": "String", "value": "FlovatarComponent" }, "value": { "type": "Array", "value": [{ "type": "UInt64", "value": "33270" }] } }] }]' --network testnet ;; +StoreFront) + echo "StoreFront" + flow scripts execute getNFTs.cdc --args-json '[{ "type": "Address", "value": "0xa3bad204ca0e87d9" }, { "type": "Dictionary", "value": [{ "key": { "type": "String", "value": "StoreFront" }, "value": { "type": "Array", "value": [{ "type": "UInt64", "value": "1" }] } }] }]' --network testnet + ;; ByteNextMedalNFT) echo "ByteNextMedalNFT" flow scripts execute getNFTs.cdc --args-json '[{ "type": "Address", "value": "0x4bab9fe5c1ff69f6" }, { "type": "Dictionary", "value": [{ "key": { "type": "String", "value": "ByteNextMedalNFT" }, "value": { "type": "Array", "value": [{ "type": "UInt64", "value": "999" }] } }] }]' --network testnet