Having a tough time with this one. I've been searching throughout but don't seem to find a similar scenario...
I'm trying to find the author of every collection that a user has.
I've made this function to pull data from an api, a specific user that in this case is proton as seen at the end of the link:
function BCAd() {
const [bcOwner, setBcOwner] = useState<any>();
useEffect(() => {
async function fetchData() {
const res = await fetch(
'https://proton.api.atomicassets.io/atomicassets/v1/accounts/proton'
);
const { data } = await res.json();
setBcOwner(data);
}
fetchData();
}, []);
if (!bcOwner) {
return (
<div>
<Spinner />
</div>
);
}
console.log(bcOwner);
return null;
}
export default BCAd;
The thing is that when i consol.log bcOwner , author is inside of an array(collection) which is inside of another array (0), which is inside of an object (collections)... So I need to go inside collections and then inside every 0, followed by collection to get the author (this sentence wasn't needed but I typed it out to make sure I get what I'm doing lol). And I need to do this for 0,1,2... how ever many the user has. Once I have that author, I want to return all those authors and remove the null. What's the simplest way to tackle this ?
edit: Here is the console.log string
{
"collections": [
{
"collection": {
"contract": "atomicassets",
"collection_name": "312443155351",
"name": "Campaigns",
"img": "QmaCxKxtj4vSbVu2HVhSHs2fxYshgLtzmPLCfdPhQvGNSd",
"author": "campaigns",
"allow_notify": true,
"authorized_accounts": [
"campaigns"
],
"notify_accounts": [],
"market_fee": 0.01,
"data": {
"img": "QmaCxKxtj4vSbVu2HVhSHs2fxYshgLtzmPLCfdPhQvGNSd",
"name": "Campaigns",
"description": "Proton Marketing Campaigns 2D NFTs"
},
"created_at_time": "1644873445000",
"created_at_block": "114487854"
},
"assets": "6"
},
{
"collection": {
"contract": "atomicassets",
"collection_name": "354415534331",
"name": "Proton Gifts",
"img": "QmPfnohRCDs2ZGq3ZchKKVDDv4GwzZG2TDuiVrmCDaDHcr",
"author": "nftsairdrop",
"allow_notify": true,
"authorized_accounts": [
"nftsairdrop"
],
"notify_accounts": [],
"market_fee": 0.1,
"data": {
"img": "QmPfnohRCDs2ZGq3ZchKKVDDv4GwzZG2TDuiVrmCDaDHcr",
"name": "Proton Gifts",
"description": "A little gift from me to you in the Protoverse!"
},
"created_at_time": "1640415233000",
"created_at_block": "105572339"
},
"assets": "1"
}
],
"templates": [
{
"collection_name": "312443155351",
"template_id": "74074",
"assets": "3"
},
{
"collection_name": "312443155351",
"template_id": "74112",
"assets": "3"
},
{
"collection_name": "354415534331",
"template_id": "44708",
"assets": "1"
}
],
"assets": "7"
}
CodePudding user response:
This pulls out the authors
const bcOwner = {
"collections": [
{
"collection": {
"contract": "atomicassets",
"collection_name": "312443155351",
"name": "Campaigns",
"img": "QmaCxKxtj4vSbVu2HVhSHs2fxYshgLtzmPLCfdPhQvGNSd",
"author": "campaigns",
"allow_notify": true,
"authorized_accounts": [
"campaigns"
],
"notify_accounts": [],
"market_fee": 0.01,
"data": {
"img": "QmaCxKxtj4vSbVu2HVhSHs2fxYshgLtzmPLCfdPhQvGNSd",
"name": "Campaigns",
"description": "Proton Marketing Campaigns 2D NFTs"
},
"created_at_time": "1644873445000",
"created_at_block": "114487854"
},
"assets": "6"
},
{
"collection": {
"contract": "atomicassets",
"collection_name": "354415534331",
"name": "Proton Gifts",
"img": "QmPfnohRCDs2ZGq3ZchKKVDDv4GwzZG2TDuiVrmCDaDHcr",
"author": "nftsairdrop",
"allow_notify": true,
"authorized_accounts": [
"nftsairdrop"
],
"notify_accounts": [],
"market_fee": 0.1,
"data": {
"img": "QmPfnohRCDs2ZGq3ZchKKVDDv4GwzZG2TDuiVrmCDaDHcr",
"name": "Proton Gifts",
"description": "A little gift from me to you in the Protoverse!"
},
"created_at_time": "1640415233000",
"created_at_block": "105572339"
},
"assets": "1"
}
],
"templates": [
{
"collection_name": "312443155351",
"template_id": "74074",
"assets": "3"
},
{
"collection_name": "312443155351",
"template_id": "74112",
"assets": "3"
},
{
"collection_name": "354415534331",
"template_id": "44708",
"assets": "1"
}
],
"assets": "7"
}
const authors = bcOwner.collections.map(({collection})=>collection.author)
console.log('authors',authors)