/* Proper pagination will be added in v1.2.3 */ Username = window.location.pathname.split('/')[2]; let UserID; let ItemGrid; if (window.location.pathname.split('/')[3] === 'inventory') { !(async () => { UserID = (await (await fetch('https://api.polytoria.com/v1/users/find?username=' + Username )).json()).id; ItemGrid = document.getElementsByClassName('itemgrid')[0]; /* Rewritten item wishlist function will take in the data with a parameter instead */ chrome.storage.sync.get(['PolyPlus_Settings'], function(result){ Settings = result.PolyPlus_Settings const Nav = document.getElementsByClassName('nav-pills')[0]; if (Settings.ItemWishlistOn && Username === JSON.parse(window.localStorage.getItem('p+account_info')).Username) { let WishlistNav = document.createElement('li'); WishlistNav.classList.add('nav-item'); WishlistNav.innerHTML = ` Item Wishlist `; Nav.appendChild(WishlistNav); if (window.location.pathname.split('/')[4] === 'wishlist') { Array.from(Nav.children).forEach((element) => { element = element.children[0]; if (!(element === WishlistNav)) { if (element.classList.contains('active')) { element.classList.remove('active'); } } }); WishlistNav.children[0].classList.add('active'); ItemWishlist() } } if (Settings.CollectibleInventoryCatOn) { let CollectibleNav = document.createElement('li'); CollectibleNav.classList.add('nav-item'); CollectibleNav.innerHTML = ` Collectibles `; Nav.appendChild(CollectibleNav); if (window.location.pathname.split('/')[4] === 'collectibles') { Array.from(Nav.children).forEach((element) => { element = element.children[0]; if (!(element === CollectibleNav)) { if (element.classList.contains('active')) { element.classList.remove('active'); } } }); CollectibleNav.children[0].classList.add('active'); CollectibleCategory() } } }); })(); } /* Item Wishlist will be rewritten in v1.2.3 */ function ItemWishlist() { const ItemGrid = document.getElementsByClassName('itemgrid')[0]; const ItemCardContents = `
:LimitedTag
:ItemName
by :CreatorName `; ItemGrid.innerHTML = '' document.getElementsByClassName('pagination')[0].remove() const Search = document.createElement('div'); Search.classList = 'row'; Search.innerHTML = `
`; ItemGrid.parentElement.prepend(document.createElement('br'), ItemGrid.parentElement.children[0]); ItemGrid.parentElement.prepend(Search, ItemGrid.parentElement.children[0]); let Type = document.getElementById('polyplus-itemwish-type'); let SearchBar = document.getElementById('polyplus-itemwish-searchbar'); let IsLimited = document.getElementById('polyplus-itemwish-isLimited'); let IsAvailable = document.getElementById('polyplus-itemwish-isAvailable'); Type.addEventListener('change', function () { Update(Type.options[Type.selectedIndex].value, SearchBar.value, IsLimited.checked, IsAvailable.checked); }); SearchBar.addEventListener('change', function () { Update(Type.options[Type.selectedIndex].value, SearchBar.value, IsLimited.checked, IsAvailable.checked); }); IsLimited.addEventListener('change', function () { Update(Type.options[Type.selectedIndex].value, SearchBar.value, IsLimited.checked, IsAvailable.checked); }); IsAvailable.addEventListener('change', function () { Update(Type.options[Type.selectedIndex].value, SearchBar.value, IsLimited.checked, IsAvailable.checked); }); chrome.storage.sync.get(['PolyPlus_ItemWishlist'], function (result) { let Wishlist = result.PolyPlus_ItemWishlist || []; console.log('wishlist: ', Wishlist); Wishlist.forEach((element) => { let NewItemCard = document.createElement('div'); NewItemCard.classList = 'px-0'; fetch('https://api.polytoria.com/v1/store/' + element) .then((response) => response.json()) .then((data) => { NewItemCard.innerHTML = ItemCardContents.replace(':ItemID', data.id) .replace(':ItemThumbnail', data.thumbnail) .replace(':ItemName', data.name) .replace(':CreatorID', data.creator.id) .replace(':CreatorName', data.creator.name); if (data.isLimited === true) { NewItemCard.innerHTML = NewItemCard.innerHTML.replace(':LimitedTag', '
Limited
'); } else { NewItemCard.innerHTML = NewItemCard.innerHTML.replace(':LimitedTag', ''); } NewItemCard.setAttribute('data-id', data.id); NewItemCard.setAttribute('data-name', data.name); NewItemCard.setAttribute('data-type', data.type); NewItemCard.setAttribute('data-creator', data.creator.name); NewItemCard.setAttribute('data-limited', data.isLimited); if (data.isLimited === false) { NewItemCard.setAttribute('data-price', data.price); } ItemGrid.appendChild(NewItemCard); NewItemCard.getElementsByClassName('polyplus-itemwish-removebtn')[0].addEventListener('click', function () { let Index = Wishlist.indexOf(parseInt(NewItemCard.getAttribute('data-id'))); if (Index === -1) { NewItemCard.remove(); return; } else { Wishlist.splice(Index, 1); console.log(Wishlist); NewItemCard.remove(); } chrome.storage.sync.set({PolyPlus_ItemWishlist: Wishlist, arrayOrder: true}, function () { console.log('ItemWishlist successfully saved: ' + ItemWishlist); }); }); }) .catch((error) => { console.error('Error:', error); }); }); }); const Update = function(type, query, isLimited, isAvailable) { let ItemGrid = document.getElementsByClassName('itemgrid')[0]; let BrickBalance = parseInt(JSON.parse(window.localStorage.getItem('p+account_info')).Bricks); query = query.toLowerCase(); let Results = Array.from(ItemGrid.children); for (let i = 0; i < Results.length; i++) { let Show = true; console.log('type: ', type); if (!(type === 'any')) { console.log("isn't any"); if (!(Results[i].getAttribute('data-type') === type)) { Show = false; } } if (!Results[i].getAttribute('data-name').toLowerCase().startsWith(query)) { Show = false; } if (isLimited === true) { if (!(Results[i].getAttribute('data-limited') === 'true')) { Show = false; } } if (isAvailable === true) { if (!(parseInt(Results[i].getAttribute('data-price')) <= BrickBalance)) { Show = false; } } if (Show === true) { Results[i].style.display = 'block'; } else { Results[i].style.display = 'none'; } } } } async function CollectibleCategory() { ItemGrid.innerHTML = '' document.getElementsByClassName('pagination')[0].remove() const CollectibleItemTypes = [ "hat", "face", "tool" ] const Collectibles = [] for (let type of CollectibleItemTypes) { const InitialInventory = (await (await fetch('https://api.polytoria.com/v1/users/' + UserID + '/inventory?type=' + type + '&limit=100')).json()) Collectibles.push(...InitialInventory.inventory.filter((x) => x.asset.isLimited === true)) if (InitialInventory.pages > 1) { if (InitialInventory.pages > 12) { InitialInventory.pages = 12 } for (let page = 2; page < InitialInventory.pages; page++) { const PageResult = (await (await fetch('https://api.polytoria.com/v1/users/' + UserID + '/inventory?type=' + type + '&limit=100&page=' + page)).json()) Collectibles.push(...PageResult.inventory.filter((x) => x.asset.isLimited === true)) } } } Collectibles.forEach(item => { item = item const ItemColumn = document.createElement('div') ItemColumn.classList = 'px-0' ItemColumn.innerHTML = `
Limited
#${item.serial}
${item.asset.name}
by Polytoria ` ItemGrid.appendChild(ItemColumn) }) }